在本文中,您會使用 Azure CLI 在 Azure 事件方格 中建立自定義主題、訂閱自定義主題,以及觸發範例事件來檢視結果。
通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,為了簡化本文,您會將範例事件傳送至收集並顯示訊息的 Web 應用程式。 當您完成時,您會看到事件數據已傳送至 Web 應用程式,如下圖所示:
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
- 本文需要 2.0.70 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
- 如果您不熟悉 Azure 事件方格,請參閱什麼是 Azure 事件方格,以取得服務概觀,再進行本教學課程。
建立資源群組
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 訂用帳戶中使用事件方格,您可能需要註冊 Event Grid 資源提供者。 執行下列命令以註冊提供者:
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 可協助您:
請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。