事件處理程序是 Azure 事件方格 傳送事件以供處理的目的地。 Azure 會自動配置多項服務來處理事件,而 Azure Functions 就是其中之一。
當你使用函式作為事件處理程序時,你會針對每個事件執行自訂程式碼,無需配置或管理伺服器。 例如,事件網格可以將函式作為 反損層 ,在將事件轉發至下游系統前,先轉換或驗證事件。
本文說明了使用函式作為事件處理者的兩種方式,並說明該採用哪一種方法。
若要使用 Azure 中的函式作為事件的處理常式,請遵循下列其中一種方法:
- 使用 事件網格觸發器。 將 Azure 函式指定為端點類型。 然後指定 function 應用程式和處理事件的函式。
- 使用 HTTP 觸發器。 將 WebHook 指定為端點類型。 然後指定處理事件的函式網址。
使用第一種方法(事件格觸發器)。 相較於第二種方法,它有以下優點:
- Event Grid 會自動驗證 Event Grid 觸發程序。 使用一般 HTTP 觸發程序時,您必須自行實作驗證回應。
- 事件網格會根據該函式能處理事件的感知速率,自動調整將事件傳送到該函數觸發的函式的速率。 此速率匹配功能避免了因函數無法處理事件而產生的傳遞錯誤,因為該函數的事件處理速率會隨時間變化。 若要提高高輸送量下的效率,請在事件訂閱中啟用批次處理。 如需詳細資訊,請參閱啟用批次。
注意
- 當你使用 Event Grid 觸發器透過 Azure 函式新增事件訂閱時,Event Grid 會利用 Event Grid 服務主體的憑證取得目標函式的存取金鑰。 當你在 Azure 訂閱中註冊事件 Grid 資源提供者時,Event Grid 會接收權限。
- 如果您使用 Microsoft Entra ID 應用程式來保護 Azure 函式,就必須採用通用的 Webhook 方法,並使用 HTTP 觸發程序。 新增訂閱時,請使用 Azure 函式端點作為 Webhook URL。
教學課程
| 標題 | 描述 |
|---|---|
| 快速入門:使用函式處理事件 | 將自訂事件傳送至函式進行處理。 |
| 教學課程:將巨量資料串流處理至資料倉儲 | 當事件中樞建立擷取檔案時,事件方格會將事件傳送至函式應用程式。 應用程式會對「擷取」檔案進行擷取,並將資料遷移到資料倉儲。 |
| 教學課程:Azure 服務匯流排與 Azure 事件方格的整合範例 | Event Grid 會將訊息從 服務匯流排 主題傳送給函式應用程式和邏輯應用程式。 |
REST API 範例
以下範例展示了 PUT 操作的請求體,該操作建立以 Azure 函式作為事件處理程序的事件訂閱。 它設定目標函式的資源 ID,並啟用批次處理。
{
"properties":
{
"destination":
{
"endpointType": "AzureFunction",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
"maxEventsPerBatch": 10,
"preferredBatchSizeInKilobytes": 64
}
},
"eventDeliverySchema": "EventGridSchema"
}
}
啟用批次處理
為了提升吞吐量,請在訂閱時啟用批次處理。 如果你使用 Azure 入口網站,可以在建立訂閱時或之後設定每批次的最大事件數量,以及偏好的批次大小(以千位元組為單位)。
使用Azure入口網站、PowerShell、CLI或Resource Manager範本來設定批次設定。
Azure 入口網站
當你在入口網站建立訂閱時,在 「建立事件訂閱 」頁面切換到 「進階功能 」標籤,並設定 每批最大事件 數和 偏好批次大小(以千位元組為單位)。
請在事件網格主題頁面的功能標籤中更新現有訂閱的這些值。
Azure Resource Manager 範本
在 Azure Resource Manager 範本中設定 maxEventsPerBatch 和 preferredBatchSizeInKilobytes。 如需詳細資訊,請參閱 Microsoft.EventGrid eventSubscriptions 範本參考。
Azure CLI
使用 az eventgrid event-subscription create 指令,並搭配以下參數來設定批次相關設定:--max-events-per-batch 或 --preferred-batch-size-in-kilobytes。
Azure PowerShell
使用 New-AzEventGridSubscription 或 Update-AzEventGridSubscription cmdlet 來設定批次相關的設定。 使用 -MaxEventsPerBatch or -PreferredBatchSizeInKiloBytes 參數來設定你的偏好。
相關內容
有關支援的事件處理器清單,請參閱 事件處理器 條目。