Управление разделами и публикация событий с помощью доменов событий
В этой статье показано, как сделать следующее:
- создать домен в Сетке событий;
- Подписка на разделы "Сетка событий"
- Отобразить ключи
- опубликовать события в домен.
Общие сведения о доменах событий см. в статье Общие сведения о доменах событий, используемых для управления разделами службы "Сетка событий Azure".
Создание Домена событий
Чтобы управлять большими наборами разделов, создайте домен событий.
az eventgrid domain create \
-g <my-resource-group> \
--name <my-domain-name> \
-l <location>
После успешного создания возвращаются следующие значения:
{
"endpoint": "https://<my-domain-name>.westus2-1.eventgrid.azure.net/api/events",
"id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
"inputSchema": "EventGridSchema",
"inputSchemaMapping": null,
"location": "westus2",
"name": "<my-domain-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<my-resource-group>",
"tags": null,
"type": "Microsoft.EventGrid/domains"
}
Запишите значения endpoint
и id
, так как они необходимы для управления доменом и публикации событий.
Управление доступом к разделам
Управление доступом к разделам выполняется через назначение ролей. Назначение ролей использует управление доступом на основе ролей Azure, чтобы ограничить операции с ресурсами Azure для авторизованных пользователей в определенной области.
Сетка событий имеет две встроенные роли, которые можно использовать для назначения определенным пользователям доступа к различным разделам в пределах домена. Это роль EventGrid EventSubscription Contributor (Preview)
, которая позволяет создавать и удалять подписки, и роль EventGrid EventSubscription Reader (Preview)
, которая позволяет только перечислять подписки на события.
Следующая команда интерфейса командной строки Azure ограничивает alice@contoso.com
созданием и удалением подписок на события только в разделе demotopic1
:
az role assignment create \
--assignee alice@contoso.com \
--role "EventGrid EventSubscription Contributor (Preview)" \
--scope /subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1
Дополнительные сведения об управлении доступом для операций службы "Сетка событий" см. в статье Сетка событий: безопасность и проверка подлинности.
Создание разделов и подписок
Служба "Сетка событий" автоматически создает соответствующий раздел в домене и управляет им на основе вызова для создания подписки на событие для раздела домена. Отдельного шага по созданию раздела в домене нет. Аналогичным образом, когда последняя подписка на событие для раздела удаляется, сам раздел также удаляется.
Подписка на раздел в домене совпадает с подпиской на любой другой ресурс Azure. Для идентификатора исходного ресурса укажите идентификатор домена событий, возвращенный при создании домена ранее. Чтобы указать раздел, на который вы хотите подписаться, добавьте /topics/<my-topic>
в конец идентификатора исходного ресурса. Чтобы создать подписку на события в области домена, которая принимает все события в домене, укажите идентификатор домена событий без указания каких-либо разделов.
Как правило, пользователь, которому вы предоставили доступ в предыдущем разделе, создаст подписку. Для упрощения этой статьи создайте подписку.
az eventgrid event-subscription create \
--name <event-subscription> \
--source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
--endpoint https://contoso.azurewebsites.net/api/updates
Если вам нужна тестовая конечная точка для подписки на события, вы всегда можете развернуть предварительно созданное веб-приложение , отображающее входящие события. Вы можете отправлять события на веб-сайт тестирования по адресу https://<your-site-name>.azurewebsites.net/api/updates
.
Разрешения, заданные для раздела, хранятся в идентификаторе Microsoft Entra и должны быть удалены явным образом. Удаление подписки на события не отменяет пользователям доступ к созданию подписок на события, если у них есть доступ на запись в разделе.
Публикация событий в домене сетки событий
Публикация событий в домен совпадает с публикацией в настраиваемый раздел. Тем не менее вместо публикации в пользовательском разделе публикуйте все события на конечную точку домена. В данных события JSON укажите раздел, к которому вы хотите добавить события. Следующий массив событий приведет к публикации события с идентификатором "id": "1111"
в раздел demotopic1
, а событие с идентификатором "id": "2222"
будет отправлено в раздел demotopic2
:
[{
"topic": "demotopic1",
"id": "1111",
"eventType": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"eventTime": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"dataVersion": "1.0"
},
{
"topic": "demotopic2",
"id": "2222",
"eventType": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"eventTime": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"dataVersion": "1.0"
}]
Чтобы получить конечную точку домена с помощью Azure CLI, выполните следующую команду:
az eventgrid domain show \
-g <my-resource-group> \
-n <my-domain>
Чтобы получить ключи, которые будет использовать домен, выполните команду ниже:
az eventgrid domain key list \
-g <my-resource-group> \
-n <my-domain>
Затем используйте предпочтительный метод создания запроса HTTP POST для публикации событий в домен Сетки событий.
Примечание.
Для примеров, использующих пакеты SDK для языка программирования для публикации событий в домене сетки событий, используйте следующие ссылки:
Поиск списков разделов или подписок
Для поиска и администрирования большого числа разделов или подписок API-интерфейсы Сетки событий поддерживают вывод списков и разбивку на страницы.
Использование CLI
Например, следующая команда выводит все разделы с именем, содержащим mytopic
.
az eventgrid topic list --odata-query "contains(name, 'mytopic')"
Дополнительные сведения об этой команде см. в разделе az eventgrid topic list
.
Следующие шаги
- Общие понятия, касающиеся доменов событий, и сведения об их эффективности см. в этой статье.