在這個快速入門中,你可以使用 Azure CLI 在 Azure 事件方格 中建立自訂主題,訂閱該自訂主題,並觸發範例事件以查看結果。
通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,為了簡化這個快速入門,你會將範例事件傳送到一個收集並顯示訊息的網頁應用程式。 完成時,你會在網頁應用程式中看到事件資料,如下圖所示:
如果您沒有 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。
- 此快速入門需要 Azure CLI 2.0.70 或更新版本。 如果您使用 Azure Cloud Shell,則已安裝最新版本。
- 如果你是 Azure 事件方格 的新手,在開始這個快速入門前,請先看看 What is Azure 事件方格 以獲得服務的概覽。
建立資源群組
Event Grid 主題是 Azure 資源,必須放入 Azure 資源群組。 資源群組是一個邏輯集合,你可以部署和管理 Azure 資源。
使用 az group create 命令來建立資源群組。 下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。 如果你想,可以更改資源群組名稱和地點。
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
建立訊息端點
訂閱自訂主題之前,請建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 為了簡化這個快速入門,可以部署一個 預先建構的網頁應用程式 ,顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
複製以下指令,指定網頁應用程式名稱(Event Grid Viewer 範例),然後選擇 Enter 執行該指令。 以 Web 應用程式的唯一名稱取代
<your-site-name>。 Web 應用程式名稱必須是唯一的,因為它是 DNS 項目的一部分。sitename=<your-site-name>請使用 Azure Resource Manager 範本執行
az deployment group create以部署網頁應用程式。az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
部署可能需要幾分鐘的時間才能完成。 部署成功之後,請檢視您的 Web 應用程式,以確定它正在執行中。 在網頁瀏覽器中,瀏覽至:https://<your-site-name>.azurewebsites.net
您應該會看到沒有顯示任何訊息的網站。
訂閱自訂主題
您可藉由訂閱 Event Grid 主題,告知 Event Grid 您想要追蹤哪些事件,以及要將這些事件傳送到哪裡。 下列範例會訂閱您建立的自訂主題,並將您的 Web 應用程式 URL 傳遞為事件通知的端點。
您的 Web 應用程式端點必須包含尾碼 /api/updates/。
複製以下指令,替換
$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 應用程式,並注意訂閱驗證事件是否已傳送至其中。 選取眼睛圖示以展開事件資料。 Event Grid 會傳送驗證事件,讓端點確認自己是否要接收事件資料。 Web 應用程式包括用於驗證訂閱的程式碼。
將事件傳送至您的自訂主題
讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 首先,取得自訂主題的網址和金鑰。
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
您已觸發事件,而事件方格會將訊息傳送至您在訂閱時設定的端點。 檢視您的 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 --yes --no-wait
相關內容
現在您已了解如何建立主題和事件訂閱,接著請進一步了解 Event Grid 可協助您完成哪些工作:
想了解如何在不同程式語言中將事件發佈到事件網格,以及從事件網格中消費事件,請參考以下範例: