共用方式為


使用命名空間主題將事件傳遞至 Webhook - Azure 入口網站 (預覽)

文章提供以 CloudEvents JSON 格式將事件發佈到 Azure 事件方格,以及透過使用推送傳遞模型來傳遞這些事件的逐步指示。 具體來說,您會將事件發佈至事件方格中的命名空間主題,並將這些事件從事件訂用帳戶推送至 Webhook 處理程式目的地。 如需推送傳遞模型的詳細資訊,請參閱推送傳遞概觀

注意

Azure 事件方格命名空間目前支援共用存取簽章 (SAS) 權杖和存取金鑰驗證。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

建立事件方格命名空間

事件方格命名空間會提供您用來張貼事件的使用者定義端點。 下列範例使用 Azure Cloud Shell 中的 Bash,在您的資源群組中建立命名空間。 命名空間名稱必須是唯一的,因為它是網域名稱系統 (DNS) 項目的一部分。

  1. 瀏覽至 Azure 入口網站。

  2. 在主題的搜尋列中,輸入 Event Grid Namespaces,然後從結果中選取 [Event Grid Namespaces]。

    顯示 Azure 入口網站中搜尋列的螢幕擷取畫面。

  3. 在 [事件方格命名空間] 頁面上,選取命令列上的 [+ 建立]顯示 [事件方格命名空間] 頁面的螢幕擷取畫面,其中已選取命令列上的 [建立] 按鈕。

  4. 在 [建立命名空間] 頁面上,遵循下列步驟:

    1. 選取您要在其中建立命名空間的 [Azure 訂用帳戶]
    2. 選取 [建立新的] 或選取現有的資源群組,以建立新的資源群組。
    3. 輸入命名空間的名稱
    4. 選取您要在其中建立資源群組的 [位置]
    5. 然後,選取 [檢閱 + 建立]
      顯示 [建立命名空間] 頁面的螢幕擷取畫面。
    6. 在 [檢閱 + 建立] 頁面上,選取 [建立]
  5. 部署成功後,在 [部署] 頁面上選取 [移至資源]

取得存取金鑰

  1. 在 [事件方格命名空間] 頁面上,選取左側功能表上的 [存取金鑰]
  2. 選取存取金鑰旁的 [複製] 按鈕。 顯示 [事件方格命名空間] 頁面的螢幕擷取畫面,其中已選取 [存取金鑰] 索引標籤。
  3. 將存取金鑰儲存在某個位置。 您稍後會在本快速入門中使用此入口網站。

在命名空間中建立主題

建立主題,以保存發佈至命名空間端點的所有事件。

  1. 選取左側功能表上的 [主題]
  2. 在 [主題] 頁面上,選取命令列上的 [+ 主題]顯示 [主題] 頁面的螢幕擷取畫面。
  3. 在 [建立主題] 頁面上,遵循下列步驟:
    1. 輸入主題的名稱
    2. 選取 建立
      顯示 [建立主題] 頁面的螢幕擷取畫面。

建立訊息端點

訂閱事件之前,讓我們建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式,此應用程式會顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。

  1. 選取 [部署至 Azure],將解決方案部署至您的訂用帳戶。

    將 Resource Manager 範本部署至 Azure 的按鈕。

  2. 在 [自訂部署] 頁面上,執行下列步驟:

    1. [資源群組] 請選取您在建立儲存體帳戶時所建立的資源群組。 當您完成本教學課程之後,您可以藉由刪除資源群組,更輕鬆地進行清除。

    2. 在 [網站名稱] 輸入 Web 應用程式的名稱。

    3. 在 [裝載方案名稱] 輸入要用來裝載 Web 應用程式的 App Service 方案名稱。

    4. 選取 [檢閱 + 建立]。

      顯示 [自定義部署] 頁面的螢幕快照。

  3. 在 [檢閱 + 建立] 頁面上,選取 [建立]

  4. 部署需要數分鐘的時間才能完成。 在 [部署] 頁面上,選取 [前往資源群組]

    顯示部署成功頁面的螢幕快照,其中包含要移至資源群組的連結。

  5. 在 [資源群組] 頁面上的資源清單中,選取您所建立的 Web 應用程式。 您也會在此清單中看到 App Service 方案和儲存體帳戶。

    顯示資源群組中 Web 應用程式的選取專案螢幕快照。

  6. 在 Web 應用程式的 [App Service] 頁面上,選取瀏覽至網站的 URL。 URL 應該是此格式: https://<your-site-name>.azurewebsites.net

    此螢幕快照顯示流覽至 Web 應用程式的連結選取專案。

  7. 確認您看到網站,但尚未張貼任何事件。

    新網站的螢幕快照。

    重要

    讓 [Azure 事件方格檢視器] 視窗保持開啟,讓您可以在事件張貼時看到事件。

建立事件訂閱

建立一個事件訂用帳戶,將其傳遞模式設為支援推送傳遞的 [推送]

  1. 從使用 [事件中樞命名空間] 頁面開啟的索引標籤或 視窗,切換至使用 [事件方格命名空間] 頁面開啟的索引標籤或視窗。
  2. 在 [事件方格命名空間] 頁面上,選取左側功能表上的 [主題]
  3. 在 [主題] 頁面上,選取您在上一個步驟中所建立的主題。
  4. 選取命令列上的 [+ 訂閱]顯示 [主題] 頁面的螢幕擷取畫面,其中已選取 [建立訂用帳戶] 按鈕。
  5. 在 [建立事件訂閱] 頁面上,遵循下列步驟:
    1. 在 [基本] 索引標籤中,輸入事件訂閱的名稱

    2. 選取 [推送] 以取得事件傳遞模式。

    3. 針對 [端點類型],選取 [Webhook]

    4. 選取 [設定端點]

      顯示 [建立訂用帳戶] 頁面的螢幕快照,該頁面已針對傳遞模式選取 [推送] 和 [WebHook] 作為端點類型。

    5. [Web Hook ] 頁面上,指定端點 (例如: https://spegridsite0520.azurewebsites.net/api/updates),如下列範例所示,然後選取 [ 確認選取專案]。

      顯示 Web Hook 頁面的螢幕快照,其中包含訂閱者端點的值。

    6. 回到 [ 建立訂用帳戶] 頁面上,選取 [ 建立]。

      顯示 [建立訂用帳戶] 頁面並填入所有字段的螢幕快照。

將事件傳送至您的主題

現在,依照本節中的步驟,將範例事件傳送至命名空間主題。

宣告變數

  1. 在 Azure 入口網站中啟動 Cloud Shell。 切換至 Bash

    顯示 Cloud Shell 的螢幕擷取畫面。

  2. 執行下列命令來宣告變數來保存資源組名。 將取代 RESOUREGROUPNAME 為您的 Azure 資源群組名稱。

    resource_group=RESOURCEGROUPNAME
    
  3. 在 Cloud Shell 中,執行下列命令來宣告變數來保存命名空間名稱。 以事件方格命名空間的名稱取代 NAMESPACENAME

    namespace=NAMESPACENAME
    
  4. 執行下列命令來宣告變數,以保存您稍早注意到的存取密鑰值。 將取代 ACCESSKEY 為事件方格命名空間的存取金鑰值。

    key=ACCESSKEY
    
  5. 在 Cloud Shell 中,執行下列命令來宣告變數來保存命名空間名稱。

    topic=TOPICNAME
    

發佈事件

  1. 擷取命名空間主機名稱。 您可以用它來撰寫事件傳送到的命名空間 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
    
  2. 建立符合範例 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 規格。

  3. 使用 CURL 將事件傳送至主題。 CURL 是可傳送 HTTP 要求的公用程式。

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

確認 Azure 事件方格檢視器已收到該事件

確認 Azure 事件方格檢視器 Web 應用程式會顯示從事件方格收到的事件。

顯示 Azure 事件方格檢視器的螢幕擷取畫面,其中包含已接收的事件範例。

在此快速入門中,您已使用 Webhook 作為事件處理常式。 如需使用 Azure 事件中樞作為事件處理常式的快速入門,請參閱使用命名空間主題,將事件傳遞至 Azure 事件中樞