手動執行非 HTTP 觸發的函式
本文示範如何透過特殊格式的 HTTP 要求手動執行非 HTTP 觸發的函式。
在某些內容中,例如在開發和疑難排解期間,您可能需要「按需求」執行間接觸發的 Azure 函式。 間接觸發程序的範例包括排程的函式或因事件結果而執行的函式。
本文所述的程序相當於在 Azure 入口網站中使用函式的 [程式碼 + 測試] 索引標籤中的 [測試/執行] 功能。 您也可以使用 Visual Studio Code 手動執行函式。
必要條件
本文中的範例會使用 HTTP 測試工具。 請務必選擇可保護您的數據的工具。 如需詳細資訊,請參閱 HTTP 測試工具。
定義要求位置
若要執行非 HTTP 觸發的函式,您必須要有適當方式可將要求傳送至 Azure 以執行函式。 用來提出此要求的 URL 會採用特定的格式。
- 主機名稱:函式應用程式的公用位置,由函式應用程式的名稱加上 azurewebsites.net 或您的自訂網域而組成。 當您使用用於預備的部署位置時,主機名稱部分是附加
-<slotname>
的生產主機名稱。 在上一個範例中,URL 會是名為staging
的位置的myfunctiondemos-staging.azurewebsites.net
。 - 資料夾路徑:若要透過 HTTP 要求存取非 HTTP 觸發的函式,您必須透過路徑
admin/functions
傳送要求。/admin/
路徑底下的 API 只能透過授權存取。 - 函式名稱:您要執行的函式名稱。
對函式應用程式中的管理員端點提出要求時,適用下列考量:
- 對
/admin/
路徑下的任何端點提出要求時,您必須在要求的x-functions-key
標頭中提供應用程式的主要金鑰。 - 當您在本機執行時,不會強制執行授權,而且不需要函式的主要金鑰。 您可以直接呼叫函式,省略
x-functions-key
標頭。 - 在部署位置存取函式應用程式端點時,請確定您在要求 URL 中使用位置特定的主機名稱,以及位置特定的主要金鑰。
取得主要金鑰
您可以從 Azure 入口網站或使用 Azure CLI 取得主要金鑰。
警告
由於主要金鑰會在您的函數應用程式中授與提高的權限,因此您不應與第三方共用此金鑰,或是在應用程式中加以散發。 金鑰應該只會傳送至 HTTPS 端點。
瀏覽至 Azure 入口網站中的函式應用程式,選取 [應用程式金鑰],然後選取
_master
金鑰。在 [編輯金鑰] 區段中,將金鑰值複製到剪貼簿,然後選取 [確定]。
呼叫函式
在 Azure 入口網站中,瀏覽至函式應用程式並選擇您的函式。
選取 [程式碼 + 測試],然後選取 [記錄]。 當您從 HTTP 測試工具手動執行函式時,會看到此處記錄的函式訊息。
在 HTTP 測試工具中,使用您定義為要求 URL 的要求位置、確定 HTTP 要求方法為 POST,並包含這兩個要求標頭:
機碼 值 x-functions-key
從剪貼簿貼上的主要金鑰值。 Content-Type
application/json
請確定 POST 要求承載/本文為
{ "input": "<TRIGGER_INPUT>" }
。 您提供的特定<TRIGGER_INPUT>
取決於觸發程序的類型,但只能是字串、數值或布林值。 對於使用 JSON 承載的服務,例如 Azure 服務匯流排,測試 JSON 承載應該逸出並串行化為字串。如果您不想將輸入資料傳遞至函式,您仍須提供空字典
{}
作為 POST 要求的本文。 如需詳細資訊,請參閱特定非 HTTP 觸發程序的參考文章。傳送 HTTP POST 要求。 回應應該是 HTTP 202(已接受)回應。
接著請返回您在 Azure 入口網站中的函式。 檢閱記錄視窗,您會看到手動呼叫函式所傳回的訊息。
您存取傳送至觸發程序之資料的方式取決於觸發程序的類型和函式語言。 如需詳細資訊,請參閱特定觸發程序的參考範例。