分享方式:


如何在 Azure Functions 中使用事件方格觸發程序和繫結

Azure Functions 透過使用觸發程序和繫結提供與 Azure 事件方格的內建整合。 此文章說明如何設定事件方格觸發程序和繫結,並於本機加以評估。 如需事件方格觸發程序和輸出繫結定義和範例的詳細資訊,請參閱下列其中一篇參考文章:

建立事件訂閱

若要開始接收事件方格 HTTP 要求,您需要訂閱事件方格引發的事件。 事件訂閱會指定叫用函式的端點 URL。 當您在 Azure 入口網站中,從函式的 [整合] 索引標籤建立事件訂閱時,系統會為您提供 URL。 當您以程式設計方式建立事件訂閱或從事件方格建立事件訂閱時,您必須提供端點。 端點 URL 包含系統金鑰,您必須從 Functions 管理員 REST API 取得此金鑰。

取得 Webhook 端點 URL

事件方格觸發程序函數的 URL 端點取決於 Functions 執行階段的版本。 下列範例顯示特定版本的 URL 模式:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

注意

有一個 Blob 儲存體觸發程序版本也會使用事件訂用帳戶。 這類 Blob 儲存體觸發程序的端點 URL 具有 /runtime/webhooks/blobs 的路徑,而事件方格觸發程序的路徑會是 /runtime/webhooks/EventGrid。 如需處理 Blob 的選項比較,請參閱 Blob 容器上的觸發程序

取得系統金鑰

您所建構的 URL 端點包含系統金鑰值。 系統金鑰是事件方格 Webhook 特有的授權金鑰,必須包含在事件方格觸發程式的端點 URL 要求中。 下一節將說明如何取得系統金鑰。

您也可以從入口網站中的 Functions> 應用程式金鑰取得函式應用程式的主要密鑰。

警告

主要金鑰為系統管理員提供對函數應用程式的存取權。 請勿與第三方共用此金鑰或將其散發於原生用戶端應用程式。

如需詳細資訊,請參閱在 Azure Functions 中使用存取金鑰

您可以使用下列系統管理員 API 從函式應用程式取得系統金鑰(HTTP GET):

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

此 REST API 是管理員 API,因此需要您函數應用程式的主要金鑰。 請勿混淆系統金鑰 (用來叫用事件方格觸發程序函式) 與主要金鑰 (用來執行函式應用程式的管理工作)。 當您訂閱 Event Grid 主題時,請務必使用系統金鑰。

以下範例說明提供系統金鑰的回應:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

建立訂用帳戶

您可以使用 Azure 入口網站或 Azure CLI 建立事件訂閱。

對於您在 Azure 入口網站中使用事件方格觸發程序開發的函式,選取 [整合],選擇 [事件方格觸發程序],然後選取 [建立事件方格訂用帳戶]

在入口網站中連線至要觸發的新事件訂用帳戶的螢幕擷取畫面。

當您選取此連結時,入口網站會開啟建立事件訂用帳戶頁面,其中已定義目前的觸發程序端點。

建立已定義函式端點的事件訂用帳戶的螢幕擷取畫面。

如需如何使用 Azure 入口網站建立訂用帳戶的詳細資訊,請參閱 Event Grid 文件中的建立自訂事件 - Azure 入口網站

如需如何建立訂用帳戶的詳細資訊,請參閱 Blob 儲存體快速入門或其他 Event Grid 快速入門。

使用檢視器 Web 應用程式的本機測試

若要在本機測試 Event Grid 觸發程序,您必須取得從雲端中的原有位置傳遞到本機電腦的 Event Grid HTTP 要求。 其中一種方式是在線上擷取要求,然後手動將其重新傳送至您的本機電腦:

  1. 建立檢視器 Web 應用程式,以擷取事件訊息。
  2. 建立事件格線訂用帳戶,以將事件傳送至檢視器應用程式。
  3. 產生要求,並從檢視器應用程式複製要求本文。
  4. 手動將要求發佈至 Event Grid 觸發程序函式的 localhost URL。

若要傳送 HTTP 張貼要求,您需要 HTTP 測試工具。 請務必選擇可保護您的數據的工具。 如需詳細資訊,請參閱 HTTP 測試工具

完成測試後,您可以藉由更新端點,在生產環境使用相同的訂用帳戶。 使用 az eventgrid event-subscription update Azure CLI 命令。

建立檢視器 Web 應用程式

若要簡化擷取事件訊息,您可以部署預先建置的 Web 應用程式,以顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。

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

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

部署需要幾分鐘的時間才能完成。 成功部署之後,檢視 Web 應用程式,確定它正在執行。 在網頁瀏覽器中,瀏覽至:https://<your-site-name>.azurewebsites.net

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

檢視新網站

建立事件方格訂閱

建立您想要測試之類型的事件格線訂用帳戶,並從您的 Web 應用程式提供其 URL 作為端點的事件通知。 Web 應用程式的端點必須包含的尾碼 /api/updates/。 因此,完整 URL 是 https://<your-site-name>.azurewebsites.net/api/updates

如需如何使用 Azure 入口網站建立訂用帳戶的資訊,請參閱事件格線文件中的建立自訂事件 - Azure 入口網站

產生要求

觸發會對您的 Web 應用程式端點產生 HTTP 流量的事件。 例如,如果您已建立 Blob 儲存體訂用帳戶,請上傳或刪除 Blob。 當要求出現在 Web 應用程式上時,請複製要求本文。

您會先收到訂用帳戶驗證要求;請忽略任何驗證要求,並複製事件要求。

從 Web 應用程式複製要求本文

手動發佈要求

在本機執行您的 Event Grid 函式。 Content-Typeaeg-event-type 標頭必須手動設定,而所有其他值都可以保留為預設值。

使用 HTTP 測試工具來建立 HTTP POST 要求:

  • 設定 Content-Type: application/json 標頭。

  • 設定 aeg-event-type: Notification 標頭。

  • 將 RequestBin 資料貼到要求本文中。

  • 將 HTTP POST 要求傳送至手動啟動事件方格觸發程式的端點。

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

functionName 參數必須是 FunctionName 屬性中指定的名稱。

Event Grid 觸發程序函式會執行並顯示類似於下列範例的記錄:

Event Grid 觸發程序函式記錄的範例

下一步

若要深入了解如何搭配 Functions 使用事件方格,請參閱下列文章: