教學課程:使用 Azure CLI 和事件方格將自訂事件路由至 Azure 轉送混合式連線

Azure Event Grid 是一項雲端事件服務。 Azure 轉送混合式連線是支援的事件處理常式之一。 當您需要從沒有公用端點的應用程式處理事件時,您可以使用混式連線作為事件處理常式。 這些應用程式可能位在您公司的企業網路中。 在本文中,您可使用 Azure CLI 建立自訂主題、訂閱自訂主題,以及觸發事件來檢視結果。 您將事件傳送到混合式連線。

必要條件

  • 本文需要 2.0.56 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。

建立資源群組

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

使用 az group create 命令來建立資源群組。

下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。

az group create --name gridResourceGroup --location westus2

建立自訂主題

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

az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup

訂閱自訂主題

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

/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Relay/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>

下列指令碼會取得轉送命名空間的資源識別碼。 它會建構混合式連線的識別碼,並訂閱事件方格主題。 此指令碼會將端點類型設為 hybridconnection,並為端點使用混合型連線識別碼。

relaynsname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>

relayid=$(az relay namespace show --resource-group $relayrg --name $relaynsname --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint-type hybridconnection \
  --endpoint $hybridid \
  --expiration-date "<yyyy-mm-dd>"

請留意到已針對訂閱設定到期日

建立應用程式來處理事件

您需要可以從混合式連線擷取事件的應用程式。 適用於 C# 的 Microsoft Azure Event Grid 混合式連線取用者範例會執行該作業。 您已經完成必要的步驟。

  1. 請確定您有 Visual Studio 2019 或更新版本。

  2. 將存放庫複製到本機電腦。

  3. 在 Visual Studio 中載入 HybridConnectionConsumer 專案。

  4. 在 Program.cs 中,以您建立的轉送連接字串和混合式連線名稱取代 <relayConnectionString><hybridConnectionName>

  5. 從 Visual Studio 編譯和執行應用程式。

將事件傳送至主題

讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 本文說明如何使用 Azure CLI 來觸發事件。 或者,您可以使用 Event Grid 發行者應用程式

首先,讓我們取得自訂主題的 URL 和金鑰。 再次,將您的自訂主題名稱用於 <topic_name>

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

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

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

您的接聽項應用程式應該會收到事件訊息。

清除資源

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

az group delete --name gridResourceGroup

下一步

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