Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- Un account Azure con una sottoscrizione attiva. È possibile crearne uno gratuitamente.
- Un archivio di Configurazione app, come illustrato nell'esercitazione per la creazione di un archivio.
- Visual Studio con il carico di lavoro di sviluppo di Azure.
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à.
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.
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
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
DefaultAzureCredentialper 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'azioneFeatureFlagOptionsalUseFeatureFlagsmetodo . UsareFeatureFlagOptions.Selectper specificare le chiavi e le etichette dei flag di funzionalità da caricare e usareFeatureFlagOptions.SetRefreshIntervalper 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 alcunSelectmetodo.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();Aprire Function1.cs e aggiungere lo spazio dei nomi seguente.
using Microsoft.FeatureManagement;Aggiornare il costruttore per ottenere un'istanza di
IVariantFeatureManagerSnapshottramite dependency injection.private readonly IVariantFeatureManagerSnapshot _featureManager; private readonly ILogger<Function1> _logger; public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger) { _featureManager = featureManager; _logger = logger; }Aggiornare il metodo
Runper 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
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>'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.
Copiare l'URL della funzione dall'output di runtime di Funzioni di Azure.
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.
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 Sì.
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.
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.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- 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.