快速入門:使用 Azure CLI 和 Event Grid 將自訂事件路由至 Azure 事件中樞

Azure 事件方格是高度可調整且無伺服器的事件訊息代理程式,您可以使用事件搭配該代理程式來整合應用程式。 事件方格會將事件傳遞至支援的事件處理常式,而 Azure 事件中樞就是其中之一。 在本文中,您會使用 Azure CLI 來執行下列步驟:

  1. 建立 Event Grid 自訂主題。
  2. 建立自訂主題的 Azure 事件中樞訂用帳戶。
  3. 將範例事件傳送至自訂主題。
  4. 確認這些事件已傳遞至事件中樞。

如果您沒有 Azure 訂用帳戶,請在開始之前先建立 Azure 免費帳戶

建立資源群組

Event Grid 為 Azure 資源,必須放入 Azure 資源群組中。 資源群組是在其中部署與管理 Azure 資源的邏輯集合。

使用 az group create 命令來建立資源群組。 下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。

注意

選取 CLI 範例旁邊的 [試用],在右窗格中啟動 Cloud Shell。 選取 [複製] 按鈕以複製命令,並將其貼到 Cloud Shell 視窗中,然後按 ENTER 鍵執行命令。

az group create --name gridResourceGroup --location westus2

啟用事件方格資源提供者

  1. 如果您先前在 Azure 訂用帳戶中從未使用過事件方格,可能必須註冊事件方格資源提供者。 執行下列命令以註冊提供者:

    az provider register --namespace Microsoft.EventGrid
    
  2. 可能需要一點時間才能完成註冊。 若要檢查狀態,請執行下列命令:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    registrationStateRegistered 時,代表已準備好繼續進行。

建立自訂主題

事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。 下列範例可在您的資源群組中建立自訂主題。 以自訂主題的唯一名稱取代 <topic_name>。 事件方格主題名稱必須是唯一的,因為它由網域名稱系統 (DNS) 項目表示。

  1. 指定主題的名稱。

    topicname="<TOPIC NAME>"
    
  2. 執行下列命令來建立主題。

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

建立事件中樞

訂閱自訂主題之前,讓我們建立事件訊息的端點。 您將建立用來收集事件的事件中樞。

  1. 指定事件中樞命名空間的唯一名稱。

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. 執行下列命令以建立事件中樞命名空間,以及在該命名空間中名為 demohub 的事件中樞。

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

訂閱自訂主題

您可訂閱事件方格主題,告知事件方格您想要追蹤的事件。下列範例可訂閱您所建立的自訂主題,以及傳遞端點的事件中樞資源識別碼。 端點的格式如下:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

下列指令碼會取得事件中樞的資源識別碼,並訂閱事件方格主題。 它會將端點類型設為 eventhub,然後使用端點的事件中樞識別碼。

hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name subtoeventhub \
  --endpoint-type eventhub \
  --endpoint $hubid

建立事件訂用帳戶的帳戶必須具有事件中樞的寫入權限。

將事件傳送至您的自訂主題

讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 首先,讓我們取得自訂主題的 URL 和金鑰。

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

若要簡化這篇文章,您可使用要傳送至自訂主題的範例事件資料。 一般而言,應用程式或 Azure 服務就會傳送事件資料。 CURL 是可傳送 HTTP 要求的公用程式。 本文使用 CURL 將事件傳送到自訂主題。 下列範例會將三個事件傳送至事件方格主題:

for i in 1 2 3
do
   event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

在 Azure 入口網站中事件中樞命名空間的 [概觀] 頁面上,請注意事件方格會將這三個事件傳送至事件中樞。 您會在 demohub 事件中樞執行個體頁面上的 [概觀] 頁面上看到相同的圖表。

Image showing the portal page with incoming message count as 3.

一般而言,您會建立從事件中樞擷取事件的應用程式。 若要建立從事件中樞取得訊息的應用程式,請參閱:

清除資源

如果您打算繼續使用此事件,請勿清除在本文中建立的資源。 否則,請使用下列命令來刪除您在本文建立的資源。

az group delete --name gridResourceGroup

下一步

您現在知道如何建立主題和事件訂閱,深入了解 Event Grid 可協助您:

請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。