使用 Azure 入口網站 和 Azure 事件方格 將自定義事件路由傳送至 Web 端點
事件方格是完全受控的服務,可讓您輕鬆地跨許多不同的 Azure 服務和應用程式管理事件。 它可簡化建置事件驅動和無伺服器應用程式。 如需服務的概觀,請參閱 事件方格概觀。
在本文中,您會使用 Azure 入口網站 來執行下列工作:
- 建立自定義主題。
- 訂閱自定義主題。
- 觸發事件。
- 檢視結果。 通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,若要簡化這篇文章,您可將事件傳送至可收集及顯示訊息的 Web 應用程式。
必要條件
如果您沒有 Azure 訂用帳戶,請在開始之前先建立 Azure 免費帳戶。
註冊事件方格資源提供者
除非您之前曾使用 Event Grid,否則您必須註冊事件方格資源提供者。 如果您之前已使用 Event Grid,請跳至下一節。
在 Azure 入口網站 中,執行下列步驟:
在左側功能表上,選取 [ 訂用帳戶]。
從訂用帳戶清單中選取您要用於事件方格的訂用帳戶。
在 [訂用帳戶] 頁面上,選取左側功能表上 設定 下的 [資源提供者]。
搜尋 Microsoft.EventGrid,並確認 [狀態 ] 為 [未註冊]。
在提供者清單中選取 [Microsoft.EventGrid ]。
選取 命令行上的 [註冊 ]。
重新整理以確定 Microsoft.EventGrid 的狀態已變更為 [已註冊]。
建立自訂主題
事件方格主題提供您張貼事件的使用者定義端點。
登入 Azure 入口網站。
在主題的搜尋列中,輸入事件方格主題,然後從下拉式清單中選取 [事件方格主題]。
在 [ 事件方格主題] 頁面上,選取 工具欄上的 [+ 建立 ]。
在 [ 建立主題 ] 頁面上,遵循下列步驟:
選取您的 Azure 訂用帳戶。
選取現有的資源群組或選取 [新建],然後輸入資源群組的名稱。
提供自定義主題的唯 一名稱 。 主題名稱必須是唯一的,因為它是由 DNS 專案表示。 請勿使用影像中顯示的名稱。 相反地,請建立您自己的名稱 - 它必須介於 3-50 個字元之間,且只包含 a-z、A-Z、0-9 和 “-” 的值。
選取事件方格主題的位置。
選取頁面底部的 [檢閱 + 建立] 。
在 [建立主題] 頁面的 [檢閱 + 建立] 索引卷標上,選取 [建立]。
部署成功之後,選取 [移至資源 ] 以流覽至主題的 [事件方格主題 ] 頁面。 保持此頁面開啟。 您稍後會在快速入門中使用。
注意
為了讓快速入門保持簡單,您只會 使用 [基本] 頁面來建立主題。 如需在精靈其他頁面上設定網路、安全性和數據落地設定的詳細步驟,請參閱 建立自定義主題。
建立訊息端點
建立自定義主題的訂用帳戶之前,請先建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式以顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
在文章頁面中,選取 [部署至 Azure ] 以將解決方案部署至您的訂用帳戶。 在 Azure 入口網站中,提供參數的值。
在 [ 自定義部署] 頁面上,執行下列步驟:
針對 [ 資源群組],選取您在建立記憶體帳戶時建立的資源群組。 藉由刪除資源群組,完成教學課程之後,您就能更輕鬆地清除。
針對 [網站名稱],輸入 Web 應用程式的名稱。
針對 [ 主控方案名稱],輸入用來裝載 Web 應用程式之 App Service 方案的名稱。
選取 [檢閱 + 建立]。
在 [檢閱 + 建立] 頁面上,選取 [建立]。
部署需要幾分鐘的時間才能完成。 在入口網站中選取 [警示](鈴鐺圖示),然後選取 [移至資源群組]。
在 [ 資源群組 ] 頁面上的資源清單中,選取您建立的 Web 應用程式。 您也會在此清單中看到 App Service 方案和記憶體帳戶。
在 Web 應用程式的 [App Service ] 頁面上,選取要瀏覽至網站的 URL。 URL 應該是此格式:
https://<your-site-name>.azurewebsites.net
。確認您看到網站,但尚未張貼任何事件。
訂閱自定義主題
您可以訂閱事件方格主題,告知事件方格您想要追蹤的事件,以及傳送事件的位置。
現在,在自定義主題的 [事件方格主題 ] 頁面上,選取 工具欄上的 [+ 事件訂用帳戶 ]。
在 [ 建立事件訂閱 ] 頁面上,遵循下列步驟:
輸入事件訂用帳戶的名稱。
針對 [端點類型] 選取 [Web Hook]。
選擇 [ 選取端點]。
針對 Web 攔截端點,提供 Web 應用程式的 URL,並將 新增
api/updates
至首頁 URL。 選取 [確認選取項目]。回到 [ 建立事件訂閱 ] 頁面上,選取 [ 建立]。
再次檢視您的 Web 應用程式,並注意訂閱驗證事件是否已傳送至其中。 選取眼睛圖示以展開事件資料。 事件方格會傳送驗證事件,以便端點確認接收事件資料。 Web 應用程式包括用於驗證訂閱的程式碼。
將事件傳送至您的主題
現在,讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 使用 Azure CLI 或 PowerShell 將測試事件傳送至您的自定義主題。 一般而言,應用程式或 Azure 服務會傳送事件數據。
第一個範例使用 Azure CLI。 它會取得自定義主題的 URL 和金鑰,以及範例事件數據。 針對 使用您的自定義主題名稱 <topic name>
。 它會建立範例事件數據。 data
JSON 的 元素是您事件的承載。 任何格式正確的 JSON 都可以在此欄位中執行。 您也可以使用主旨欄位進行進階路由和篩選。 CURL 是傳送 HTTP 要求的公用程式。
Azure CLI
在 Azure 入口網站 中,選取 [Cloud Shell]。 Cloud Shell 會在網頁瀏覽器的底部窗格中開啟。
選取 Cloud Shell 視窗左上角的 Bash 。
執行下列命令以取得主題的端點:複製並貼上命令之後,請先更新主題名稱和資源組名,再執行命令。 您會將範例事件發佈至本主題端點。
endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
執行下列命令以取得自定義主題的金鑰:複製並貼上命令之後,請先更新主題名稱和資源組名,再執行命令。 這是事件方格主題的主鍵。 若要從 Azure 入口網站 取得此金鑰,請切換至 [事件方格主題] 頁面的 [存取密鑰] 索引標籤。 若要將事件張貼至自定義主題,您需要存取金鑰。
key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
使用事件定義複製下列語句,然後按 ENTER 鍵。
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 命令來張貼事件:在 命令中,
aeg-sas-key
標頭會設定為您稍早取得的存取密鑰。curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
第二個範例會使用PowerShell來執行類似的步驟。
在 Azure 入口網站 中,選取 [Cloud Shell] (或者移至
https://shell.azure.com/
)。 Cloud Shell 會在網頁瀏覽器的底部窗格中開啟。在 Cloud Shell 中,選取 Cloud Shell 視窗左上角的 PowerShell。 請參閱 Azure CLI 一節中的 Cloud Shell 視窗映像範例。
設定下列變數。 複製並貼上每個命令之後,請先更新主題名稱和資源組名,再執行命令:
資源群組:
$resourceGroupName = "<resource group name>"
事件方格主題名稱:
$topicName = "<topic name>"
執行下列命令以取得主題的 端點 和 金鑰 :
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
準備事件。 在 Cloud Shell 視窗中複製並執行 語句。
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct body using Hashtable $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert event body from Hashtable to JSON Object #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
使用 Invoke-WebRequest Cmdlet 來傳送事件。
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
在事件方格查看器中確認
您已觸發此事件,而 Event Grid 會將訊息傳送至您在訂閱時設定的端點。 檢視您的 Web 應用程式,以查看您剛剛傳送的事件。
清除資源
如果您打算繼續處理此事件,請勿清除本文中建立的資源。 否則,請刪除您在本文中建立的資源。
選取 左側功能表上的 [資源群組 ]。 如果您沒有在左側功能表上看到,請選取 左側功能表上的 [所有服務 ],然後選取 [ 資源群組]。
選取要啟動 [資源群組] 頁面的資源群組 。
選取工具列上的 [ 刪除資源群組 ]。
輸入資源群組的名稱以確認刪除,然後選取 [ 刪除]。
您在映像中看到的其他資源群組是由 Cloud Shell 視窗所建立和使用。 如果您稍後不打算使用 Cloud Shell 視窗,請將其刪除。
下一步
既然您已瞭解如何建立自定義主題和事件訂用帳戶,請深入瞭解事件方格可協助您執行的動作:
請參閱下列範例,以瞭解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。