Краткое руководство. Маршрутизация настраиваемых событий в веб-конечную точку с помощью Azure CLI и Сетки событий

В этом быстром старте вы используете Azure CLI для создания пользовательской темы в Сетка событий Azure, подписываетесь на пользовательскую тему и запускаете примерное событие для просмотра результата.

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

Снимок экрана: пример средства просмотра сетки событий с примером события.

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

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

  • Для этого быстрого запуска требуется версия версии 2.0.70 или более поздней версии Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
  • Если вы впервые работаете с Сетка событий Azure, перед началом этого краткого руководства ознакомьтесь с What's Сетка событий Azure, чтобы получить общее представление о службе.

Создайте группу ресурсов

Темы Event Grid — это ресурсы Azure, которые необходимо разместить в группе ресурсов Azure. Группа ресурсов — это логическая коллекция, в которую вы развёртаете и управляете ресурсами Azure.

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем gridResourceGroup в расположении westus2. Если хотите, смените название группы ресурсов и местоположение.

az group create --name gridResourceGroup --location westus2

Включить поставщика ресурсов Event Grid

  1. Если это первый раз, когда вы используете Event Grid в подписке Azure, может потребоваться зарегистрировать поставщика ресурсов Event Grid. Выполните следующую команду для регистрации поставщика:

    az provider register --namespace Microsoft.EventGrid
    
  2. Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Когда состояние registrationState изменится на Registered, вы сможете продолжить работу.

Создание пользовательской темы

Раздел сетки событий содержит определяемую пользователем конечную точку, в которой можно размещать свои события. Следующий пример создаёт пользовательскую тему в вашей группе ресурсов с помощью Bash в Azure Cloud Shell. Замените <your-topic-name> уникальным именем для вашей темы. Имя настраиваемого раздела должно быть уникальным, так как оно является частью записи системы доменных имен (DNS). Кроме того, он должен составлять от 3 до 50 символов и содержать только значения a-z, A-Z, 0-9 и «-»

  1. Скопируйте следующую команду, укажите имя для темы и выберите Enter для выполнения команды.

    topicname=<your-topic-name>
    
  2. Используйте команду az eventgrid topic create для создания пользовательской темы.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Создание конечной точки сообщения

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

  1. Скопируйте следующую команду, укажите имя для веб-приложения (пример Event Grid Viewer) и выберите Enter , чтобы выполнить команду. Замените <your-site-name> уникальным именем для вашего веб-приложения. Имя веб-приложения должно быть уникальным, так как оно включается в запись DNS.

    sitename=<your-site-name>
    
  2. Запустите az deployment group create для развертывания веб-приложения с помощью шаблона Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

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

На сайте не должно отображаться никаких сообщений.

Подпишитесь на пользовательскую тему

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

Конечная точка веб-приложения должна содержать суффикс /api/updates/.

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

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Выполните следующую команду, чтобы получить идентификатор ресурса созданного раздела.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Выполните следующую команду, чтобы создать подписку на пользовательский раздел с помощью конечной точки.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint
    

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

    Скриншот с примером Event Grid Viewer с событием подтверждения подписки.

Отправьте событие в настраиваемую тему

Давайте вызовем событие, чтобы увидеть, как служба Event Grid доставляет сообщение в вашу конечную точку. Сначала получите URL-адрес и ключ для настраиваемой темы.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Чтобы упростить этот быстрый старт, используйте примеры данных событий для отправки в пользовательскую тему. Как правило, приложение или служба Azure отправляет данные события. В следующем примере создается образец данных о событии:

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"} ]'

Элемент data в JSON — это полезная нагрузка вашего события. В это поле можно поместить любой корректно сформированный JSON. Кроме того, можно использовать поле темы для дополнительной маршрутизации и фильтрации.

cURL — это утилита, которая отправляет HTTP-запросы. В этом быстром старте используйте cURL, чтобы отправить событие в тему.

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

Вы активировали событие, а сетка событий отправила сообщение в конечную точку, настроенную при подписке. Откройте веб-приложение и просмотрите в нем отправленные события.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

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

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

az group delete --name gridResourceGroup --yes --no-wait

Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:

Чтобы узнать о публикации событий и потреблении событий из Event Grid на различных языках программирования, посмотрите следующие примеры: