Dela via


Snabbstart: Lägga till funktionsflaggor i en Azure Functions-app

I den här snabbstarten skapar du en Azure Functions-app och använder funktionsflaggor i den. Du använder funktionshanteringen från Azure App Configuration för att centralt lagra alla dina funktionsflaggor och kontrollera deras tillstånd.

Förutsättningar

Lägga till en funktionsflagga

Lägg till en funktionsflagga med namnet Beta i App Configuration Store och lämna Etikett och Beskrivning med sina standardvärden. Mer information om hur du lägger till funktionsflaggor i en butik med hjälp av Azure Portal eller CLI finns i Skapa en funktionsflagga.

Aktivera funktionsflagga med namnet Beta

Skapa en funktionsapp

Skapa en Azure Functions-app med Visual Studio genom att välja mallen Azure Functions (C#). Den här mallen vägleder dig genom att konfigurera viktiga inställningar för projektet. Detaljerade anvisningar finns i Utveckla Azure Functions med Visual Studio.

Använd följande tabell som referens för nyckelparametrar när du skapar funktionsappen.

Inställning Värde
Funktionsarbetare .NET 8.0 Isolerad
Funktion HTTP-utlösare
Auktoriseringsnivå Anonym

Anmärkning

Azure App Configuration kan användas med Azure Functions i antingen den isolerade arbetsmodellen eller i processmodellen. Den här snabbstarten använder den isolerade arbetsmodellen som exempel. Du hittar fullständiga kodexempel för båda modellerna i Azure App Configuration GitHub-lagringsplatsen.

Ansluta till ett appkonfigurationsarkiv

Du kan ansluta till din App Configuration-butik med hjälp av Microsoft Entra-ID (rekommenderas) eller en anslutningssträng.

  1. Högerklicka på projektet och välj Hantera NuGet-paket. På fliken Bläddra söker du efter och lägger till den senaste stabila versionen av följande NuGet-paket i projektet.

    • Microsoft.Azure.AppConfiguration.Functions.Worker
    • Microsoft.FeatureManagement
    • Azure.Identity
  2. Öppna Program.cs och uppdatera koden enligt följande. Du lägger till Azure App Configuration som en extra konfigurationskälla genom att anropa AddAzureAppConfiguration metoden.

    Du använder DefaultAzureCredential för att autentisera mot din App Configuration-butik. Följ anvisningarna för att tilldela dina autentiseringsuppgifter rollen App Configuration Data Reader. Se till att ge tillräckligt med tid för att behörigheten ska spridas innan du kör programmet.

    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();
    });
    

    Metoden UseFeatureFlags() instruerar leverantören att läsa in funktionsflaggor. Som standard läses alla funktionsflaggor utan etiketter in och uppdateras var 30:e sekund. Funktionsflaggors val och uppdateringsbeteende konfigureras oberoende av andra konfigurationsnyckelvärden. Du kan anpassa dessa beteenden genom att skicka en FeatureFlagOptions åtgärd till UseFeatureFlags metoden. Använd FeatureFlagOptions.Select för att ange nycklar och etiketter för funktionsflaggor som ska läsas in och använd FeatureFlagOptions.SetRefreshInterval för att åsidosätta standarduppdateringsintervallet.

    Tips

    Om du inte vill att någon annan konfiguration än funktionsflaggor ska läsas in i ditt program kan du anropa options.Select("_") för att bara läsa in en icke-existerande dummynyckel "_". Som standard läses alla konfigurationsnyckelvärden utan etiketter i appkonfigurationsarkivet in om ingen Select metod anropas.

  3. Uppdatera Program.cs-filen för att aktivera automatisk uppdatering av funktionsflaggan för varje funktionskörning genom att lägga till Mellanprogrammet för Azure App Configuration. Du registrerar även funktionshanteringstjänsten så att du kan mata in och använda den i funktionskoden senare.

    // 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. Öppna Function1.cs och lägg till följande namnområde.

    using Microsoft.FeatureManagement;
    

    Uppdatera konstruktorn för att hämta en instans av IVariantFeatureManagerSnapshot via beroendeinmatning.

    private readonly IVariantFeatureManagerSnapshot _featureManager;
    private readonly ILogger<Function1> _logger;
    
    public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger)
    {
        _featureManager = featureManager;
        _logger = logger;
    }
    
  5. Run Uppdatera metoden för att returnera ett svarsmeddelande baserat på funktionsflaggans tillstånd.

    [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");
    }
    

Testa funktionen lokalt

  1. Ange miljövariabeln .

    Ange miljövariabeln med namnet AZURE_APPCONFIG_ENDPOINT till slutpunkten för din App Configuration-butik som finns i Azure-portalen under Översikt över din butik.

    Om du använder Windows-kommandotolken kör du följande kommando och startar om kommandotolken så att ändringen börjar gälla:

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

    Om du använder PowerShell kör du följande kommando:

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

    Om du använder macOS eller Linux kör du följande kommando:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Tryck på F5 för att testa funktionen. Om du får en uppmaning accepterar du begäran från Visual Studio för att ladda ned och installera Azure Functions Core (CLI)-verktyg. Du kan också behöva aktivera ett undantag i brandväggen så att verktygen kan hantera HTTP-begäranden.

  3. Kopiera URL:en för funktionen från dina Azure Functions-utdata.

    Snabbstart för funktionsfelsökning i VS

  4. Klistra in webbadressen för HTTP-begäran i webbläsarens adressfält. Följande bild visar svaret som anger att funktionsflaggan Beta är inaktiverad.

    Snabbstart Funktionsflagga inaktiverad

  5. I Azure-portalen går du till din App Configuration-butik. Under Åtgärder väljer du Funktionshanterare, letar upp flaggan Beta-funktion och anger växlingsknappen Aktiverad till .

  6. Uppdatera webbläsaren några gånger. När tidsperioden för uppdateringsintervallet passerar ändras sidan för att indikera att funktionsflaggan Beta är aktiverad, enligt bilden.

    Snabbstart Funktionsflagga aktiverad

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.

Viktigt!

Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.

Efter en liten stund tas resursgruppen och alla dess resurser bort.

Nästa steg

I den här snabbstarten skapade du en funktionsflagga och använde den med en Azure Functions-app.

Se följande dokument för den fullständiga funktionsöversikten i .NET-funktionshanteringsbiblioteket.

Om du vill veta mer om hur du hanterar funktionsflaggor i Azure App Configuration fortsätter du till följande självstudie.