Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文介绍以下操作:
- 创建事件网格域
- 订阅 Event Grid 主题
- 列出密钥
- 将事件发布到域
若要了解事件域,请参阅了解用于管理事件网格主题的事件域。
创建事件域
若要管理大型主题集,请创建一个事件域。
az eventgrid domain create \
-g <my-resource-group> \
--name <my-domain-name> \
-l <location>
创建成功后会返回以下值:
{
"endpoint": "https://<my-domain-name>.chinanorth2-1.eventgrid.azure.cn/api/events",
"id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
"inputSchema": "EventGridSchema",
"inputSchemaMapping": null,
"location": "chinanorth2",
"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 CLI命令限制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 资源相同。 对于源资源 ID,指定之前在创建域时返回的事件域 ID。 若要指定想要订阅的主题,请将 /topics/<my-topic> 添加到源资源 ID 的末尾。 若要创建接收域中的所有事件的域范围事件订阅,请指定事件域 ID 且不要指定任何主题。
通常情况下,将由你在前面的部分中向其授予了访问权限的用户创建订阅。 为了简化本文,由你来创建订阅。
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.chinacloudsites.cn/api/updates
如果需要测试终结点来订阅事件,您可以随时部署一个预构建的 Web 应用 来显示传入的事件。 您可以将您的事件发送到您的测试网站 (https://<your-site-name>.chinacloudsites.cn/api/updates)。
为主题设置的权限存储在Microsoft Entra ID中,必须显式删除。 如果用户对主题拥有写访问权限,则删除事件订阅不会撤销用户创建事件订阅的访问权限。
将事件发布到事件网格域
将事件发布到域的过程与发布到自定义主题相同。 但是,不是发布到自定义主题,而是将所有事件发布到域终结点。 在 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,将事件发布到事件网格域。
搜索关于主题或订阅的列表
若要搜索和管理大量主题或订阅,事件网格的 API 支持列表和分页。
使用命令行界面 (CLI)
例如,以下命令列出名称包含 mytopic 的所有主题。
az eventgrid topic list --odata-query "contains(name, 'mytopic')"
有关此命令的详细信息,请参阅az eventgrid topic list。
后续步骤
- 有关事件域中的高级概念及其作用的详细信息,请参阅事件域的概念概述。