手動執行非 HTTP 觸發的函式

本文示範如何透過特殊格式的 HTTP 要求手動執行非 HTTP 觸發的函式。

在某些內容中,例如在開發和疑難排解期間,您可能需要「按需求」執行間接觸發的 Azure 函式。 間接觸發程序的範例包括排程的函式或因事件結果而執行的函式。

下列範例會使用 Postman,但您可以使用 cURLFiddler 或任何其他類似的工具來傳送 HTTP 要求。

本文所述的程序相當於在 Azure 入口網站中使用函式的 [程式碼 + 測試] 索引標籤中的 [測試/執行] 功能。 您也可以使用 Visual Studio Code 手動執行函式

定義要求位置

若要執行非 HTTP 觸發的函式,您必須要有適當方式可將要求傳送至 Azure 以執行函式。 用來提出此要求的 URL 會採用特定的格式。

Define the request location: host name + folder path + function name

  • 主機名稱:函式應用程式的公用位置,由函式應用程式的名稱加上 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 端點。

  1. 瀏覽至 Azure 入口網站中的函式應用程式,選取 [應用程式金鑰],然後選取 _master 金鑰。

    Locate the master key to copy.

  2. 在 [編輯金鑰] 區段中,將金鑰值複製到剪貼簿,然後選取 [確定]

    Copy the master key to the clipboard.

呼叫函式

  1. 在 Azure 入口網站中,瀏覽至函式應用程式並選擇您的函式。

  2. 選取 [程式碼 + 測試],然後選取 [記錄]。 您會看到您從 Postman 手動執行函式時所傳回的函式訊息記錄在此處。

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. 開啟 Postman (或對等的 HTTP 撰寫工具),並在 URL 文字方塊中輸入要求位置

  4. 請確定 HTTP 方法設定為 POST,選取 [標頭] 索引標籤,然後新增這兩個標頭索引鍵/值組:

    機碼
    x-functions-key 從剪貼簿貼上的主要金鑰值。
    Content-Type application/json

    Postman headers settings.

  5. 選取 [本文] 索引標籤,然後輸入 { "input": "<TRIGGER_INPUT>" } 作為要求的本文。

    Postman body settings.

    您提供的特定 <TRIGGER_INPUT> 取決於觸發程序的類型,但只能是字串、數值或布林值。 對於使用 JSON 承載的服務,例如 Azure 服務匯流排,測試 JSON 承載應該逸出並串行化為字串。

    如果您不想將輸入資料傳遞至函式,您仍須提供空字典 {} 作為 POST 要求的本文。 如需詳細資訊,請參閱特定非 HTTP 觸發程序的參考文章。

  6. 請選取傳送

    Send a request with Postman.

    然後,Postman 會報告狀態 202 已接受

  7. 接著請返回您在 Azure 入口網站中的函式。 檢閱記錄視窗,您會看到手動呼叫函式所傳回的訊息。

    View the logs to see the master key test results.

您存取傳送至觸發程序之資料的方式取決於觸發程序的類型和函式語言。 如需詳細資訊,請參閱特定觸發程序的參考範例。

下一步