使用事件網域管理主題和發佈事件
本文說明如何:
- 建立事件方格網域
- 訂閱事件方格主題
- 列出索引鍵
- 將事件發佈至網域
若要瞭解事件網域,請參閱 瞭解管理事件方格主題的事件網域。
建立事件網域
若要管理大型主題集,請建立事件網域。
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 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 資源相同。 針對來源資源標識碼,指定稍早建立網域時傳回的事件網域標識符。 若要指定您想要訂閱的主題,請將 新增 /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
如果您需要測試端點來訂閱事件,您隨時都可以部署 預先建置的 Web 應用程式 來顯示傳入事件。 您可以在將事件傳送至測試網站 https://<your-site-name>.azurewebsites.net/api/updates
。
為主題設定的許可權會儲存在 Microsoft Entra ID 中,而且必須明確刪除。 刪除事件訂用帳戶並不會撤銷使用者在主題上寫入存取權時建立事件訂閱的存取權。
將事件發佈至事件方格網域
將事件發佈至網域與發佈至自定義主題相同。 不過,您不要發佈至自定義主題,而是將所有事件發佈至網域端點。 在 JSON 事件資料中,您可以指定您希望事件移至的主題。 下列事件陣列會導致事件與 主題搭配"id": "1111"
,而具有 "id": "2222"
的事件則會傳送至 topic demotopic2
:demotopic1
[{
"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
。
下一步
- 如需事件網域中高層級概念及其用途的詳細資訊,請參閱 事件網域的概念概觀。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應