使用命名空間主題將事件傳遞至 Webhook - Azure 入口網站 (預覽)
文章提供以 CloudEvents JSON 格式將事件發佈到 Azure 事件方格,以及透過使用推送傳遞模型來傳遞這些事件的逐步指示。 具體來說,您會將事件發佈至事件方格中的命名空間主題,並將這些事件從事件訂用帳戶推送至 Webhook 處理程式目的地。 如需推送傳遞模型的詳細資訊,請參閱推送傳遞概觀。
注意
Azure 事件方格命名空間目前支援共用存取簽章 (SAS) 權杖和存取金鑰驗證。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
建立事件方格命名空間
事件方格命名空間會提供您用來張貼事件的使用者定義端點。 下列範例使用 Azure Cloud Shell 中的 Bash,在您的資源群組中建立命名空間。 命名空間名稱必須是唯一的,因為它是網域名稱系統 (DNS) 項目的一部分。
瀏覽至 Azure 入口網站。
在主題的搜尋列中,輸入
Event Grid Namespaces
,然後從結果中選取 [Event Grid Namespaces
]。在 [建立命名空間] 頁面上,遵循下列步驟:
部署成功後,在 [部署] 頁面上選取 [移至資源]。
取得存取金鑰
在命名空間中建立主題
建立主題,以保存發佈至命名空間端點的所有事件。
建立訊息端點
訂閱事件之前,讓我們建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式,此應用程式會顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
選取 [部署至 Azure],將解決方案部署至您的訂用帳戶。
在 [自訂部署] 頁面上,執行下列步驟:
[資源群組] 請選取您在建立儲存體帳戶時所建立的資源群組。 當您完成本教學課程之後,您可以藉由刪除資源群組,更輕鬆地進行清除。
在 [網站名稱] 輸入 Web 應用程式的名稱。
在 [裝載方案名稱] 輸入要用來裝載 Web 應用程式的 App Service 方案名稱。
選取 [檢閱 + 建立]。
在 [檢閱 + 建立] 頁面上,選取 [建立]。
部署需要數分鐘的時間才能完成。 在 [部署] 頁面上,選取 [前往資源群組]。
在 [資源群組] 頁面上的資源清單中,選取您所建立的 Web 應用程式。 您也會在此清單中看到 App Service 方案和儲存體帳戶。
在 Web 應用程式的 [App Service] 頁面上,選取瀏覽至網站的 URL。 URL 應該是此格式:
https://<your-site-name>.azurewebsites.net
。確認您看到網站,但尚未張貼任何事件。
重要
讓 [Azure 事件方格檢視器] 視窗保持開啟,讓您可以在事件張貼時看到事件。
建立事件訂閱
建立一個事件訂用帳戶,將其傳遞模式設為支援推送傳遞的 [推送]。
- 從使用 [事件中樞命名空間] 頁面開啟的索引標籤或 視窗,切換至使用 [事件方格命名空間] 頁面開啟的索引標籤或視窗。
- 在 [事件方格命名空間] 頁面上,選取左側功能表上的 [主題]。
- 在 [主題] 頁面上,選取您在上一個步驟中所建立的主題。
- 選取命令列上的 [+ 訂閱]。
- 在 [建立事件訂閱] 頁面上,遵循下列步驟:
在 [基本] 索引標籤中,輸入事件訂閱的名稱。
選取 [推送] 以取得事件傳遞模式。
針對 [端點類型],選取 [Webhook]。
選取 [設定端點]。
在 [Web Hook ] 頁面上,指定端點 (例如:
https://spegridsite0520.azurewebsites.net/api/updates
),如下列範例所示,然後選取 [ 確認選取專案]。回到 [ 建立訂用帳戶] 頁面上,選取 [ 建立]。
將事件傳送至您的主題
現在,依照本節中的步驟,將範例事件傳送至命名空間主題。
宣告變數
在 Azure 入口網站中啟動 Cloud Shell。 切換至 Bash。
執行下列命令來宣告變數來保存資源組名。 將取代
RESOUREGROUPNAME
為您的 Azure 資源群組名稱。resource_group=RESOURCEGROUPNAME
在 Cloud Shell 中,執行下列命令來宣告變數來保存命名空間名稱。 以事件方格命名空間的名稱取代
NAMESPACENAME
。namespace=NAMESPACENAME
執行下列命令來宣告變數,以保存您稍早注意到的存取密鑰值。 將取代
ACCESSKEY
為事件方格命名空間的存取金鑰值。key=ACCESSKEY
在 Cloud Shell 中,執行下列命令來宣告變數來保存命名空間名稱。
topic=TOPICNAME
發佈事件
擷取命名空間主機名稱。 您可以用它來撰寫事件傳送到的命名空間 HTTP 端點。 下列作業在 API 版本
2023-06-01-preview
首次提供。 您也可以從事件方格命名空間的 [概觀] 頁面,取得 Azure 入口網站 中的主機名。publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
建立符合範例 CloudEvents 規範的事件:
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
data
元素是您事件的承載。 任何語式正確的 JSON 都可以進入這個欄位。 如需可在事件中放入的屬性 (也稱為內容屬性) 的詳細資訊,請參閱 CloudEvents 規格。使用 CURL 將事件傳送至主題。 CURL 是可傳送 HTTP 要求的公用程式。
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
確認 Azure 事件方格檢視器已收到該事件
確認 Azure 事件方格檢視器 Web 應用程式會顯示從事件方格收到的事件。
相關內容
在此快速入門中,您已使用 Webhook 作為事件處理常式。 如需使用 Azure 事件中樞作為事件處理常式的快速入門,請參閱使用命名空間主題,將事件傳遞至 Azure 事件中樞。