分享方式:


使用 Azure 入口網站和 Azure 事件方格,將自訂事件路由傳送至 Web 端點

事件方格是完全受控的服務,可讓您輕鬆地跨許多不同的 Azure 服務和應用程式管理事件。 其可簡化建置事件驅動和無伺服器應用程式。 如需服務的概觀,請參閱事件方格概觀

在本文中,您會使用 Azure 入口網站來執行下列工作:

  1. 建立自訂主題。
  2. 訂閱自訂主題。
  3. 觸發事件。
  4. 檢視結果。 通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,若要簡化這篇文章,您可將事件傳送至可收集及顯示訊息的 Web 應用程式。

必要條件

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

註冊事件方格資源提供者

若您先前未曾使用過事件方格,您將必須註冊事件方格資源提供者。 如果您先前曾使用過事件方格,請跳到下一節。

在 Azure 入口網站中,執行下列步驟:

  1. 選取左側功能表上的 [訂用帳戶]

  2. 從訂用帳戶清單中選取您要用於事件方格的訂用帳戶

  3. 在 [訂用帳戶] 頁面上,在左側功能表的 [設定] 下方選取 [資源提供者]

  4. 搜尋 [Microsoft.EventGrid],並確認 [狀態] 為 [未註冊]

  5. 在提供者清單中選取 [Microsoft.EventGrid]

  6. 在命令列上選取 [註冊]

    顯示向 Azure 訂用帳戶註冊 Microsoft.EventGrid 提供者的影像。

  7. 重新整理以確定 Microsoft.EventGrid 的狀態已變更為已註冊

    顯示成功向 Azure 訂用帳戶註冊 Microsoft.EventGrid 提供者的影像。

建立自訂主題

事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。

  1. 登入 Azure 入口網站

  2. 在主題的搜尋列中,輸入事件方格主題,然後從下拉式清單中選取 [事件方格主題]

    此螢幕快照顯示用來搜尋事件方格主題的 Azure 連接埠搜尋列。

  3. 在 [事件方格主題] 頁面上,選取工具列上的 [+ 建立]

    顯示事件方格主題頁面上 [建立主題] 按鈕的螢幕快照。

  4. 在 [建立主題] 頁面上,遵循下列步驟:

    1. 選取您的 Azure 訂用帳戶

    2. 選取現有的資源群組或選取 [新建],然後針對 [資源群組] 輸入 [名稱]

    3. 提供自訂主題的唯一 [名稱]。 主題名稱必須是唯一的,因為它由 DNS 項目表示。 請勿使用影像中顯示的名稱。 而是建立您自己的名稱 - 它必須介於 3 到 50 個字元之間,且只包含值 a-z、A-Z、0-9 和 "-"。

    4. 選取事件方格主題的位置

    5. 選取頁面底部的 [檢閱 + 建立] 。

      建立主題頁面

    6. 在 [建立主題] 頁面的 [檢閱 + 建立] 索引標籤上,選取 [建立]

      檢閱設定並建立

  5. 部署成功之後,選取 [移至資源] 以瀏覽至主題的 [事件方格主題] 頁面。 讓此頁面保持開啟。 您稍後會在快速入門中使用此值。

    顯示事件方格主題首頁的螢幕快照。

    注意

    若要讓快速入門保持簡單,您應使用 [基本] 頁面來建立主題即可。 如需在精靈的其他頁面上設定網路、安全性和資料落地設定的詳細步驟,請參閱建立自訂主題

建立訊息端點

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

  1. 在文章頁面中,選取 [部署至 Azure],將解決方案部署至您的訂用帳戶。 在 Azure 入口網站中,提供參數的值。

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

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

    1. 針對 [資源群組],選取現有的資源群組,或建立新的資源群組。

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

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

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

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

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

  4. 部署需要幾分鐘的時間才能完成。 選取入口網站中的警示 (鐘圖示),然後選取 [移至資源群組]

    顯示成功部署訊息的螢幕快照,其中包含瀏覽至資源群組的連結。

  5. 在 [ 資源群組 ] 頁面上的資源清單中,選取您建立的Web應用程式(下列範例中的 contosoegriviewer )。

    顯示 [資源群組] 頁面的螢幕快照,其中包含已部署的資源。

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

    顯示 App Service 頁面的螢幕快照,其中已醒目提示網站的連結。

  7. 確認您看到網站,但其中尚未發佈任何事件。

    顯示事件方格查看器範例應用程式的螢幕快照。

訂閱自訂主題

您可訂閱事件方格主題,告知事件方格您想要追蹤的事件,以及要將事件傳送至何處。

  1. 現在,在您自訂主題的 [事件方格主題] 頁面上,選取工具列上的 [+ 事件訂閱]

    [新增事件訂閱] 按鈕

  2. 在 [建立事件訂閱] 頁面上,遵循下列步驟:

    1. 輸入事件訂閱的 [名稱]

    2. 選取 [Web Hook] 作為 [端點類型]

    3. 選擇 [選取端點]

      提供事件訂用帳戶值

    4. 針對 Web Hook 端點,提供您的 Web 應用程式 URL,並將 api/updates 新增至首頁 URL。 選取 [確認選取項目]

      提供端點 URL

    5. 回到 [建立事件訂閱] 頁面,選取 [建立]

  3. 再次檢視您的 Web 應用程式,並注意訂閱驗證事件是否已傳送至其中。 選取眼睛圖示以展開事件資料。 事件方格會傳送驗證事件,以便端點確認接收事件資料。 Web 應用程式包括用於驗證訂閱的程式碼。

    事件方格查看器應用程式的螢幕快照,其中包含已驗證的訂用帳戶事件。

將事件傳送至主題

現在,讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 使用 Azure CLI 或 PowerShell 將測試事件傳送至您的自訂主題。 一般而言,應用程式或 Azure 服務就會傳送事件資料。

第一個範例會使用 Azure CLI。 它會取得自訂主題的 URL 和金鑰,以及範例事件資料。 將您的自訂主題名稱用於 <topic name>。 這樣會建立範例事件資料。 JSON 的 data 元素是您的事件承載。 任何語式正確的 JSON 都可以進入這個欄位。 您也可以使用主體欄位進行進階路由傳送或篩選。 CURL 是可傳送 HTTP 要求的公用程式。

Azure CLI

  1. 在 Azure 入口網站中選取 [Cloud Shell]。 Cloud Shell 會在網頁瀏覽器的底部窗格中開啟。

    選取 Cloud Shell 圖示

  2. 在 Cloud Shell 視窗的左上角,選取 [Bash]

    此螢幕快照顯示左上角已選取 Bash 的 Cloud Shell。

  3. 執行下列命令以取得主題的端點:複製並貼上命令之後,請先更新主題名稱資源群組名稱,再執行命令。 您會將範例事件發佈到這個主題端點。

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. 執行下列命令以取得自訂主題的金鑰:複製並貼上命令之後,請先更新主題名稱資源群組名稱,再執行命令。 這是事件方格主題的主索引鍵。 若要從 Azure 入口網站取得此金鑰,請切換至 [事件方格主題] 頁面的 [存取金鑰] 索引標籤。 若要能夠將事件張貼到自訂主題,您需要存取金鑰。

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. 複製下列陳述式與事件定義,然後按 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"} ]'
    
  6. 執行下列 Curl 命令來張貼事件:在此命令中,會將 aeg-sas-key 標頭設定為您稍早取得的存取金鑰。

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

第二個範例會使用 PowerShell 執行類似的步驟。

  1. 在 Azure 入口網站中選取 [Cloud Shell] (或者,移至 https://shell.azure.com/)。 Cloud Shell 會在網頁瀏覽器的底部窗格中開啟。

    選取 Cloud Shell 圖示

  2. Cloud Shell 中,選取 Cloud Shell 視窗左上角的 [PowerShell]。 請參閱 Azure CLI 區段中的範例 Cloud Shell 視窗映像。

  3. 設定下列變數。 在您複製並貼上每個命令之後,請先更新 [主題名稱] 和 [資源群組名稱],再執行命令:

    資源群組:

    $resourceGroupName = "<resource group name>"
    

    事件方格主題名稱

    $topicName = "<topic name>"
    
  4. 執行下列命令以取得主題的端點金鑰

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. 準備事件。 在 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)+"]"
    
  6. 使用 Invoke-WebRequest Cmdlet 來傳送事件。

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

在事件方格檢視器中驗證

您已觸發此事件,而 Event Grid 會將訊息傳送至您在訂閱時設定的端點。 檢視您的 Web 應用程式,以查看您剛剛傳送的事件。

事件方格查看器

清除資源

如果您打算繼續使用此事件,請勿清除在本文中建立的資源。 否則,請刪除您在本文建立的資源。

  1. 選取左功能表上的 [資源群組]。 如果您未在左側功能表上看到它,請選取左側功能表上的 [所有服務],然後選取 [資源群組]

    顯示 [資源群組] 頁面的螢幕快照。

  2. 選取資源群組以啟動 [資源群組] 頁面。

  3. 選取工具列上的 [刪除資源群組]

  4. 輸入資源群組的名稱並選取 [刪除],以確認刪除。

    您在映像中看到的其他資源群組是由 Cloud Shell 視窗建立和使用。 如果您不打算稍後使用 Cloud Shell 視窗,請將它刪除。

下一步

您現在知道如何建立自訂主題和事件訂閱,深入了解 Event Grid 可協助您:

請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。