Udostępnij za pośrednictwem


Szybki start: dodawanie flag funkcji do aplikacji usługi Azure Functions

W tym przewodniku Szybki start utworzysz projekt kodu języka C# usługi Azure Functions i użyjesz w nim flag funkcji. Zarządzanie funkcjami z aplikacja systemu Azure Configuration służy do centralnego przechowywania wszystkich flag funkcji i kontrolowania ich stanów.

Biblioteki zarządzania funkcjami platformy .NET rozszerzają platformę z obsługą flag funkcji. Te biblioteki są oparte na systemie konfiguracji platformy .NET. Integrują się z usługą App Configuration za pośrednictwem dostawcy konfiguracji platformy .NET.

Uwaga

Ten artykuł obsługuje obecnie tylko aplikacje funkcji w procesie języka C#, które działają na platformie .NET 6.

Wymagania wstępne

Dodawanie flagi funkcji

Dodaj flagę funkcji o nazwie Beta do sklepu App Configuration i pozostaw pole Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do tematu Tworzenie flagi funkcji.

Włączanie flagi funkcji o nazwie Beta

Tworzenie projektu usługi Functions

Szablon projektu usługi Azure Functions w programie Visual Studio tworzy projekt biblioteki klas języka C#, który można opublikować w aplikacji funkcji na platformie Azure. Za pomocą aplikacji funkcji można grupować funkcje jako jednostkę logiczną, aby ułatwić zarządzanie, wdrażanie, skalowanie i udostępnianie zasobów.

  1. Z menu programu Visual Studio wybierz pozycję Plik>nowy>projekt.

  2. W obszarze Tworzenie nowego projektu wprowadź funkcje w polu wyszukiwania, wybierz szablon usługi Azure Functions , a następnie wybierz pozycję Dalej.

  3. W obszarze Konfigurowanie nowego projektu wprowadź nazwę projektu, a następnie wybierz pozycję Utwórz. Nazwa aplikacji funkcji musi być prawidłową nazwą przestrzeni nazw C#, dlatego nie należy używać znaków podkreślenia, łączników ani znaków innych niż alfanumeryczne.

  4. W przypadku ustawień tworzenia nowej aplikacji usługi Azure Functions użyj wartości w poniższej tabeli:

    Ustawienie Wartość Opis
    Wersja platformy .NET .NET 6 Ta wartość tworzy projekt funkcji, który jest uruchamiany w procesie z wersją 4.x środowiska uruchomieniowego usługi Azure Functions. Aby uzyskać więcej informacji, zobacz Omówienie wersji środowiska uruchomieniowego usługi Azure Functions.
    Szablon funkcji Wyzwalacz HTTP Ta wartość tworzy funkcję wyzwalaną przez żądanie HTTP.
    Konto magazynu (AzureWebJobsStorage) Emulator magazynu Ponieważ aplikacja funkcji na platformie Azure wymaga konta magazynu, jest przypisywana lub tworzona podczas publikowania projektu na platformie Azure. Wyzwalacz HTTP nie używa konta usługi Azure Storage parametry połączenia; wszystkie inne typy wyzwalaczy wymagają prawidłowego konta usługi Azure Storage parametry połączenia.
    Poziom autoryzacji Anonimowy Utworzona funkcja może zostać wyzwolona przez dowolnego klienta bez podawania klucza. To ustawienie autoryzacji ułatwia testowanie nowej funkcji. Aby uzyskać więcej informacji na temat kluczy i autoryzacji, zobacz Authorization keys and HTTP and webhook bindings (Klucze autoryzacji oraz powiązania http i element webhook).

    Zrzut ekranu przedstawiający ustawienia projektu usługi Azure Functions


    Upewnij się, że ustawiono poziom autoryzacji na Anonimowy. Jeśli wybierzesz domyślny poziom funkcji, musisz przedstawić klucz funkcji w żądaniach dostępu do punktu końcowego funkcji.

  5. Wybierz pozycję Utwórz , aby utworzyć projekt funkcji i funkcję wyzwalacza HTTP.

Nawiązywanie połączenia z magazynem usługi App Configuration

Ten projekt będzie używać wstrzykiwania zależności w usłudze Azure Functions platformy .NET. Dodaje aplikacja systemu Azure Configuration jako dodatkowe źródło konfiguracji, w którym są przechowywane flagi funkcji.

  1. Kliknij projekt prawym przyciskiem myszy i wybierz polecenie Zarządzaj pakietami NuGet. Na karcie Przeglądaj wyszukaj i dodaj następujące pakiety NuGet do projektu.

  2. Dodaj nowy plik, Startup.cs, przy użyciu następującego kodu. Definiuje klasę o nazwie Startup , która implementuje klasę abstrakcyjną FunctionsStartup . Atrybut zestawu służy do określania nazwy typu używanego podczas uruchamiania usługi 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. Zaktualizuj metodę ConfigureAppConfiguration i dodaj dostawcę konfiguracji aplikacja systemu Azure jako dodatkowe źródło konfiguracji, wywołując metodę AddAzureAppConfiguration().

    Metoda UseFeatureFlags() nakazuje dostawcy ładowanie flag funkcji. Wszystkie flagi funkcji mają domyślny czas wygaśnięcia pamięci podręcznej 30 sekund przed ponownym sprawdzeniem zmian. Interwał wygaśnięcia można zaktualizować, ustawiając FeatureFlagsOptions.CacheExpirationInterval właściwość przekazaną UseFeatureFlags do metody .

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

    Napiwek

    Jeśli nie chcesz, aby żadna konfiguracja inna niż flagi funkcji zostały załadowane do aplikacji, możesz wywołać metodę Select("_") , aby załadować tylko nieistniejący fikcyjny klucz "_". Domyślnie wszystkie wartości klucza konfiguracji w magazynie usługi App Configuration zostaną załadowane, jeśli nie Select zostanie wywołana żadna metoda.

  4. Zaktualizuj metodę Configure w celu udostępnienia usług aplikacja systemu Azure Configuration services i menedżera funkcji za pomocą wstrzykiwania zależności.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
        builder.Services.AddFeatureManagement();
    }
    
  5. Otwórz Function1.cs i dodaj następujące przestrzenie nazw.

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

    Dodaj konstruktor używany do uzyskiwania _featureManagerSnapshot wystąpień i IConfigurationRefresherProvider poprzez wstrzykiwanie zależności. Z poziomu IConfigurationRefresherProviderprogramu można uzyskać wystąpienie klasy IConfigurationRefresher.

    private readonly IFeatureManagerSnapshot _featureManagerSnapshot;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider)
    {
        _featureManagerSnapshot = featureManagerSnapshot;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  6. Zaktualizuj metodę Run , aby zmienić wartość wyświetlanego komunikatu w zależności od stanu flagi funkcji.

    Metoda TryRefreshAsync jest wywoływana na początku wywołania funkcji w celu odświeżenia flag funkcji. Jeśli przedział czasu wygaśnięcia pamięci podręcznej nie zostanie osiągnięty, będzie to operacja bez operacji. Usuń operator, await jeśli wolisz odświeżyć flagi funkcji bez blokowania bieżącego wywołania usługi Functions. W takim przypadku późniejsze wywołania usługi Functions otrzymają zaktualizowaną wartość.

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

Lokalne testowanie funkcji

  1. Ustaw zmienną środowiskową o nazwie ConnectionString, gdzie wartość jest wartością parametry połączenia pobraną wcześniej w magazynie usługi App Configuration w obszarze Klucze dostępu. Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie i uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmian:

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

    Jeśli używasz programu Windows PowerShell, uruchom następujące polecenie:

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

    Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:

        export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Naciśnij F5, aby przetestować funkcję. Po wyświetleniu monitu zaakceptuj żądanie programu Visual Studio dotyczące pobrania i zainstalowania zestawu narzędzi Azure Functions Core (CLI). Może być również konieczne włączenie wyjątku zapory, aby narzędzia mogły obsługiwać żądania HTTP.

  3. Skopiuj adres URL funkcji z danych wyjściowych środowiska uruchomieniowego usługi Azure Functions.

    Debugowanie funkcji w programie VS z przewodnika Szybki start

  4. Wklej adres URL żądania HTTP w pasku adresu przeglądarki. Na poniższej ilustracji przedstawiono odpowiedź wskazującą, że flaga funkcji Beta jest wyłączona.

    Flaga funkcji szybkiego startu jest wyłączona

  5. Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby i wybierz utworzony magazyn App Configuration.

  6. Wybierz pozycję Menedżer funkcji i zmień stan klucza beta na .

  7. Odśwież przeglądarkę kilka razy. Po przejściu przedziału czasu interwału odświeżania strona zmieni się, aby wskazać, że flaga funkcji Beta jest włączona, jak pokazano na poniższej ilustracji.

    Flaga funkcji szybkiego startu jest włączona

Uwaga

Przykładowy kod używany w tym samouczku można pobrać z repozytorium GitHub aplikacja systemu Azure Configuration.

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym przewodniku Szybki start utworzono flagę funkcji i użyto jej w usłudze Azure Functions.

Aby włączyć funkcję zarządzania funkcjami dla innych typów aplikacji, przejdź do następujących samouczków.

Aby dowiedzieć się więcej na temat zarządzania flagami funkcji w usłudze aplikacja systemu Azure Configuration, przejdź do następującego samouczka.

Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.