Condividi tramite


Guida introduttiva: Aggiungere flag di funzionalità a un'app di Funzioni di Azure

In questa guida introduttiva si crea un'applicazione di Funzioni di Azure e si utilizzano le feature flags. Si usa la gestione delle funzionalità del servizio Configurazione app per archiviare centralmente tutti i flag di funzionalità e controllarne gli stati.

Prerequisiti

Aggiungere un flag di funzionalità

Aggiungere un flag di funzionalità chiamato Beta all’archivio di Configurazione app e lasciare Etichetta e Descrizione con i relativi valori predefiniti. Per altre informazioni su come aggiungere flag di funzionalità a un archivio usando il portale di Azure o l’interfaccia della riga di comando, vedere Creare un flag di funzionalità.

Abilitare il flag di funzionalità denominato Beta

Creare un'app per le funzioni

Creare un'app di Funzioni di Azure usando Visual Studio selezionando il modello Funzioni di Azure (C#). Questo modello illustra come configurare le impostazioni essenziali per il progetto. Per istruzioni dettagliate, vedere Sviluppare Funzioni di Azure con Visual Studio.

Usare la tabella seguente come riferimento per i parametri chiave durante la creazione dell'app per le funzioni.

Impostazione valore
Funzioni ruolo di lavoro .NET 8.0 isolato
Funzione Trigger HTTP
Livello di autorizzazione Anonimo

Note

La configurazione app di Azure può essere usata con Azure Functions nel modello di lavoro isolato o nel modello in-process. Questo avvio rapido utilizza il modello di lavoro isolato come esempio. È possibile trovare esempi di codice completi per entrambi i modelli nel repository GitHub di Azure App Configuration.

Connettersi a un archivio di Configurazione app

È possibile connettersi all'archivio di Configurazione app usando Microsoft Entra ID (scelta consigliata) o una stringa di connessione.

  1. Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet. Nella scheda Sfoglia, cerca e aggiungi la versione stabile più recente dei seguenti pacchetti NuGet al tuo progetto.

    • Microsoft.Azure.AppConfiguration.Functions.Worker
    • Microsoft.FeatureManagement
    • Azure.Identity
  2. Aprire Program.cs e aggiornare il codice come indicato di seguito. Per aggiungere App Configuration di Azure come origine di configurazione aggiuntiva, chiamare il metodo AddAzureAppConfiguration.

    Usare DefaultAzureCredential per eseguire l'autenticazione nell'archivio di Configurazione app. Seguire le istruzioni per assegnare le credenziali al ruolo Lettore dati di Configurazione app. Assicurarsi di consentire tempo sufficiente per la propagazione dell'autorizzazione prima di eseguire l'applicazione.

    using Azure.Identity;
    using Microsoft.Azure.Functions.Worker.Builder;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Hosting;
    using Microsoft.FeatureManagement;
    
    var builder = FunctionsApplication.CreateBuilder(args);
    
    // Connect to Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        Uri endpoint = new(Environment.GetEnvironmentVariable("AZURE_APPCONFIG_ENDPOINT") ?? 
            throw new InvalidOperationException("The environment variable 'AZURE_APPCONFIG_ENDPOINT' is not set or is empty."));
        options.Connect(endpoint, new DefaultAzureCredential())
               // Load all feature flags with no label. To load feature flags with specific keys and labels, set via FeatureFlagOptions.Select.
               // Use the default refresh interval of 30 seconds. It can be overridden via FeatureFlagOptions.SetRefreshInterval.
               .UseFeatureFlags();
    });
    

    Il metodo UseFeatureFlags() indica al provider di caricare i flag di funzionalità. Per impostazione predefinita, tutti i flag di funzionalità senza etichette vengono caricati e aggiornati ogni 30 secondi. La selezione e il comportamento di aggiornamento dei flag di funzionalità vengono configurati in modo indipendente da altri valori chiave di configurazione. È possibile personalizzare questi comportamenti passando un'azione FeatureFlagOptions al UseFeatureFlags metodo . Usare FeatureFlagOptions.Select per specificare le chiavi e le etichette dei flag di funzionalità da caricare e usare FeatureFlagOptions.SetRefreshInterval per eseguire l'override dell'intervallo di aggiornamento predefinito.

    Suggerimento

    Per evitare che nell'applicazione vengano caricate configurazioni diverse dai flag di funzionalità, è possibile chiamare options.Select("_") per caricare solo una chiave fittizia inesistente "_". Per impostazione predefinita, tutti i valori chiave di configurazione senza etichette nell'archivio di Configurazione app verranno caricati se non viene chiamato alcun Select metodo.

  3. Aggiornare il file Program.cs per abilitare l'aggiornamento automatico dei flag di funzionalità in ogni esecuzione di funzione aggiungendo il middleware di Configurazione app di Azure. È anche possibile registrare il servizio di gestione delle funzionalità, consentendo di inserire e usarlo nel codice della funzione in un secondo momento.

    // Connect to Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        // Omitted the code added in the previous step.
    });
    
    // Add Azure App Configuration middleware and feature management to the service collection.
    builder.Services
        .AddAzureAppConfiguration()
        .AddFeatureManagement();
    
    // Use Azure App Configuration middleware for dynamic configuration and feature flag refresh.
    builder.UseAzureAppConfiguration();
    
    builder.ConfigureFunctionsWebApplication();
    
    builder.Build().Run();
    
  4. Aprire Function1.cs e aggiungere lo spazio dei nomi seguente.

    using Microsoft.FeatureManagement;
    

    Aggiornare il costruttore per ottenere un'istanza di IVariantFeatureManagerSnapshot tramite dependency injection.

    private readonly IVariantFeatureManagerSnapshot _featureManager;
    private readonly ILogger<Function1> _logger;
    
    public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger)
    {
        _featureManager = featureManager;
        _logger = logger;
    }
    
  5. Aggiornare il metodo Run per restituire un messaggio di risposta in base allo stato del flag di funzionalità.

    [Function("Function1")]
    public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
    {
        _logger.LogInformation("C# HTTP trigger function processed a request.");
    
        // Read feature flag
        string featureName = "Beta";
        bool featureEnabled = await _featureManager.IsEnabledAsync(featureName, req.HttpContext.RequestAborted);
    
        return new OkObjectResult(featureEnabled
            ? $"The Feature Flag '{featureName}' is turned ON!"
            : $"The Feature Flag '{featureName}' is turned OFF");
    }
    

Testare la funzione in locale

  1. Impostare la variabile di ambiente.

    Impostare la variabile di ambiente denominata AZURE_APPCONFIG_ENDPOINT sull'endpoint dell'archivio di Configurazione app disponibile in Panoramica dello store nel portale di Azure.

    Se si usa il prompt dei comandi di Windows, eseguire il comando seguente e riavviare il prompt per rendere effettiva la modifica:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    Se si usa PowerShell, eseguire il comando seguente:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    Se si usa macOS o Linux, eseguire il comando seguente:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Premere F5 per testare la funzione. Se viene visualizzata, accettare la richiesta di Visual Studio di scaricare e installare gli strumenti dell'interfaccia della riga di comando Azure Functions Core Tools. Potrebbe essere necessario anche abilitare un'eccezione del firewall per consentire agli strumenti di gestire le richieste HTTP.

  3. Copiare l'URL della funzione dall'output di runtime di Funzioni di Azure.

    Guida introduttiva: debug di funzioni in VS

  4. Incollare l'URL per la richiesta HTTP nella barra degli indirizzi del browser. L'immagine seguente mostra la risposta che indica che il flag di funzionalità Beta è disabilitato.

    Flag di funzionalità disabilitato

  5. Nel portale di Azure, naviga al tuo store App Configuration. In Operazioni selezionare Gestione funzionalità, individuare il flag di funzionalità Beta e impostare l'interruttore Abilitato su .

  6. Aggiornare alcune volte il browser. Quando passa l'intervallo di tempo dell'aggiornamento, la pagina cambia per indicare che il flag di funzionalità Beta è attivato, come illustrato nell'immagine.

    Flag di funzionalità abilitato

Pulire le risorse

Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.

Passaggi successivi

In questa guida introduttiva hai creato un feature flag e lo hai usato con un'app di Funzioni di Azure.

Per un resoconto completo delle caratteristiche della libreria di gestione delle funzionalità .NET, continuare con il documento seguente.

Per altre informazioni sulla gestione dei flag di funzionalità in Configurazione app di Azure, continuare con l’esercitazione seguente.