共用方式為


使用事件網域管理主題並發佈事件

本文說明如何:

  • 建立事件方格網域
  • 訂閱事件方格主題
  • 列出金鑰
  • 將事件發佈至網域

若要深入了解事件網域,請參閱了解用於管理事件方格主題的事件網域

建立事件網域

若要管理大量主題集合,請建立事件網域。

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"
}

請記下 endpointid,因為管理網域和發佈事件時需要這些項目。

管理主題的存取權

您可以透過角色指派來管理主題的存取權。 角色指派會使用 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

將 Resource Manager 範本部署至 Azure 的按鈕。

為主題設定的權限會儲存在 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 將您的事件發佈至事件方格網域。

注意

如需使用程式設計語言 SDK 將事件發佈至事件方格網域的範例,請使用下列連結:

搜尋主題或訂用帳戶的清單

若要搜尋和管理大量的主題或訂用帳戶,事件方格 API 支援清單和分頁。

使用 CLI

例如,下列命令會列出名稱包含 mytopic 的所有主題。

az eventgrid topic list --odata-query "contains(name, 'mytopic')"

如需此命令的詳細資訊,請參閱az eventgrid topic list

下一步