Краткое руководство. Маршрутизация настраиваемых событий в веб-конечную точку с помощью 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
Включение поставщика ресурсов службы "Сетка событий"
Если вы еще не использовали службу "Сетка событий" в подписке Azure, вам, возможно, потребуется зарегистрировать поставщик ресурсов этой службы. Выполните следующую команду для регистрации поставщика:
az provider register --namespace Microsoft.EventGrid
Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
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) и дефисы (-).
Скопируйте следующую команду, укажите имя раздела и нажмите клавишу ВВОД, чтобы выполнить команду.
topicname=<your-topic-name>
az eventgrid topic create
Используйте команду для создания пользовательского раздела.az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Создание конечной точки сообщения
Перед подпиской на пользовательский раздел необходимо создать конечную точку для сообщения о событии. Обычно конечная точка выполняет действия на основе данных событий. Чтобы упростить это краткое руководство, вы развернете предварительно созданное веб-приложение , отображающее сообщения о событиях. Развернутое решение содержит план службы приложений, веб-приложение службы приложений и исходный код из GitHub.
Скопируйте следующую команду, укажите имя веб-приложения (пример средства просмотра сетки событий) и нажмите клавишу ВВОД, чтобы выполнить команду. Замените
<your-site-name>
уникальным именем для вашего веб-приложения. Имя веб-приложения должно быть уникальным, так как оно включается в запись DNS.sitename=<your-site-name>
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/
.
Скопируйте следующую команду, замените
$sitename
именем веб-приложения, созданного на предыдущем шаге, и нажмите клавишу ВВОД, чтобы выполнить команду.endpoint=https://$sitename.azurewebsites.net/api/updates
Выполните следующую команду, чтобы получить идентификатор ресурса созданного раздела.
topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
Выполните следующую команду, чтобы создать подписку на пользовательский раздел с помощью конечной точки.
az eventgrid event-subscription create \ --source-resource-id $topicresourceid \ --name demoViewerSub \ --endpoint $endpoint
Теперь снова откройте веб-приложение и убедитесь, что оно успешно получило отправленное событие подтверждения подписки. Щелкните значок с изображением глаза, чтобы развернуть данные события. Сетка событий отправляет событие подтверждения, чтобы конечная точка могла подтвердить, что она готова получать данные события. Веб-приложение содержит код для проверки подписки.
Отправка события в пользовательский раздел
Давайте активируем событие, чтобы увидеть, как сообщение отправляется в конечную точку при помощи службы "Сетка событий". Сначала получите 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
Следующие шаги
Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:
- An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")
- Перенаправление событий хранилища BLOB-объектов в пользовательскую конечную веб-точку (предварительная версия)
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Отслеживание изменений виртуальной машины с помощью Azure Logic Apps и службы "Сетка событий Azure")
- Потоковая передача больших данных в хранилище данных
Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.