Руководство. Работа с триггерами и привязками в Функциях 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-адрес конечной точки для триггера службы "Сетка событий". В следующем разделе показано, как получить системный ключ.

Системный ключ можно получить с помощью следующего 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}"
    }
  ]
}

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

Внимание

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

Дополнительные сведения см. в разделе Ключи авторизации в справочнике по триггерам HTTP.

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

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

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

Screenshot of connecting to a new event subscription to trigger in the portal.

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

Screenshot of creating an event subscription with the function endpoint already defined.

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

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

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

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

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

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

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

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

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

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

Button to deploy the Resource Manager template to Azure.

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

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

View new site

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

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

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

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

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

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

Copy request body from web app

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

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

Используйте такие средства, как Postman или cURL, чтобы создать HTTP-запрос POST:

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

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

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

  • Опубликуйте по URL-адресу функции триггера Сетки событий.

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

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

На следующих снимках экрана показаны заголовки и текст запроса в Postman:

Headers in Postman

Request body in Postman

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

Sample Event Grid trigger function logs

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

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