Краткое руководство. Маршрутизация пользовательских событий в функцию Azure с помощью сетки событий
Сетка событий Azure — это служба обработки событий для облака. Функции Azure является одним из поддерживаемых обработчиков событий. В рамках этой статьи с помощью портала Azure вы создадите пользовательский раздел, подпишетесь на раздел и активируете событие для просмотра результата. Затем вы отправите события в Функции Azure.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Создание приложения-функции Azure
Войдите на портал Azure.
В меню навигации слева выберите "Все службы".
Выберите "Вычисления " в списке категорий.
Наведите указатель мыши на приложение-функцию и выберите .+
На странице "Основы" мастера создания приложения-функции выполните следующие действия:
Выберите подписку Azure, в которой вы хотите создать приложение-функцию.
Создайте новую группу ресурсов или выберите имеющуюся.
Укажите имя приложения-функции.
Выберите .NET для стека среды выполнения.
Для версии выберите 6 (LTS), внутрипроцессную модель.
Выберите ближайший к вам регион .
Нажмите кнопку Далее: служба хранилища в нижней части страницы.
На странице служба хранилища создайте новую учетную запись хранения или выберите существующую учетную запись хранения, связанную с приложением-функцией, а затем нажмите кнопку "Проверить и создать" в нижней части страницы.
На странице "Просмотр и создание" проверьте параметры и нажмите кнопку "Создать" в нижней части страницы, чтобы создать приложение-функцию.
После успешного развертывания выберите "Перейти к ресурсу ", чтобы перейти на домашнюю страницу для приложения-функции.
Создание функции
Перед подпиской на пользовательский раздел необходимо создать функцию для обработки событий.
На странице приложения-функции в разделе "Создать в портал Azure" выберите "Создать функцию" в правой области.
На странице Создать функцию выполните следующие действия.
В разделе "Выбор шаблона" в поле фильтра или поиска введите триггер Сетка событий Azure.
Выберите шаблон триггера Сетка событий Azure в списке шаблонов.
Выберите Далее в нижней части страницы.
На странице сведений о шаблоне введите имя функции. В нашем примере это HandleEventsFunc.
Нажмите кнопку создания.
На странице "Функция" для HandleEventsFunc выберите Code + Test в меню навигации слева, замените код следующим кодом и нажмите кнопку "Сохранить" на панели команд.
#r "Azure.Messaging.EventGrid" #r "System.Memory.Data" using Azure.Messaging.EventGrid; using System; public static void Run(EventGridEvent eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); }
Выберите "Монитор " в меню слева и перейдите на вкладку "Журналы ". Сохраните это окно или вкладку браузера, чтобы просмотреть полученные сведения о событии.
Создание пользовательской темы
Раздел сетки событий содержит определяемую пользователем конечную точку, в которой можно размещать свои события.
На новой вкладке окна веб-браузера войдите в портал Azure.
В строке поиска в разделе найдите разделы сетки событий и выберите разделы сетки событий.
На странице "Разделы сетки событий" нажмите кнопку "+ Создать" на панели команд.
На странице Создать раздел выполните следующие действия:
Выберите свою подписку Azure.
Выберите группу ресурсов, использованную для предыдущих шагов.
Укажите уникальное имя для пользовательского раздела. Имя раздела должно быть уникальным, так как оно представлено записью службы доменных имен (DNS). Не используйте имя, указанное на изображении. Вместо этого создайте собственное имя длиной от 3 до 50 символов, которое может содержать только буквы (a–z, A–Z), цифры (0–9) и дефисы (-).
Выберите расположение для раздела "Сетка событий".
Выберите Review + create (Просмотреть и создать).
На странице Проверить и создать проверьте параметры и нажмите кнопку Создать.
После создания настраиваемого раздела выберите "Перейти к ресурсу ", чтобы просмотреть следующую страницу раздела "Сетка событий" для созданного раздела.
Подписка на события пользовательского раздела
Вы подписываетесь на раздел "Сетка событий", чтобы сообщить сетке событий, какие события нужно отслеживать и куда отправлять события.
Теперь на странице Раздел сетки событий выберите для пользовательского раздела + Подписка на события на панели инструментов.
На странице Создать подписку на событие выполните следующие действия:
Укажите имя для подписки на событие.
Выберите Функции Azure в качестве типа конечной точки.
Выберите " Настроить конечную точку".
В качестве конечной точки функции выберите подписку Azure и группу ресурсов Azure, в которой находится ваше приложение-функция, а затем выберите приложение-функцию и функцию, созданную ранее. Выберите Подтвердить выбор.
Этот шаг не является обязательным, но рекомендуется для рабочих сценариев. На странице Создать подписку на события перейдите на вкладку Дополнительные параметры и задайте значения для параметров Максимальное число событий на пакет и Предпочтительный размер пакета в килобайтах.
Пакетная обработка может обеспечить высокую пропускную способность. Для параметра Максимальное число событий на пакет задайте максимальное количество событий, которые подписка будет включать в пакет. Параметр предпочтительного размера пакета задает нужное верхнее ограничение размера пакета в килобайтах, но допускает превышение, если одно событие больше этого порогового значения.
Вернитесь на страницу Создать подписку на события и выберите Создать.
Отправка события в тему
Теперь необходимо активировать событие, чтобы увидеть, как Сетка событий Azure распределяет сообщение к вашей конечной точке. Отправьте тестовое событие в пользовательский раздел с помощью PowerShell или Azure CLI. Как правило, приложение или служба Azure отправит данные события.
В первом примере используется Azure CLI. Он возвращает URL-адрес, ключ пользовательского раздела и пример данных события. Используйте имя пользовательского раздела для <topic name>
. Будет создан пример данных событий. Элемент data
JSON отображает полезные данные события. Любое значение JSON с правильным форматом может быть в этом поле. Кроме того, можно использовать поле темы для дополнительной маршрутизации и фильтрации. CURL — это служебная программа, которая отправляет HTTP-запросы.
Azure CLI
На портале Azure выберите Cloud Shell. Выберите Bash в левом верхнем углу окна Cloud Shell.
topicname
Задайте переменные,resourcegroupname
которые будут использоваться в командах.Замените
TOPICNAME
именем раздела "Сетка событий".topicname="TOPICNAME"
Замените
RESOURCEGROUPNAME
именем группы ресурсов Azure, содержащей раздел "Сетка событий".resourcegroupname="RESOURCEGROUPNAME"
Выполните следующую команду, чтобы получить конечную точку раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
Выполните следующую команду, чтобы получить ключ для пользовательского раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
Скопируйте следующую инструкцию с определением события и нажмите клавишу ВВОД.
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
Выполните следующую команду Curl, чтобы отправить событие:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
Во втором примере для выполнения аналогичных действий используется PowerShell.
На портале Azure выберите Cloud Shell (или перейдите по адресу
https://shell.azure.com/
). Выберите PowerShell в левом верхнем углу окна Cloud Shell. Пример того, как выглядит окно Cloud Shell, приведен в разделе "Инфраструктура CLI Azure".Задайте следующие переменные. После копирования и вставки команды перед ее выполнением измените соответствующим образом имя раздела и имя группы ресурсов.
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
Выполните следующую команду, чтобы получить конечную точку и ключи для раздела:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
Подготовьте событие. Скопируйте и выполните инструкции в окне Cloud Shell.
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct body using Hashtable $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert event body from Hashtable to JSON Object #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Используйте командлет Invoke-WebRequest для отправки события.
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Убедитесь, что функция получила событие.
Вы активировали событие, а служба "Сетка событий" отправила сообщение в конечную точку, настроенную вами при оформлении подписки.
На странице "Монитор" для функции Azure отображается вызов.
Выберите вызов, чтобы просмотреть сведения.
Вы также можете использовать вкладку "Журналы" в правой области, чтобы просмотреть записанные сообщения при публикации событий в конечную точку раздела.
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не удаляйте ресурсы, созданные при работе с этой статьей. В противном случае удалите ресурсы, созданные при работе с этой статьей.
Выберите Группы ресурсов в меню слева. Если этот параметр не отображается, выберите Все службы в меню слева и выберите Группы ресурсов.
Выберите группу ресурсов, чтобы открыть страницу Группа ресурсов.
На панели инструментов выберите Удалить группу ресурсов.
Подтвердите удаление. Для этого введите имя группы ресурсов и выберите Удалить.
Другая группа ресурсов, показанная на рисунке, создана и используется в окне Cloud Shell. Удалите ее, если вы не планируете использовать окно Cloud Shell в дальнейшем.
Следующие шаги
Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:
- An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")
- Перенаправление событий хранилища BLOB-объектов в пользовательскую конечную веб-точку (предварительная версия)
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Отслеживание изменений виртуальной машины с помощью Azure Logic Apps и службы "Сетка событий Azure")
- Потоковая передача больших данных в хранилище данных
Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.