共用方式為


快速入門:使用事件方格將自訂事件路由傳送至 Azure 函式

Azure 事件方格是一項雲端事件路由服務。 Azure Functions 是其中一個支援的事件處理常式

在本快速入門中,您會使用 Azure 入口網站來建立自訂主題、訂閱自訂主題,以及觸發事件來檢視結果。 您會將事件傳送至 Azure 函式。

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

使用 Visual Studio Code 來建立具有事件方格觸發程序的函式

在本節中,您會使用 Visual Studio Code 來建立具有事件方格觸發程序的函式。

必要條件

建立函式

  1. 打開 Visual Studio Code。

  2. 在左側列上,選取 [Azure]

  3. 在左側窗格的 [工作區] 區段中,選取命令列上的 [Azure Functions] 按鈕,然後選取 [建立函式]

    此螢幕擷取畫面顯示具有用於建立函式之功能表命令的 Azure [Visual Studio Code] 索引標籤。

  4. 選取您要用來儲存函式程式碼的資料夾。

  5. 針對 [建立新專案] 命令的 [語言] 選取 [C#],然後選取 Enter 鍵。

    此螢幕擷取畫面顯示已選取 C Sharp 作為語言來開發 Azure 函式。

  6. 針對 [.NET 執行階段],選取 [.NET 8.0 隔離式方案 LTS],然後選取 Enter 鍵。

  7. 針對 [函式的範本],選取 [Azure 事件方格觸發程序],然後選取 Enter 鍵。

  8. 針對 [函式名稱],輸入您函式的名稱,然後選取 Enter 鍵。

  9. 針對 [命名空間],輸入函式命名空間的名稱,然後選取 Enter 鍵。

  10. 在目前視窗或新視窗中開啟專案,或將專案新增至工作區。

  11. 等候建立函式。 函式建立狀態會出現在右下角。

    顯示函式建立狀態的螢幕擷取畫面。

  12. 檢視「YourFunctionName.cs」檔案中的程式碼,特別是 Run 方法。 其會使用記錄器列印資訊。

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

將函式部署到 Azure

  1. 如果 [Azure] 窗格尚未開啟,請選取左側列上的 [Azure] 按鈕。

  2. 將滑鼠指標停留在您的專案上,然後選取 [部署至 Azure] 按鈕。

    顯示部署至 Azure 之按鈕的螢幕擷取畫面。

  3. 在命令選擇區的下拉式清單中,選取 [+ 建立新的函式應用程式],然後選取 Enter 鍵。

  4. 針對 [名稱],輸入新函數應用程式的全域唯一名稱,然後選取 Enter 鍵。

  5. 針對 [執行階段堆疊],選取 [.NET 8 隔離式方案]

  6. 針對 Azure 資源的 [位置],選取您鄰近的區域。

  7. 函式應用程式建立狀態會出現在底部窗格的 [AZURE] 索引標籤上。 建立函數應用程式之後,您會看到將您在本機建立的函式部署至函式應用程式的狀態。

  8. 部署成功之後,展開 [成功建立函數應用程式] 訊息,然後選取 [按一下以檢視資源]。 確認左側窗格上的 [資源] 區段中已選取您的函式。

  9. 以滑鼠右鍵按一下您的函式,然後選取 [在入口網站中開啟]

    螢幕擷取畫面,其中顯示用於在入口網站開啟函式的選取項目。

  10. 如有必要,請登入 Azure,並確認您的函式有出現 [函式應用程式] 頁面。

  11. 在底部窗格上,選取您的函式。

    顯示 [函數應用程式] 頁面上 Azure 函式選取項目的螢幕擷取畫面。

  12. 切換至 [記錄] 索引標籤。讓此索引標籤保持開啟狀態,以便稍後在本教學課程中將事件傳送至事件方格主題時,可以看到所記錄的訊息。

    顯示 Azure 入口網站中函式 [記錄] 索引標籤的螢幕擷取畫面。

建立自訂主題

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

  1. 在網頁瀏覽器視窗的新索引標籤上,登入 Azure 入口網站

  2. 在主題的搜尋列中,搜尋事件方格主題,然後選取 [事件方格主題]

    顯示事件方格主題選取項目的螢幕擷取畫面。

  3. 在 [主題] 頁面上,選取命令列上的 [+ 建立]

    顯示用於建立事件方格主題之按鈕的螢幕擷取畫面。

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

    1. 針對 [訂用帳戶],選取您的 Azure 訂用帳戶。

    2. 針對 [資源群組],從先前的步驟中選取相同的資源群組。

    3. 針對 [名稱],提供自訂主題的唯一名稱。 主題名稱必須是唯一的,因為網域名稱系統 (DNS) 項目會表示該名稱。

      請勿使用範例影像中顯示的名稱。 相反地,請建立您自己的名稱。 其必須是 3-50 個字元,且只包含 a-z、A-Z、0-9 和連字號 (-) 等值。

    4. 針對 [區域],選取事件方格主題的位置。

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

      顯示用於建立主題之窗格的螢幕擷取畫面。

    6. 在 [檢閱 + 建立] 索引標籤上檢閱設定,然後選取 [建立]

  5. 建立自訂主題之後,請選取 [移至資源] 連結,以開啟該主題的 [事件方格主題] 頁面。

    顯示事件方格自訂主題頁面的螢幕擷取畫面。

訂閱自訂主題

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

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

    顯示用於在工具列上新增事件訂閱之按鈕的螢幕擷取畫面。

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

    1. 針對 [名稱],輸入事件訂閱的名稱。

    2. 針對 [事件結構描述],選取 [雲端事件結構描述 v1.0]

    3. 針對 [端點類型],選取 [Azure 函式]

    4. 選取 [設定端點]

      顯示事件訂閱值的螢幕擷取畫面。

    5. 在 [選取 Azure 函式] 窗格上,遵循下列步驟:

      1. 針對 [訂用帳戶],選取具有函式的 Azure 訂用帳戶。

      2. 針對 [資源群組],選取具有函式的資源群組。

      3. 針對 [函式應用程式],選取您的函式應用程式。

      4. 針對 [函式],選取函式應用程式中的函式。

      5. 選取 [確認選取項目]

        此螢幕擷取畫面顯示用於選取先前建立之 Azure 函式的窗格。

    6. 此為選用步驟,但若為生產案例,則建議您執行此步驟。 在 [建立事件訂閱] 窗格上,移至 [其他功能] 索引標籤,然後設定 [每個批次的事件數上限] 和 [偏好的批次大小 (KB)] 的值。

      批次可以提供高輸送量。 針對 [每個批次的事件數上限],請設定訂用帳戶將包含在批次中的事件數上限。 [偏好的批次大小 (KB)] 會設定偏好的批次大小上限,但如果單一事件大於此閾值,則可以超過此上限。

      顯示事件訂閱批次設定的螢幕擷取畫面。

    7. 在 [建立事件訂閱] 窗格上,選取 [建立]

將事件傳送至主題

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

第一個範例使用 Azure CLI。 其會取得自訂主題的 URL 和索引鍵,以及範例事件資料。 將您的自訂主題名稱用於 topicname。 這樣會建立範例事件資料。

JSON 的 data 元素是您的事件承載。 任何語式正確的 JSON 都可以進入這個欄位。 您也可以使用主體欄位進行進階路由傳送或篩選。

cURL 工具會傳送 HTTP 要求。 在本文中,您會使用 cURL 將事件傳送到自訂主題。

Azure CLI

  1. 在 Azure 入口網站中選取 [Cloud Shell]。 如果您處於 Azure PowerShell 模式,請選取 [切換至 Bash]

    顯示 Azure Cloud Shell 中 Bash 視窗的螢幕擷取畫面。

  2. 設定用於命令中的 topicnameresourcegroupname 變數。

    TOPICNAME 取代為您的事件方格主題名稱。

    topicname="TOPICNAME"
    

    RESOURCEGROUPNAME 取代為包含事件方格主題的 Azure 資源群組名稱。

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. 使用下列命令以取得主題的端點。 在您複製並貼上命令之後,請先更新主題名稱和資源群組名稱,再執行命令。

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. 使用下列命令以取得自訂主題的索引鍵。 在您複製並貼上命令之後,請先更新主題名稱和資源群組名稱,再執行命令。

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --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 命令來張貼事件:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. 確認函式的訊息有出現在 Azure 入口網站中函式的 [記錄] 索引標籤上。

    顯示 Azure 函式 [記錄] 索引標籤的螢幕擷取畫面。

Azure PowerShell

第二個範例使用 Azure PowerShell 來執行類似步驟。

  1. 在 Azure 入口網站中,選取 [Cloud Shell] (或移至 Azure Cloud Shell 頁面)。 在 Cloud Shell 視窗的左上角,選取 [切換至 PowerShell]

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

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. 執行下列命令以取得主題的端點和金鑰:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. 準備事件。 在 Cloud Shell 視窗中,複製並執行下列陳述式:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  5. 使用 Invoke-WebRequest Cmdlet 來傳送事件:

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    
  6. 確認函式的訊息有出現在 Azure 入口網站中函式的 [記錄] 索引標籤上。

    顯示函式 [記錄] 索引標籤的螢幕擷取畫面。

驗證函式已收到事件

您已觸發事件,且事件方格將訊息傳送至您在訂閱時設定的端點。 現在,您可以檢查函式是否有收到訊息。

  1. 在函式的 [監視] 頁面上,尋找叫用。

    顯示 [監視] 頁面之 [叫用] 索引標籤的螢幕擷取畫面。

  2. 選取叫用以顯示詳細資料。

    顯示叫用詳細資料的螢幕擷取畫面。

    您也可以在將事件張貼至主題端點時,使用右窗格上的 [記錄] 索引標籤來查看所記錄的訊息。

    此螢幕擷取畫面顯示具有記錄的函式 [監視] 檢視。

清除資源

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

  1. 在左側功能表上選取 [資源群組]

    顯示資源群組頁面的螢幕擷取畫面

    替代方法是選取左側功能表上的 [所有服務],然後選取 [資源群組]

  2. 選取資源群組以開啟其詳細資料的窗格。

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

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

Cloud Shell 視窗已建立,並已使用出現在 [資源群組] 頁面上的其他資源群組。 如果您稍後不打算再使用 Cloud Shell 視窗,請刪除此資源群組。

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

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