共用方式為


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

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

注意

如果您不熟悉 Azure 事件方格,請參閱什麼是 Azure 事件方格,以取得服務的概觀,再進行本教學課程。

必要條件

  • 本文需要 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 編譯和執行應用程式。

重要

我們會使用 連接字串 向 Azure 轉寄命名空間進行驗證,讓教學課程保持簡單。 建議您在生產環境中使用Microsoft Entra ID 驗證。 使用應用程式時,您可以啟用應用程式的受控識別,並在轉送命名空間上指派適當的角色(Azure 轉送擁有者、Azure 轉送接聽程式或 Azure 轉送寄件者)。 如需詳細資訊,請參閱 使用 Microsoft Entra ID 驗證受控識別,以存取 Azure 轉播資源

將事件傳送至主題

讓我們觸發事件以了解 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 可協助您: