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


Руководство. Работа с триггерами и привязками в Функциях Azure

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

Создание подписки на событие

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

Получение URL-адреса конечной точки веб-перехватчика

Конечная точка URL-адреса для функции, активируемой из Сетки событий, зависит от версии среды выполнения Функций. В следующем примере показан шаблон URL-адреса в зависимости от версии:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

Примечание.

Существует версия триггера хранилища BLOB-объектов, который также использует подписки на события. URL-адрес конечной точки для этого типа триггера хранилища BLOB-объектов имеет путь, в то время как путь /runtime/webhooks/blobsдля триггера сетки событий будет иметь /runtime/webhooks/EventGridзначение . Сравнение параметров обработки больших двоичных объектов см. в разделе "Триггер" в контейнере БОЛЬШИХ двоичных объектов.

Получение системного ключа

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

Вы также можете получить главный ключ приложения-функции из ключей приложений функций>на портале.

Внимание

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

Дополнительные сведения см. в статье "Работа с ключами доступа" в Функции Azure.

Системный ключ можно получить из приложения-функции с помощью следующих API-интерфейсов администратора (HTTP GET):

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

REST API —это API администратора, поэтому для него нужен главный ключ приложения-функции. Не путайте системный ключ (для вызова функции триггера службы "Сетка событий") с главным ключом (для выполнения административных задач в приложении-функции). Во время оформления подписки на раздел службы "Сетка событий" необходимо использовать системный ключ.

Ниже приведен пример ответа, который предоставляет системный ключ:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

Создание подписки

Подписку на события можно создать на портале Azure или через Azure CLI.

Для функций, разрабатываемых на портале Azure с использованием триггера Сетки событий, выберите Интеграция, Триггер Сетки событий и Создание подписки для Сетки событий.

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

Когда вы щелкните эту ссылку, на портале откроется страница Создать подписку на события, где автоматически определена конечная точка текущего триггера.

Снимок экрана: создание подписки на события, для которой уже определена конечная точка функции.

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

Дополнительные сведения о создании подписки см. в разделе Примеры использования хранилища больших двоичных объектов или других коротких руководствах по использованию службы "Сетка событий".

Локальное тестирование с помощью веб-приложения средства просмотра

Чтобы протестировать триггер службы "Сетка событий" локально, необходимо отправить HTTP-запросы службы "Сетка событий", переданные из своего источника в облаке, на локальный компьютер. Для этого можно записать запросы в сети и вручную отправить их на локальный компьютер:

  1. Создайте веб-приложение средства просмотра, которое собирает сообщения о событиях.
  2. Создайте подписку службы "Сетка событий", которая отправляет события в приложение средства просмотра.
  3. Создайте запрос и скопируйте текст запроса из приложения средства просмотра.
  4. Вручную вставьте запрос в URL-адрес localhost функции триггера службы "Сетка событий".

Чтобы отправить HTTP-запрос после отправки, вам потребуется средство тестирования HTTP. Обязательно выберите средство, которое обеспечивает безопасность данных. Дополнительные сведения см. в средствах тестирования HTTP.

Закончив тестирование, можно использовать ту же подписку для рабочей среды, обновив конечную точку. Выполните команду Azure CLI az eventgrid event-subscription update.

Создание веб-приложения средства просмотра

Чтобы упростить запись сообщений о событиях, разверните готовое веб-приложение, которое отображает сообщения о событиях. Развернутое решение содержит план службы приложений, веб-приложение службы приложений и исходный код из GitHub.

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

Кнопка для развертывания шаблона Resource Manager в Azure.

Завершение развертывания может занять несколько минут. Когда развертывание успешно завершится, откройте веб-приложение и убедитесь, что оно работает. Откройте браузер и перейдите по адресу https://<your-site-name>.azurewebsites.net.

Вы увидите сайт без опубликованных событий.

Представление нового сайта

Создание подписки Сетки событий

Создайте подписку "Сетка событий" того типа, который требуется протестировать, и предоставьте URL-адрес из веб-приложения как конечную точку для уведомления о событиях. Конечная точка веб-приложения должна содержать суффикс /api/updates/. Таким образом, полный URL-адрес будет выглядеть следующим образом: https://<your-site-name>.azurewebsites.net/api/updates

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

Создание запроса

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

Сначала будет получен запрос на подтверждение подписки. Игнорируйте такие запросы и скопируйте запрос события.

Копирование текста запроса из веб-приложения

Публикация запроса вручную

Запустите функцию службы "Сетка событий" локально. Заголовки Content-Type и aeg-event-type необходимо задать вручную, а для всех остальных параметров можно оставить значения по умолчанию.

Используйте средство тестирования HTTP для создания HTTP-запроса POST:

  • Задайте заголовок Content-Type: application/json.

  • Задайте заголовок aeg-event-type: Notification.

  • Вставьте данные RequestBin в текст запроса.

  • Отправьте HTTP-запрос POST в конечную точку, которая вручную запускает триггер сетки событий.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

Для параметра functionName нужно указать имя, заданное в атрибуте FunctionName.

Функция триггера службы "Сетка событий" выполняет и показывает журналы, похожие на приведенные ниже:

Пример журналов функций триггера службы

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

Чтобы узнать больше о об использовании Сетки со службой "Функции", обратитесь к следующим статьям: