如何停用 Azure Functions 中的函式

本文說明如何停用 Azure Functions 中的函式。 若要 停用 函式,表示讓運行時間忽略要觸發函式的事件。 這項功能可讓您防止特定函式執行,而不需要修改並重新發佈整個函式應用程式。

您可以藉由以設定為 true的格式AzureWebJobs.<FUNCTION_NAME>.Disabled建立應用程式設定來停用函式。 您可以使用數種方式來建立和修改此應用程式設定,包括使用 Azure CLIAzure PowerShell,以及從函式的 [概觀] 索引卷標 Azure 入口網站

應用程式設定的變更會導致函式應用程式重新啟動。 如需詳細資訊,請參閱 Azure Functions 的應用程式設定參考。

停用函式

使用下列其中一種模式來建立應用程式設定,以停用名為 QueueTrigger的範例函式:

使用函式 [概觀] 頁面上的 [啟用] 和 [停用] 按鈕。 這些按鈕的運作方式是變更 AzureWebJobs.QueueTrigger.Disabled 應用程式設定的值。 第一次停用函式時,會建立函式特定的應用程式設定。

Function state switch

即使從本機專案發佈至函數應用程式,您仍然可以使用入口網站來停用函數應用程式中的函數。

注意

停用的函式仍然可以使用主要金鑰呼叫 REST 端點來執行。 若要深入了解,請參閱執行停用的函式。 這表示在入口網站中使用主要 (主機金鑰)從 [測試/執行] 視窗啟動時,已停用的函式仍會執行。

停用位置中的函式

根據預設,應用程式設定也適用於部署位置中執行的應用程式。 不過,您可以藉由設定位置特定的應用程式設定,覆寫位置所使用的應用程式設定。 例如,您可能想要讓函式在生產環境中處於作用中,但在部署測試期間則不要作用中。 通常停用位置中的定時器觸發函式,以防止同時執行。

若要只在預備位置中停用函式:

選取 [部署] 下的 [部署位置]、選擇您的位置,然後選取位置執行個體中的 [函式],來瀏覽至函數應用程式的位置執行個體。 選擇您的函式,然後使用函式 [概觀] 頁面上的 [啟用] 和 [停用] 按鈕。 這些按鈕的運作方式是變更 AzureWebJobs.<FUNCTION_NAME>.Disabled 應用程式設定的值。 第一次停用函式時,會建立此函式特定的設定。

您也可以在位置執行個體的 [設定] 中直接新增名為 AzureWebJobs.<FUNCTION_NAME>.Disabled 的應用程式設定,其值為 true。 當您新增位置特定的應用程式設定時,請務必核取 [部署位置設定] 方塊。 此選項會在交換期間維護位置的設定值。

若要深入了解,請參閱 Azure Functions 部署位置

執行停用的函式

您仍然可以藉由將 REST 要求中的主要金鑰提供給停用函式的端點 URL,讓停用的函式執行。 這樣一來,您就可以在 Azure 中開發及驗證停用狀態的函式,同時防止他人存取函式。 在要求中使用任何其他型別的金鑰會傳回 HTTP 404 回應。

警告

由於主要金鑰會在您的函數應用程式中授與提高的權限,因此您不應該與第三方共用此金鑰,或是在原生用戶端應用程式中散發它。 當您選擇管理存取層級時,請務必謹慎。

若要深入了解主要金鑰,請參閱取得金鑰。 若要深入了解如何呼叫非 HTTP 觸發函式,請參閱手動執行非 HTTP 觸發的函式

在本機停用函式

在本機執行時,可以使用相同方式停用函式。 若要停用名為 QueueTrigger 的函式,請將項目新增至 local.settings.json 檔案中的 Values 集合,如下所示:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobs.QueueTrigger.Disabled": true
  }
}

考量

停用函式時請謹記以下考量:

  • 當您使用本文所述的方法來停用 HTTP 觸發函式時,當您在本機計算機和 入口網站中執行時,仍然可以存取端點。

  • 此時,在 Linux 上執行時,無法停用包含連字元 (-) 的函式名稱。 如果您計劃在 Linux 上執行時停用函式,請勿在函式名稱中使用連字元。

下一步

本文關於如何停用自動觸發程序。 如需觸發程序的詳細資訊,請參閱觸發程序與繫結