如何在 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 要求。 其中一種方式是在線上擷取要求,然後手動將其重新傳送至您的本機電腦:
- 建立檢視器 Web 應用程式,以擷取事件訊息。
- 建立事件格線訂用帳戶,以將事件傳送至檢視器應用程式。
- 產生要求,並從檢視器應用程式複製要求本文。
- 手動將要求發佈至 Event Grid 觸發程序函式的 localhost URL。
若要傳送 HTTP 張貼要求,您需要 HTTP 測試工具。 請務必選擇可保護您的數據的工具。 如需詳細資訊,請參閱 HTTP 測試工具。
完成測試後,您可以藉由更新端點,在生產環境使用相同的訂用帳戶。 使用 az eventgrid event-subscription update
Azure CLI 命令。
建立檢視器 Web 應用程式
若要簡化擷取事件訊息,您可以部署預先建置的 Web 應用程式,以顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
選取 [部署至 Azure],將解決方案部署至您的訂用帳戶。 在 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 應用程式上時,請複製要求本文。
您會先收到訂用帳戶驗證要求;請忽略任何驗證要求,並複製事件要求。
手動發佈要求
在本機執行您的 Event Grid 函式。 Content-Type
和 aeg-event-type
標頭必須手動設定,而所有其他值都可以保留為預設值。
使用 HTTP 測試工具來建立 HTTP POST 要求:
設定
Content-Type: application/json
標頭。設定
aeg-event-type: Notification
標頭。將 RequestBin 資料貼到要求本文中。
將 HTTP POST 要求傳送至手動啟動事件方格觸發程式的端點。
functionName
參數必須是 FunctionName
屬性中指定的名稱。
Event Grid 觸發程序函式會執行並顯示類似於下列範例的記錄:
下一步
若要深入了解如何搭配 Functions 使用事件方格,請參閱下列文章: