本文提供逐步指示,以 CloudEvents JSON 格式 將事件發佈至 Azure 事件方格,並使用推送傳遞模型傳遞這些事件。 具體來說,您會將事件發佈至事件方格中的命名空間主題,並將這些事件從事件訂用帳戶推送至 Webhook 處理程式目的地。 如需推送傳遞模型的詳細資訊,請參閱 推送傳遞概觀。
備註
Azure 事件方格命名空間目前支援共用存取簽章 (SAS) 令牌和存取密鑰驗證。
如果您沒有 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 事件方格檢視器] 視窗保持開啟,讓您可以在事件張貼時看到事件。
建立事件訂閱
建立事件訂閱,將其傳遞模式設定為 Push,其支援 推送傳遞。
- 從使用 [事件中樞命名空間] 頁面開啟的索引標籤或 視窗,切換至使用 [事件方格命名空間] 頁面開啟的索引標籤或視窗。
- 在 [事件方格命名空間] 頁面上,選取左側功能表上的 [主題]。
- 在 [ 主題] 頁面上,選取您在上一個步驟中建立的主題。
- 選取命令行上的 [+ 訂用帳戶 ]。
- 在 [建立事件訂閱] 頁面上,遵循下列步驟:
在 [ 基本] 索引標籤中,輸入事件訂閱 的名稱 。
選擇 推送 作為事件傳遞模式。
針對 [端點類型],選取 [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 事件中樞。