教學課程:使用 Azure CLI 和事件方格將自訂事件路由至 Azure 轉送混合式連線
Azure 轉送混合式連線是支援的事件處理常式之一。 當您需要從沒有公用端點的應用程式處理事件時,您可以使用混式連線作為事件處理常式。 這些應用程式可能位在您公司的企業網路中。 在本文中,您可使用 Azure CLI 建立自訂主題、訂閱自訂主題,以及觸發事件來檢視結果。 您將事件傳送到混合式連線。
必要條件
- 本文假設您已經有混合式連線和接聽項應用程式。 若要開始使用混合式連線,請參閱開始使用轉送混合式連線 - .NET (英文),或開始使用轉送混合式連線 - 節點 (英文)。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
- 本文需要 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 混合式連線取用者範例會執行該作業。 您已經完成必要的步驟。
請確定您有 Visual Studio 2019 或更新版本。
將存放庫複製到本機電腦。
在 Visual Studio 中載入 HybridConnectionConsumer 專案。
在 Program.cs 中,以您建立的轉送連接字串和混合式連線名稱取代
<relayConnectionString>
和<hybridConnectionName>
。從 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 可協助您: