Поделиться через


Краткое руководство: Добавьте флаги функций в приложение Azure Functions

В этом кратком руководстве вы создадите приложение "Функции Azure" и используйте в нем флаги функций. Вы используете управление функциями из конфигурации приложений Azure для централизованного хранения всех флагов функций и управления их состояниями.

Предпосылки

Добавление флага компонента

Добавьте флаг компонента с именем Beta в хранилище Конфигурация приложений и оставьте метку и описание со значениями по умолчанию. Дополнительные сведения о добавлении флагов компонентов в хранилище с помощью портал Azure или интерфейса командной строки см. в разделе "Создание флага функции".

Включение флага функции с именем Beta

Создайте приложение функции

Создайте приложение Функций Azure с помощью Visual Studio, выбрав шаблон "Функции Azure" (C# ). Этот шаблон поможет вам настроить основные параметры для проекта. Подробные инструкции см. в статье "Разработка функций Azure с помощью Visual Studio".

Используйте следующую таблицу в качестве ссылки для ключевых параметров при создании приложения-функции.

Настройки Ценность
Воркер функций .NET 8.0 изолированный
Функция Триггер HTTP
Уровень авторизации Анонимный

Замечание

Конфигурацию приложений Azure можно использовать с функциями Azure в изолированной рабочей модели или в модели внутрипроцессной. В этом кратком руководстве в качестве примера используется изолированная рабочая модель. Полные примеры кода для обеих моделей можно найти в репозитории GitHub конфигурации приложений Azure.

Подключение к хранилищу конфигурации приложений

Вы можете подключиться к хранилищу конфигурации приложений с помощью идентификатора Microsoft Entra (рекомендуется) или с помощью строки подключения.

  1. Щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet. На вкладке "Обзор" найдите и добавьте последнюю стабильную версию следующих пакетов NuGet в проект.

    • Microsoft.Azure.AppConfiguration.Functions.Worker
    • Microsoft.FeatureManagement
    • Azure.Identity
  2. Откройте Program.cs и обновите код следующим образом. Вы добавляете Azure App Configuration в качестве дополнительного источника конфигурации, вызывая метод AddAzureAppConfiguration.

    Вы используете DefaultAzureCredential для аутентификации в хранилище конфигурации приложений. Следуйте инструкциям, чтобы назначить вашей учетной записи роль читателя данных конфигурации приложений. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.

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

    Метод UseFeatureFlags() предписывает поставщику загружать флаги компонентов. По умолчанию все флаги функций без меток загружаются и обновляются каждые 30 секунд. Поведение выбора и обновления флагов компонентов настраивается независимо от других значений ключа конфигурации. Вы можете настроить эти настройки, передав FeatureFlagOptions действие в метод UseFeatureFlags. Используйте FeatureFlagOptions.Select для указания ключей и меток флагов функций для загрузки и FeatureFlagOptions.SetRefreshInterval для переопределения интервала обновления по умолчанию.

    Подсказка

    Если вы не хотите, чтобы какая-либо конфигурация, кроме флагов компонентов, загружалась в приложение, можно вызвать options.Select("_"), чтобы загрузить только несуществующий ключ-заглушку "_". По умолчанию все значения ключа конфигурации без меток в хранилище конфигурации приложений будут загружены, если метод не Select вызывается.

  3. Обновите файл Program.cs, чтобы включить автоматическое обновление флагов функций при каждом выполнении функции, добавив посредника конфигурации приложений Azure. Вы также регистрируете службу управления функциями, позволяя внедрять и использовать ее в коде функции позже.

    // 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. Откройте Function1.cs и добавьте следующее пространство имен.

    using Microsoft.FeatureManagement;
    

    Обновите конструктор, чтобы получить экземпляр IVariantFeatureManagerSnapshot с помощью внедрения зависимостей.

    private readonly IVariantFeatureManagerSnapshot _featureManager;
    private readonly ILogger<Function1> _logger;
    
    public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger)
    {
        _featureManager = featureManager;
        _logger = logger;
    }
    
  5. Обновите метод Run, чтобы вернуть сообщение-ответ на основе состояния флага функции.

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

Локальное тестирование функции

  1. Установите переменную среды .

    Установите переменную среды с именем AZURE_APPCONFIG_ENDPOINT на значение конечной точки вашего хранилища конфигураций приложений, найденной в разделе Обзор вашего хранилища в портале Azure.

    Если вы используете командную строку Windows, выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:

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

    Если вы используете PowerShell, выполните следующую команду:

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

    Если вы используете macOS или Linux, выполните следующую команду:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Нажмите клавишу F5, чтобы протестировать функцию. При появлении запроса примите запрос из Visual Studio, чтобы скачать и установить средства Azure Functions Core (CLI ). Кроме того, возможно, вам понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.

  3. Скопируйте URL-адрес функции из выходных данных среды выполнения функций Azure.

    Краткое руководство по отладке функции в VS

  4. Вставьте URL-адрес HTTP-запроса в адресную строку браузера. На следующем рисунке показан ответ, указывающий, что флажок бета-версии компонента отключен.

    Флаг функции быстрого запуска отключен

  5. На портале Azure перейдите в хранилище конфигурации приложений. В разделе "Операции" выберите диспетчер компонентов, найдите флаг бета-функции и установите переключатель "Включено".

  6. Обновите браузер несколько раз. Когда окно времени обновления проходит, страница изменяется, чтобы указать, что включен флаг функции бета-версия , как показано на изображении.

    Включен флаг функции быстрого запуска

Очистите ресурсы

Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.

Это важно

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все ресурсы в ней будут удалены безвозвратно. Убедитесь, что вы не удаляете случайно неправильную группу ресурсов или ресурсы. Если вы создали ресурсы для этой статьи внутри группы ресурсов, которая содержит другие ресурсы, которые вы хотите сохранить, удалите каждый ресурс индивидуально из его собственной панели, вместо того чтобы удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. В поле Фильтр по имени введите название вашей группы ресурсов.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите команду Удалить группу ресурсов.
  5. Вам предлагается подтвердить удаление группы ресурсов. Введите имя вашей группы ресурсов для подтверждения и выберите Удалить.

Через несколько мгновений группа ресурсов и все ее ресурсы будут удалены.

Дальнейшие шаги

В этом кратком руководстве вы создали флаг функции и использовали его с приложением Azure Functions.

Для полного запуска функции библиотеки управления функциями .NET перейдите к следующему документу.

Дополнительные сведения об управлении флагами функций в Конфигурация приложений Azure см. в следующем руководстве.