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


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

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

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

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

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

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

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

Создание или изменение группы ресурсов

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

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем gridResourceGroup в расположении westus2. При нажатии кнопки "Попробовать" появится окно Azure Cloud Shell в правой области. Затем нажмите кнопку "Копировать ", чтобы скопировать команду и вставить ее в окно Azure Cloud Shell, и нажмите клавишу ВВОД, чтобы выполнить команду. Измените имя группы ресурсов и расположение, если хотите.

az group create --name gridResourceGroup --location westus2

Включение поставщика ресурсов службы "Сетка событий"

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

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

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

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

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

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

  1. Скопируйте следующую команду, укажите имя веб-приложения (пример средства просмотра сетки событий) и нажмите клавишу ВВОД, чтобы выполнить команду. Замените <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/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

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

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

Создание подписки на события пользовательского раздела

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

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

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

    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      
    

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

    Просмотр события подписки в средстве просмотра Сетки событий Azure

Отправка события в пользовательский раздел

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

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

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

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