Маршрутизация пользовательских событий в веб-конечную точку с помощью портал Azure и Сетка событий Azure
Сетка событий — это полностью управляемая служба, которая позволяет легко управлять событиями во множестве разных сервисов и приложений Azure. Она упрощает создание приложений, управляемых событиями, и бессерверных приложений. Общие сведения о службе см. в статье Обзор Сетки событий Azure.
В этой статье объясняется, как использовать портал Azure для выполнения описанных ниже задач.
- Создание пользовательского раздела.
- Подписка на пользовательский раздел.
- Активация события.
- Просмотр результата. Как правило, события отправляются на конечную точку, которая обрабатывает данные событий и выполняет соответствующие действия. Но в этой статье для простоты события отправляются в веб-приложение, которое собирает и отображает сообщения.
Необходимые компоненты
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Регистрация поставщика ресурсов Сетки событий
Если вы не пользовались сеткой событий раньше, потребуется зарегистрировать поставщика ресурсов сетки событий. Если вы использовали сетку событий раньше, переходите к следующему разделу.
На портале Azure сделайте следующее:
В меню слева выберите Подписки.
Выберите подписку, которую вы хотите использовать для службы "Сетка событий", из списка подписок.
На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.
Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.
Выберите Microsoft.EventGrid в списке поставщиков.
Выберите Зарегистрировать на панели команд.
Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.
Создание пользовательской темы
Раздел сетки событий содержит определяемую пользователем конечную точку, в которой можно размещать свои события.
Войдите на портал Azure.
На панели поиска в разделе введите Разделы сетки событий, а затем в раскрывающемся списке выберите Разделы сетки событий.
На странице Разделы сетки событий на панели инструментов выберите + Создать.
На странице Создать раздел выполните следующие действия:
Выберите свою подписку Azure.
Щелкните имеющуюся группу ресурсов или выберите Создать и введите имя для новой группы ресурсов.
Укажите уникальное имя для пользовательского раздела. Имя раздела должно быть уникальным, так как оно представлено записью службы доменных имен (DNS). Не используйте имя, указанное на изображении. Вместо этого создайте собственное имя длиной от 3 до 50 символов, которое может содержать только буквы (a–z, A–Z), цифры (0–9) и дефисы (-).
Выберите расположение для раздела "Сетка событий".
В нижней части страницы выберите Review + create (Проверить и создать).
На вкладке Просмотр и создание на странице Создание раздела выберите Создать.
После завершения развертывания выберите Переход к ресурсу, чтобы открыть страницу Раздел сетки событий для вашего раздела. Оставьте эту страницу открытой. Она понадобится позже при работе с кратким руководством.
Примечание.
Чтобы упростить краткое руководство, вы будете использовать для создания раздела только страницу Основное. Подробные инструкции по настройке параметров сети, безопасности и места расположения данных на других страницах мастера см. в статье Создание пользовательской темы.
Создание конечной точки сообщения
Перед созданием подписки на пользовательский раздел создайте конечную точку для сообщения о событии. Обычно конечная точка выполняет действия на основе данных событий. Чтобы упростить это краткое руководство, вы развернете предварительно созданное веб-приложение , отображающее сообщения о событиях. Развернутое решение содержит план службы приложений, веб-приложение службы приложений и исходный код из GitHub.
Выберите Развернуть в Azure, чтобы развернуть решение в своей подписке. На портале Azure укажите значения остальных параметров.
На странице Настраиваемое развертывание выполните следующие действия:
Для группы ресурсов выберите существующую группу ресурсов или создайте группу ресурсов.
В поле Имя сайта введите имя веб-приложения.
В поле Имя плана размещения введите имя плана службы приложений для размещения веб-приложения.
Выберите Review + create (Просмотреть и создать).
На странице Отзыв и создание выберите Создать.
Завершение развертывания может занять несколько минут. На портале перейдите к оповещениям (значок колокольчика) и выберите Перейти к группе ресурсов.
На странице группы ресурсов в списке ресурсов выберите веб-приложение (contosoegriviewer в следующем примере).
На странице Служба приложений для веб-приложения выберите URL-адрес для перехода на веб-сайт. URL-адрес должен иметь следующий формат:
https://<your-site-name>.azurewebsites.net
.Убедитесь, что сайт открывается, но не имеет опубликованных событий.
Подписка на события пользовательского раздела
Вы подписываетесь на раздел "Сетка событий", чтобы сообщить сетке событий, какие события нужно отслеживать и куда отправлять события.
Теперь на странице Раздел сетки событий выберите для пользовательского раздела + Подписка на события на панели инструментов.
На странице Создать подписку на событие выполните следующие действия:
Укажите имя для подписки на событие.
Выберите веб-перехватчик в качестве типа конечной точки.
Выберите Выбрать конечную точку.
Для конечной точки веб-перехватчика укажите URL-адрес веб-приложения и добавьте
api/updates
к URL-адресу домашней страницы. Выберите Подтвердить выбор.Вернитесь на страницу Создать подписку на событие и выберите Создать.
Теперь снова откройте веб-приложение и убедитесь, что оно успешно получило отправленное событие подтверждения подписки. Щелкните значок с изображением глаза, чтобы развернуть данные события. Сетка событий отправляет событие подтверждения, чтобы конечная точка могла подтвердить, что она готова получать данные события. Веб-приложение содержит код для проверки подписки.
Отправка события в тему
Теперь необходимо активировать событие, чтобы увидеть, как Сетка событий Azure распределяет сообщение к вашей конечной точке. Отправьте тестовое событие в пользовательский раздел с помощью PowerShell или Azure CLI. Как правило, приложение или служба Azure отправит данные события.
В первом примере используется Azure CLI. Он возвращает URL-адрес, ключ пользовательского раздела и пример данных события. Используйте имя пользовательского раздела для <topic name>
. Будет создан пример данных событий. Элемент data
JSON отображает полезные данные события. Любое значение JSON с правильным форматом может быть в этом поле. Кроме того, можно использовать поле темы для дополнительной маршрутизации и фильтрации. CURL — это служебная программа, которая отправляет HTTP-запросы.
Azure CLI
На портале Azure выберите Cloud Shell. Cloud Shell откроется в нижней области веб-браузера.
Выберите Bash в левом верхнем углу окна Cloud Shell.
Выполните следующую команду, чтобы получить конечную точку раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды. Вы публикуете примеры событий в этой конечной точке раздела.
endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
Выполните следующую команду, чтобы получить ключ для пользовательского раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды. Это первичный ключ раздела Сетки событий. Чтобы получить этот ключ на портале Azure, перейдите на вкладку Ключи доступа на странице Раздел Сетки событий. Чтобы можно было опубликовать событие в пользовательском разделе, требуется ключ доступа.
key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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 , чтобы опубликовать событие: в команде заголовок задается для ключа доступа,
aeg-sas-key
который вы получили ранее.curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
Во втором примере для выполнения аналогичных действий используется PowerShell.
На портале Azure выберите Cloud Shell (или перейдите по адресу
https://shell.azure.com/
). Cloud Shell откроется в нижней области веб-браузера.В левом верхнем углу окна Cloud Shell выберите PowerShell. Пример того, как выглядит окно Cloud Shell, приведен в разделе "Инфраструктура CLI Azure".
Задайте следующие переменные. После копирования и вставки команды перед ее выполнением измените соответствующим образом имя раздела и имя группы ресурсов.
Группа ресурсов.
$resourceGroupName = "<resource group name>"
Имя раздела Сетки событий.
$topicName = "<topic name>"
Выполните следующую команду, чтобы получить конечную точку и ключи для раздела:
$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}
Проверка в средстве просмотра Сетки событий
Вы активировали событие, а служба "Сетка событий" отправила сообщение в конечную точку, настроенную вами при оформлении подписки. Откройте веб-приложение и просмотрите в нем отправленные события.
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не удаляйте ресурсы, созданные при работе с этой статьей. В противном случае удалите ресурсы, созданные при работе с этой статьей.
Выберите Группы ресурсов в меню слева. Если этот параметр не отображается, выберите Все службы в меню слева и выберите Группы ресурсов.
Выберите группу ресурсов, чтобы открыть страницу Группа ресурсов.
На панели инструментов выберите Удалить группу ресурсов.
Подтвердите удаление. Для этого введите имя группы ресурсов и выберите Удалить.
Другая группа ресурсов, показанная на рисунке, создана и используется в окне 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")
- Потоковая передача больших данных в хранилище данных
Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.