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


Быстрый старт: Создание приложения Azure Functions с использованием сервиса App Configuration Azure

В этом кратком руководстве показано, как централизировать параметры приложения Функций Azure и управлять ими за пределами кода с помощью конфигурации приложений Azure. Интеграция поставщика конфигурации .NET позволяет добавить конфигурацию приложений в качестве дополнительного источника конфигурации с несколькими простыми изменениями кода.

Предпосылки

Добавьте ключ-значение

Добавьте следующее ключевое значение в хранилище Конфигурация приложений и оставьте метку и тип контента со значениями по умолчанию. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".

Ключ Ценность
TestApp:Settings:Message Данные из Конфигурации приложений Azure

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

Создайте приложение Функций 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
    • 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;
    
    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 keys that start with `TestApp:` and have no label
               .Select("TestApp:*");
    });
    
  3. Откройте Function1.cs и добавьте следующее пространство имен.

    using Microsoft.Extensions.Configuration;
    

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

    private readonly IConfiguration _configuration;
    private readonly ILogger<Function1> _logger;
    
    public Function1(IConfiguration configuration, ILogger<Function1> logger)
    {
        _configuration = configuration;
        _logger = logger;
    }
    
  4. Обновите метод Run, чтобы считывать значения из конфигурации.

    [Function("Function1")]
    public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
    {
        _logger.LogInformation("C# HTTP trigger function processed a request.");
    
        // Read configuration data
        string key = "TestApp:Settings:Message";
        string? message = _configuration[key];
    
        return new OkObjectResult(message ?? $"Please create a key-value with the key '{key}' in Azure App Configuration.");
    }
    

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

  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-запроса в адресную строку браузера. На следующем рисунке показан ответ в браузере на локальный запрос GET, возвращаемый функцией.

    Быстрый старт. Запуск локальной функции

Управление параметрами триггера с помощью ссылок на конфигурацию приложений

Триггеры Функций Azure определяют, как вызывается функция. Атрибуты триггера, такие как имена очередей или имена баз данных, загружаются во время запуска узла и не могут напрямую извлекать значения из конфигурации приложений Azure. Для управления этими параметрами можно использовать функцию справочника по конфигурации приложений, доступную для функций Azure и службы приложений.

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

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

  1. В хранилище конфигурации приложений Azure добавьте ключевое значение для имени очереди:

    Ключ Ценность
    TestApp:Storage:QueueName <Имя очереди в учетной записи хранения>
  2. На портале Azure в вашем приложении-функции выберите параметры ->Переменные среды ->Настройки приложения и создайте параметр приложения, ссылающийся на ключ конфигурации приложений.

    Имя Ценность
    MyQueueName @Microsoft.AppConfiguration(Endpoint=<your-store-endpoint>; Key=TestApp:Storage:QueueName)

    Подсказка

    Если в конфигурации приложений Azure есть несколько ключевых значений, их можно экспортировать в пакет в виде ссылок на конфигурацию приложений в Функции Azure с помощью портала Azure или ИНТЕРФЕЙСА командной строки.

  3. Включите управляемое удостоверение для вашего приложения Azure Functions и назначьте ему роль читателя данных конфигурации приложения для вашего хранилища конфигурации приложений. Подробные инструкции по настройке ссылок на конфигурацию приложений см. в статье "Использование ссылок на конфигурацию приложений" в службе приложений и функциях Azure.

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

    [Function("QueueTriggeredFunction")]
    public void Run([QueueTrigger(queueName: "%MyQueueName%")] QueueMessage message)
    {
        _logger.LogInformation($"C# Queue trigger function processed: {message.MessageText}");
    }
    

    Во время выполнения Функции Azure преобразуют заполнитель %MyQueueName% в значение, хранящееся в конфигурации приложения Azure, что позволяет централизованно управлять параметрами триггера без необходимости жестко прописывать их в коде функции.

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

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

Это важно

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

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

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

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

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

Чтобы узнать, как использовать флаги функций из конфигурации приложений Azure в приложении "Функции Azure", перейдите к следующему руководству.

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