快速入門:使用 Azure CLI 和事件方格將自訂事件路由傳送至 Web 端點
在本文中,您會使用 Azure CLI 在 Azure 事件方格 中建立自定義主題、訂閱自定義主題,並觸發事件來檢視結果。
注意
如果您不熟悉 Azure 事件方格,請參閱什麼是 Azure 事件方格,以取得服務概觀,再進行本教學課程。
通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,若要簡化這篇文章,您可將事件傳送至可收集及顯示訊息的 Web 應用程式。
當您完成時,您會看到事件資料已傳送至 Web 應用程式。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
在 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.70 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
建立資源群組
Event Grid 為 Azure 資源,必須放入 Azure 資源群組中。 資源群組是在其中部署與管理 Azure 資源的邏輯集合。
使用 az group create 命令來建立資源群組。 下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。 如果您選取 [試用],您會在右側窗格中看到 [Azure Cloud Shell] 視窗。 然後,選取 [複製] 以複製命令,並將其貼到 Azure Cloud Shell 視窗中,然後按 ENTER 鍵執行命令。 視需要變更資源群組的名稱和位置。
az group create --name gridResourceGroup --location westus2
啟用事件方格資源提供者
如果您先前在 Azure 訂用帳戶中從未使用過事件方格,可能必須註冊事件方格資源提供者。 執行下列命令以註冊提供者:
az provider register --namespace Microsoft.EventGrid
可能需要一點時間才能完成註冊。 若要檢查狀態,請執行下列命令:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
當
registrationState
是Registered
時,代表已準備好繼續進行。
建立自訂主題
事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。 下列範例會在 Azure Cloud Shell 中使用 Bash 在資源群組中建立自訂主題。 以主題的唯一名稱取代 <your-topic-name>
。 自訂主題名稱必須是唯一的,因為它是網域名稱系統 (DNS) 項目的一部分。 此外,它必須介於 3 到 50 個字元之間,且只包含值 a-z、A-Z、0-9 和 "-"
複製下列命令、指定主題的名稱,然後按 ENTER 執行命令。
topicname=<your-topic-name>
使用
az eventgrid topic create
命令來建立自訂主題。az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
建立訊息端點
訂閱自訂主題之前,讓我們建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式,此應用程式會顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
複製下列命令、指定 Web 應用程式 (事件方格檢視器樣本)的名稱,然後按 ENTER 執行命令。 以 Web 應用程式的唯一名稱取代
<your-site-name>
。 Web 應用程式名稱必須是唯一的,因為它是 DNS 項目的一部分。sitename=<your-site-name>
執行
az deployment group create
以使用 Azure Resource Manager 範本部署 Web 應用程式。az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
部署可能需要幾分鐘的時間才能完成。 成功部署之後,檢視 Web 應用程式,確定它正在執行。 在網頁瀏覽器中,瀏覽至:https://<your-site-name>.azurewebsites.net
您現在應該會看到沒有顯示任何訊息的網站。
訂閱自訂主題
您會訂閱事件方格主題,以將您要追蹤的事件與要傳送那些事件的位置告訴事件方線。 下列範例可訂閱您所建立的自訂主題,從 Web 應用程式傳遞 URL 作為事件通知的端點。
Web 應用程式的端點必須包含的尾碼 /api/updates/
。
複製下列命令,以您在上一個步驟中建立的 Web 應用程式名稱取代
$sitename
,然後按 ENTER 鍵來執行命令。endpoint=https://$sitename.azurewebsites.net/api/updates
執行下列命令以取得您所建立主題的資源識別碼。
topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
執行下列命令以使用端點建立自訂主題的訂閱。
az eventgrid event-subscription create \ --source-resource-id $topicresourceid \ --name demoViewerSub \ --endpoint $endpoint
再次檢視您的 Web 應用程式,並注意訂閱驗證事件是否已傳送至其中。 選取眼睛圖示以展開事件資料。 事件方格會傳送驗證事件,以便端點確認接收事件資料。 Web 應用程式包括用於驗證訂閱的程式碼。
將事件傳送至您的自訂主題
讓我們觸發事件以了解 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 服務就會傳送事件資料。 下列範例會建立範例事件資料:
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"} ]'
JSON 的 data
元素是您的事件承載。 任何語式正確的 JSON 都可以進入這個欄位。 您也可以使用主體欄位進行進階路由傳送或篩選。
CURL 是可傳送 HTTP 要求的公用程式。 本文使用 CURL 將事件傳送到主題。
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
您已觸發此事件,而 Event Grid 會將訊息傳送至您在訂閱時設定的端點。 檢視您的 Web 應用程式,以查看您剛剛傳送的事件。
[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]
清除資源
如果您打算繼續使用此事件或事件檢視器應用程式,請勿清除在本文中建立的資源。 否則,請使用下列命令來刪除您在本文建立的資源。
az group delete --name gridResourceGroup
下一步
您現在知道如何建立主題和事件訂閱,深入了解 Event Grid 可協助您:
請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。