Учебник. Использование подключений на основе удостоверений с триггерами и привязками

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

Хотя представленные процедуры работают обычно для всех языков, сейчас этот учебник поддерживает только функции библиотеки классов C# в Windows.

Из этого руководства вы узнаете, как выполнять следующие задачи:

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

Предварительное требование

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

Создание служебной шины и очереди

  1. На портале Azure выберите Создать ресурс (+) .

  2. На странице Создание ресурса выберите Интеграция>Служебная шина.

  3. На странице Основы воспользуйтесь следующей таблицей, чтобы настроить параметры пространства имен Служебной шины. Для остальных параметров используйте значения по умолчанию.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в рамках которой создан ресурс.
    Группа ресурсов myResourceGroup Группа ресурсов, которую вы создали с помощью приложения функции.
    Имя пространства имен Глобально уникальное имя Пространство имен вашего экземпляра, из которого будет срабатывать триггер для функции. Так как пространство имен общедоступно, используйте имя, которое глобально уникально в Azure. Имя должно включать от 6 до 50 символов, содержать только буквенно-цифровые символы и дефисы и не может начинаться с числа.
    Расположение myFunctionRegion Регион, в котором вы создали приложение функцию.
    Ценовая категория Basic Уровень "Базовый" Служебной шины.
  4. Выберите Review + create (Просмотреть и создать). После завершения проверки нажмите кнопку Создать.

  5. После завершения развертывания выберите Перейти к ресурсу.

  6. В новом пространстве имен Служебной шины выберите + Очередь, чтобы добавить очередь.

  7. Введите myinputqueue в качестве имени очереди и выберите Создать.

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

Настройка триггера Служебной шины с помощью управляемого удостоверения

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

Примечание

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

  1. В созданном пространстве имен служебной шины выберите Управление доступом (IAM) . Здесь можно просмотреть и настроить, кто имеет доступ к ресурсу.

  2. Щелкните Добавить, затем выберите Добавить назначение ролей.

  3. Выполните поиск Получатель данных Служебной шины Azure, выберите его и щелкните Далее.

  4. На вкладке Участники в разделе Назначение доступа для выберите Управляемое удостоверение

  5. Щелкните Выбор участников, чтобы открыть панель Выбор управляемых удостоверений.

  6. Убедитесь, что для значения Подписка указана подписка, в которой вы создали ресурсы ранее.

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

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

  9. Щелкните свое приложение. Оно должно переместиться вниз в раздел Выбранные участники. Нажмите кнопку Выбрать.

  10. На экране Добавление назначения ролей щелкните Проверка + назначение. Просмотрите конфигурацию и щелкните Проверка + назначение.

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

Подключение к Служебной шине в приложении-функции

  1. На портале найдите приложение-функцию, созданное при работе с предыдущим учебником, или перейдите к нему на странице Приложение-функция.

  2. Для приложения-функции выберите Конфигурация в разделе Параметры.

  3. В разделе Параметры приложения выберите + Создать параметр приложения, чтобы создать параметр из следующей таблицы.

    Имя Значение Описание
    ServiceBusConnection__fullyQualifiedNamespace <SERVICE_BUS_NAMESPACE>.servicebus.windows.net Этот параметр подключает приложение-функцию к служебной шине с помощью подключения на основе удостоверений, а не секретов.
  4. После создания этих двух параметров выберите Сохранить>Подтвердить.

Примечание

При использовании Конфигурации приложений Azure или Key Vault для предоставления параметров подключений Управляемого удостоверения имена параметров должны использовать допустимый разделитель ключей, например : или /, вместо __, чтобы обеспечить правильное разрешение имен.

Например, ServiceBusConnection:fullyQualifiedNamespace.

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

Добавление функции для триггеров Служебной шины

  1. Выполните команду func init, как показано ниже, чтобы создать проект функций в папке с именем LocalFunctionProj с указанной средой выполнения:

    func init LocalFunctionProj --dotnet
    
  2. Перейдите в папку проекта:

    cd LocalFunctionProj
    
  3. В корневой папке проекта выполните следующие команды:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Это заменит версию по умолчанию для пакета расширения Служебной шины на версию, которая поддерживает управляемые удостоверения.

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

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Это добавит код для нового триггера Служебной шины и ссылку на пакет расширения. Вам потребуется добавить параметры подключения пространства служебной шины для этого триггера.

  5. Откройте новый файл проекта ServiceBusTrigger.cs и замените класс ServiceBusTrigger следующим кодом:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    Этот пример кода заменяет имя очереди на myinputqueue, которое не отличается от имени созданной ранее очереди. Это также задает для подключения Служебной шины имя ServiceBusConnection. Это имя Служебной шины, используемое подключением на основе удостоверений ServiceBusConnection__fullyQualifiedNamespace, которое вы настроили на портале.

Примечание

Если вы попытаетесь выполнить функции теперь с помощью func start, вы получите ошибку. Это вызвано тем, что вы не определили подключение на основе удостоверений локально. Если вы хотите запустить функцию локально, задайте параметр приложения ServiceBusConnection__fullyQualifiedNamespace в local.settings.json, как сделали это в предыдущем разделе. Кроме того, вам потребуется назначить роль удостоверению разработчика. Дополнительные сведения см. в документации по локальной разработке с помощью подключений на основе удостоверений.

Примечание

При использовании Конфигурации приложений Azure или Key Vault для предоставления параметров подключений Управляемого удостоверения имена параметров должны использовать допустимый разделитель ключей, например : или /, вместо __, чтобы обеспечить правильное разрешение имен.

Например, ServiceBusConnection:fullyQualifiedNamespace.

Публикация обновленного проекта

  1. Выполните следующую команду, чтобы локально создать файлы для пакета развертывания:

    dotnet publish --configuration Release
    
  2. Перейдите к подпапке \bin\Release\netcoreapp3.1\publish и создайте ZIP-файл из ее содержимого.

  3. Опубликуйте ZIP-файл, выполнив следующую команду и заменив параметры FUNCTION_APP_NAME, RESOURCE_GROUP_NAME и PATH_TO_ZIP на нужные вам:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

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

Проверка изменений

  1. На портале найдите Application Insights и выберите Application Insights в разделе Службы.

  2. В Application Insights выберите или найдите именованный экземпляр.

  3. В своем экземпляре выберите Интерактивные метрики в разделе Изучение.

  4. Не закрывайте предыдущую вкладку и откройте портал Azure в новой вкладке. В ней перейдите к пространству имен Служебной шины и выберите Очереди в левой колонке.

  5. Выберите очередь с именем myinputqueue.

  6. Выберите Service Bus Explorer в колонке слева.

  7. Отправьте тестовое сообщение.

  8. Выберите открытую вкладку Интерактивные метрики и проверьте выполнение очереди Служебной шины.

Поздравляем! Вы успешно настроили триггер очереди Служебной шины с использованием управляемого удостоверения.

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

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

В меню или на странице Главная портала Azure выберите Группы ресурсов. Затем на странице Группы ресурсов выберите myResourceGroup.

На странице myResourceGroup убедитесь, что перечислены те ресурсы, которые нужно удалить.

Выберите Удалить группу ресурсов, введите myResourceGroup в текстовое поле для подтверждения и щелкните Удалить.

Дальнейшие действия

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

Узнайте больше о Функциях Azure с подключениями на основе удостоверений с помощью следующих ссылок: