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

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

Необходимые компоненты

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

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

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

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

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

  1. В строке меню Visual Studio выберите Файл>Создать>Проект.

  2. В разделе Создать новый проект введите в поле поиска слово функции, выберите шаблон Функции Azure, а затем нажмите кнопку Далее.

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

  4. Для параметров в области Создание нового приложения Функций Azure используйте значения, указанные в таблице ниже.

    Параметр значение Описание
    Версия .NET .NET 6 (изолированный) Это значение создает проект функции, который выполняется в изолированном рабочем процессе. Изолированный рабочий процесс поддерживает другую версию .NET, отличной от LTS, а также платформа .NET Framework. Дополнительные сведения см. в обзоре версий среды выполнения Функций Azure.
    Function template (Шаблон функции) Триггер HTTP С помощью этого значения создается функция, которая активируется с помощью HTTP-запроса.
    Учетная запись хранения (AzureWebJobsStorage) Эмулятор хранения Поскольку для приложения-функции в Azure требуется учетная запись хранения, она назначается или создается при публикации проекта в Azure. При активации с помощью HTTP-запроса не используется строка подключения учетной записи хранения Azure. Для всех остальных типов активации требуется допустимая строка подключения к учетной записи хранения Azure.
    Уровень авторизации Анонимный. Создаваемую функцию может активировать любой клиент без указания ключа. Этот параметр авторизации позволяет легко тестировать новые функции. Дополнительные сведения о ключах и авторизации см. в разделе Ключи авторизации, а также в обзоре привязок HTTP и веб-перехватчика.

    Параметр проекта Функций Azure

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

  5. Нажмите кнопку Создать, чтобы создать проект функции и функцию, активируемую с помощью HTTP.

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

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

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

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

    Добавьте новый файл Startup.cs с приведенным ниже кодом. В нем определен класс с именем Startup, который реализует абстрактный класс FunctionsStartup. С помощью атрибута сборки указывается имя типа, используемого при запуске Функций Azure.

    Метод ConfigureAppConfiguration переопределяется, при этом добавляется поставщик Конфигурации приложений Azure в качестве дополнительного источника конфигурации с помощью вызова AddAzureAppConfiguration(). Метод Configure остается пустым, так как на этом этапе не нужно регистрировать какие-либо службы.

    using System;
    using Microsoft.Azure.Functions.Extensions.DependencyInjection;
    using Microsoft.Extensions.Configuration;
    
    [assembly: FunctionsStartup(typeof(FunctionApp.Startup))]
    
    namespace FunctionApp
    {
        class Startup : FunctionsStartup
        {
            public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
            {
                string cs = Environment.GetEnvironmentVariable("ConnectionString");
                builder.ConfigurationBuilder.AddAzureAppConfiguration(cs);
            }
    
            public override void Configure(IFunctionsHostBuilder builder)
            {
            }
        }
    }
    
  3. Откройте Функцию 1.cs и добавьте следующее пространство имен, если оно еще не существует.

    using Microsoft.Extensions.Configuration;
    

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

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

    [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.");
    
        // Read configuration data
        string keyName = "TestApp:Settings:Message";
        string message = _configuration[keyName];
    
        return message != null
            ? (ActionResult)new OkObjectResult(message)
            : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration.");
    }
    

    Примечание.

    Класс Function1 и метод Run не должны быть статическими. Удалите модификатор static, если он был создан автоматически.

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

  1. Задайте переменную среды с именем ConnectionString и укажите для нее ключ доступа к хранилищу службы "Конфигурация приложений". Если вы используете командную строку Windows, выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:

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

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

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

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

        export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Чтобы проверить работу функции, нажмите клавишу F5. Если будет предложено, примите запрос от Visual Studio на скачивание и установку основных инструментов решения "Функции Azure" (CLI). Кроме того, возможно, вам понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.

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

    Отладки рассматриваемой в этом кратком руководстве функции в VS

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

    Локальный запуск рассматриваемой в этом кратком руководстве функции

Очистка ресурсов

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

Внимание

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

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

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

Следующие шаги

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

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