Share via


Démarrage rapide : Ajouter des indicateurs de fonctionnalités à une application Azure Functions

Dans ce guide de démarrage rapide, vous allez créer un projet de code C# Azure Functions et utiliser des indicateurs de fonctionnalité dans celui-ci. Vous utiliserez la gestion des fonctionnalités d’Azure App Configuration pour stocker de manière centralisée tous les indicateurs de fonctionnalités et contrôler leurs états.

Les bibliothèques de gestion des fonctionnalités .NET étendent le framework avec une prise en charge des indicateurs de fonctionnalités. Ces bibliothèques sont basées sur le système de configuration de .NET. Elles s’intègrent à App Configuration par le biais de son fournisseur de configuration .NET.

Remarque

Cet article prend uniquement en charge applications de fonction in-process C# qui s’exécutent sur .NET 6.

Prérequis

Ajouter un indicateur de fonctionnalité

Ajoutez un indicateur de fonctionnalité appelé Bêta au magasin App Configuration et laissez les valeurs par défaut à Étiquette et à Description. Pour plus d’informations sur l’ajout d’indicateurs de fonctionnalité à un magasin à l’aide du portail Azure ou de CLI, accédez à Créer un indicateur de fonctionnalité.

Activer l’indicateur de fonctionnalité nommé Beta

Créer un projet Functions

Le modèle de projet Azure Functions dans Visual Studio crée un projet de bibliothèque de classe C# que vous pouvez publier dans une application de fonction dans Azure. Vous pouvez utiliser une application de fonction pour regrouper des fonctions en une unité logique afin de faciliter la gestion, le déploiement, la mise à l’échelle et le partage des ressources.

  1. Dans le menu de Visual Studio, sélectionnez Fichier>Nouveau>Projet.

  2. Dans Créer un projet, entrez functions dans la zone de recherche, choisissez le modèle Azure Functions, puis sélectionnez Suivant.

  3. Dans Configurer votre nouveau projet, entrez un Nom de projet, puis sélectionnez Créer. Le nom d’application de la fonction doit être valide en tant qu’espace de noms C#, afin de ne pas utiliser des traits d’union, des traits de soulignement ou d’autres caractères non alphanumériques.

  4. Pour les paramètres Créer une application Azure Functions, utilisez les valeurs du tableau suivant :

    Paramètre valeur Description
    Version de .NET .NET 6 Cette valeur crée un projet de fonction qui s’exécute dans un processus interne avec la version 4.x du runtime d’Azure Functions. Pour plus d’informations, consultez Vue d’ensemble des versions du runtime Azure Functions.
    Modèle de fonction Déclencheur HTTP Cette valeur crée une fonction déclenchée par une requête HTTP.
    Compte de stockage (AzureWebJobsStorage) Émulateur de stockage Étant donné qu’une application de fonction dans Azure nécessite un compte de stockage, celui-ci est attribué ou créé quand vous publiez votre projet sur Azure. Un déclencheur HTTP n’utilise pas de chaîne de connexion de compte Stockage Azure ; tous les autres types de déclencheurs nécessitent une chaîne de connexion de compte Stockage Azure valide.
    Niveau d’autorisation Anonyme La fonction créée peut être déclenchée par n’importe quel client sans fournir une clé. Ce paramètre d’autorisation facilite le test de votre nouvelle fonction. Pour plus d’informations sur les clés et autorisations, consultez Clés d’autorisation et Liaisons HTTP et webhook.

    Capture d’écran des paramètres de projet Azure Functions


    Veillez à définir le Niveau d’autorisation sur Anonyme. Si vous choisissez le niveau par défaut Fonction, vous êtes invité à présenter la clé de fonction dans les requêtes d’accès à votre point de terminaison de fonction.

  5. Sélectionnez Créer pour créer le projet de fonction et la fonction de déclencheur HTTP.

Se connecter à un magasin App Configuration

Ce projet utilise l’injection de dépendances dans .NET Azure Functions. Il ajoute Azure App Configuration comme source de configuration supplémentaire où sont stockés vos indicateurs de fonctionnalités.

  1. Cliquez avec le bouton droit sur votre projet, puis sélectionnez Gérer les packages NuGet. Sous l’onglet Parcourir, recherchez les packages NuGet suivants et ajoutez-les à votre projet.

  2. Ajoutez un nouveau fichier, Startup.cs, avec le code suivant. Il définit une classe nommée Startup qui implémente la classe abstraite FunctionsStartup. Un attribut d’assembly est utilisé pour spécifier le nom du type utilisé durant le démarrage d’Azure Functions.

    using System;
    using Microsoft.Azure.Functions.Extensions.DependencyInjection;
    using Microsoft.Extensions.Configuration;
    using Microsoft.FeatureManagement;
    
    [assembly: FunctionsStartup(typeof(FunctionApp.Startup))]
    
    namespace FunctionApp
    {
        class Startup : FunctionsStartup
        {
            public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
            {
            }
    
            public override void Configure(IFunctionsHostBuilder builder)
            {
            }
        }
    }
    
  3. Mettez à jour la méthode ConfigureAppConfiguration et ajoutez le fournisseur Azure App Configuration comme source de configuration supplémentaire en appelant AddAzureAppConfiguration().

    La méthode UseFeatureFlags() indique au fournisseur de charger les indicateurs de fonctionnalités. Tous les indicateurs de fonctionnalités étant par défaut mis en cache pendant 30 secondes, les éventuelles modifications ne sont détectées qu’au terme de ce délai. Vous pouvez changer cet intervalle d’expiration en définissant la propriété FeatureFlagsOptions.CacheExpirationInterval passée à la méthode UseFeatureFlags.

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                   .Select("_")
                   .UseFeatureFlags();
        });
    }
    

    Conseil

    Si vous souhaitez limiter les configurations chargées dans votre application aux indicateurs de fonctionnalités, vous pouvez appeler Select("_") pour charger uniquement une clé factice "_" non existante. Par défaut, toutes les valeurs de clé de configuration dans votre magasin App Configuration sont chargées si aucune méthode Select n’est appelée.

  4. Mettez à jour la méthode Configure pour rendre le gestionnaire de fonctionnalités et les services Azure App Configuration accessibles par le biais de l’injection de dépendances.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
        builder.Services.AddFeatureManagement();
    }
    
  5. Ouvrez Function1.cs et ajoutez les espaces de noms suivants.

    using System.Linq;
    using Microsoft.FeatureManagement;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    

    Ajoutez un constructeur utilisé pour obtenir des instances de _featureManagerSnapshot et IConfigurationRefresherProvider par le biais de l’injection de dépendances. Vous pouvez obtenir l’instance de IConfigurationRefresher à partir de IConfigurationRefresherProvider.

    private readonly IFeatureManagerSnapshot _featureManagerSnapshot;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider)
    {
        _featureManagerSnapshot = featureManagerSnapshot;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  6. Mettez à jour la méthode Run pour changer la valeur du message affiché en fonction de l’état de l’indicateur de fonctionnalité.

    La méthode TryRefreshAsync est appelée au début de l’appel Functions pour actualiser les indicateurs de fonctionnalités. Aucune opération n’est effectuée si la fenêtre de délai d’expiration du cache n’est pas atteinte. Supprimez l’opérateur await si vous préférez que les indicateurs de fonctionnalité soient actualisés sans bloquer l’appel Functions en cours. Dans ce cas, les appels Functions ultérieurs obtiendront une valeur mise à jour.

    [FunctionName("Function1")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        await _configurationRefresher.TryRefreshAsync();
    
        string message = await _featureManagerSnapshot.IsEnabledAsync("Beta")
                ? "The Feature Flag 'Beta' is turned ON"
                : "The Feature Flag 'Beta' is turned OFF";
    
        return (ActionResult)new OkObjectResult(message);
    }
    

Tester la fonction en local

  1. Définissez une variable d’environnement nommée ConnectionString, où la valeur est la chaîne de connexion que vous avez récupérée précédemment dans votre magasin App Configuration sous Clés d’accès. Si vous utilisez l’invite de commandes Windows, exécutez la commande suivante et redémarrez l’invite pour que la modification soit prise en compte :

        setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Si vous utilisez Windows PowerShell, exécutez la commande suivante :

        $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    Si vous utilisez macOS ou Linux, exécutez la commande suivante :

        export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Appuyez sur F5 pour tester votre fonction. Si vous y êtes invité, acceptez la requête dans Visual Studio pour télécharger et installer Azure Functions Core (CLI) Tools. Vous devrez peut-être aussi activer une exception de pare-feu afin de permettre aux outils de prendre en charge les requêtes HTTP.

  3. Copiez l’URL de votre fonction à partir de la sortie runtime Azure Functions.

    Démarrage rapide du débogage de fonctions dans Visual Studio

  4. Collez l’URL de la demande HTTP dans la barre d’adresses de votre navigateur. L’illustration suivante montre la réponse signalant que l’indicateur de fonctionnalité bêta est désactivé.

    Indicateur de la fonctionnalité Démarrage rapide désactivé

  5. Connectez-vous au portail Azure. Sélectionnez Toutes les ressources, puis le magasin App Configuration que vous avez créé.

  6. Sélectionnez Gestionnaire de fonctionnalités, puis remplacez l'état de la clé Beta par Activé.

  7. Actualisez le navigateur à plusieurs reprises. Lorsque la fenêtre d’intervalle d’actualisation est passée, la page change pour indiquer que l’indicateur de fonctionnalité bêta est activé, comme illustré dans l’image ci-dessous.

    Indicateur de la fonctionnalité Démarrage rapide activé

Notes

Vous pouvez télécharger l’exemple de code utilisé dans ce tutoriel à partir du dépôt GitHub Azure App Configuration

Nettoyer les ressources

Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.

Important

La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
  3. Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé un indicateur de fonctionnalité que vous avez utilisé avec une application Azure Functions par l’intermédiaire de la bibliothèque Microsoft.FeatureManagement.