Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены пошаговые инструкции по публикации событий в службе "Сетка событий Azure" в формате JSON CloudEvents и доставке этих событий с помощью модели принудительной доставки. Конкретно, вы используете Azure CLI и Curl для публикации событий в топике пространства имен в Event Grid и отправки этих событий из подписки на событие к вебхуку-обработчику. Дополнительные сведения о модели доставки push-уведомлений см. в обзоре доставки push-уведомлений.
Примечание
Расширение Сетки событий Azure CLI пока не поддерживает пространства имен и какие-либо ресурсы, содержащиеся в ней. Мы будем использовать ресурс Azure CLI для создания ресурсов Сетки событий.
Если у вас нет аккаунта 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, последняя версия уже установлена.
Если вы еще не использовали Event Grid в подписке Azure, возможно, вам потребуется зарегистрировать поставщика ресурсов Event Grid. Выполните следующую команду для регистрации поставщика:
az provider register --namespace Microsoft.EventGrid
Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Когда состояние
registrationState
изменится наRegistered
, вы сможете продолжить работу.
Создайте группу ресурсов Azure с помощью команды az group create. Эта группа ресурсов используется для хранения всех ресурсов, созданных в этой статье.
Ниже приведены общие действия по использованию Cloud Shell для выполнения команд.
- Выберите Open Cloud Shell , чтобы увидеть окно Azure Cloud Shell на правой панели.
- Скопируйте команду и вставьте ее в окно Azure Cloud Shell.
- Нажмите клавишу ВВОД, чтобы выполнить команду.
Объявите переменную для хранения имени группы ресурсов Azure. Укажите имя для группы ресурсов, заменив
<your-resource-group-name>
на значение, которое вам нравится.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
Создайте группу ресурсов. Измените расположение по вашему усмотрению.
az group create --name $resource_group --location $location
Пространство имен Сетки событий предоставляет определяемую пользователем конечную точку, в которую вы публикуете события. В следующем примере создается пространство имен в группе ресурсов с помощью Bash в Azure Cloud Shell. Имя пространства имен должно быть уникальным, так как это часть записи системы доменных имен (DNS). Имя пространства имен должно соответствовать следующим правилам:
- Он должен находиться в диапазоне от 3 до 50 символов.
- Он должен быть уникальным для региона.
- Допустимы только символы a-z, A-Z, 0-9 и -
- Он не должен начинаться с зарезервированных префиксов ключевого слова, таких как
Microsoft
,System
илиEventGrid
.
Объявите переменную для хранения имени пространства имен Сетки событий. Укажите имя пространства имен, заменив
<your-namespace-name>
на желаемое значение.namespace="<your-namespace-name>"
Создайте пространство имен. Возможно, потребуется изменить расположение, в котором оно развернуто.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
Создайте тему, используемую для хранения всех событий, публикуемых в конечной точке пространства имен.
Объявите переменную для хранения имени раздела пространства имен. Укажите имя темы пространства имен, заменив
<your-topic-name>
на нужное значение.topic="<your-topic-name>"
Создайте раздел пространства имен:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Перед подпиской на раздел пространства имен создадим конечную точку для сообщения о событии. Как правило, конечная точка выполняет действия на основе данных события. Чтобы упростить это краткое руководство, вы развернете предварительно созданное веб-приложение , отображающее сообщения о событиях. Развернутое решение включает план службы приложений, веб-приложение службы приложений и исходный код из GitHub.
Скопируйте следующую команду, укажите имя веб-приложения (пример средства просмотра сетки событий) и нажмите клавишу ВВОД, чтобы выполнить команду. Замените
<your-site-name>
уникальным именем веб-приложения. Имя веб-приложения должно быть уникальным, так как это часть записи DNS.sitename="<your-site-name>"
az deployment group create
Запустите веб-приложение, используя шаблон Azure Resource Manager.az deployment group create \ --resource-group $resource_group \ --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
Вы увидите сайт, где в настоящий момент не отображаются сообщения.
Создайте подписку на событие push-доставки в пространство имен с помощью веб-перехватчика для средства просмотра Azure Event Grid.
Определите переменную для хранения имени подписки на событие.
event_subscription="<your_event_subscription_name>"
Замените
EVENTGRIDWEBSITENAME
именем веб-сайта средства просмотра сетки событий. Например:contosoegridviewer
.az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
Теперь отправьте пример события в раздел пространства имен, выполнив действия, описанные в этом разделе.
Получите ключи доступа, связанные с созданным пространством имен. Вы используете один из них для проверки подлинности при публикации событий. Чтобы перечислить ключи, сначала потребуется полный идентификатор ресурса пространства имен. Получите его, выполнив следующую команду:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Извлеките первый ключ из пространства имен:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Получите имя хоста пространства имен. Он используется для создания конечной точки пространства имен HTTP, в которую отправляются события. Следующие операции были впервые доступны в версии
2023-06-01-preview
API.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
Создайте пример события, соответствующего требованиям CloudEvents :
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
Элемент
data
— это нагрузка вашего события. Любое значение JSON с правильным форматом может быть в этом поле. Дополнительные сведения о свойствах (также известных как атрибуты контекста), которые могут идти в событии, см. в спецификациях CloudEvents .Используйте CURL для отправки события в раздел. CURL — это служебная программа, которая отправляет HTTP-запросы.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Убедитесь, что веб-приложение средства просмотра сетки событий Azure отображает события, полученные из сетки событий.
В этом кратком руководстве вы использовали вебхук в качестве обработчика событий. Краткое руководство по использованию концентратора событий Azure в качестве обработчика событий см. в разделе "Доставка событий в Центры событий Azure" с помощью разделов пространства имен.