管理函式應用程式

在 Azure Functions 中,函式應用程式會提供個別函式的執行內容。 函式應用程式行為會套用至指定函式應用程式所裝載的所有函式。 函式應用程式中的所有函式都必須是相同的 語言

函式應用程式中的個別函式會一起部署,並一起調整。 相同函式應用程式中的所有函式都會共用每個實例的資源,因為函式應用程式會進行調整。

連接字串、環境變數和其他應用程式設定會針對每個函式應用程式個別定義。 函式應用程式之間必須共用的任何數據,都應該儲存在保存的存放區外部。

在 Azure 入口網站中開始使用

注意

由於在 Azure 入口網站 中編輯函式程式碼的限制,您應該在本機開發函式,並將程式代碼專案發佈至 Azure 中的函式應用程式。 如需詳細資訊,請參閱 Azure 入口網站 中的開發限制

  1. 若要開始,請使用您的 Azure 帳戶登入 Azure 入口網站。 在入口網站頂端的搜尋列中,輸入函式應用程式的名稱,然後從清單中選取它。

  2. 左窗格中的 [設定] 下,選取 [組態]。

    Function app overview in the Azure portal

您可以從 [概觀] 頁面,特別是 [應用程式設定] 和 [平臺] 功能,流覽至管理函式應用程式所需的所有專案

使用應用程式設定

您可以建立函式程式碼所需的任意數目應用程式設定。 Functions 也會使用預先定義的應用程式設定。 若要深入瞭解,請參閱 Azure Functions 的應用程式設定參考。

這些設定會加密儲存。 若要深入瞭解,請參閱 應用程式設定安全性

您可以從 Azure 入口網站 使用 Azure CLIAzure PowerShell 來管理應用程式設定。 您也可以從 Visual Studio CodeVisual Studio 管理應用程式設定。

若要尋找應用程式設定,請參閱開始使用 Azure 入口網站

[ 應用程式設定 ] 索引標籤會維護函式應用程式所使用的設定。 您必須選取 [ 顯示值 ],才能在入口網站中看到這些值。 若要在入口網站中新增設定,請選取 [新增應用程式設定 ],然後新增索引鍵/值組。

Function app settings in the Azure portal.

使用應用程式設定

函式應用程式設定值也可以在程式碼中讀取為環境變數。 如需詳細資訊,請參閱這些語言特定參考主題的環境變數一節:

當您在本機開發函式應用程式時,必須在local.settings.json項目檔中維護這些值的本機複本。 若要深入瞭解,請參閱 本機配置檔

FTPS 部署設定

Azure Functions 支援使用 FTPS 將專案程式代碼部署至函式應用程式。 因為此部署方法需要您 同步觸發程式,因此不建議使用此方法。 若要安全地傳輸項目檔,請一律使用 FTPS,而不是 FTP。

您可以使用下列其中一種方法取得 FTPS 部署所需的認證:

您可以下載函式應用程式的發行配置檔,以取得 Azure 入口網站 中的 FTPS 發佈認證。

重要

發佈配置檔包含重要的安全性認證。 您應該一律保護本機電腦上的下載檔。

若要下載函式應用程式的發佈設定檔:

  1. 選取函式應用程式的 [概觀 ] 頁面,然後選取 [ 取得發佈配置檔]。

    Download publish profile

  2. 儲存並複製檔案的內容。

  1. 在 檔案中,找出 publishProfile 具有 屬性 publishMethod="FTP"的專案。 在此元素中 publishUrl,、 userNameuserPWD 屬性包含 FTPS 發佈的目標 URL 和認證。

主控方案類型

當您建立函式應用程式時,也會建立應用程式執行所在的主控方案。 方案可以有一或多個函式應用程式。 函式的功能、調整和定價取決於方案類型。 若要深入瞭解,請參閱 Azure Functions 裝載選項

您可以從 Azure 入口網站,或使用 Azure CLI 或 Azure PowerShell API,判斷函式應用程式所使用的方案類型。

下列值表示計劃類型:

方案類型 入口網站 Azure CLI/PowerShell
耗用 耗用 Dynamic
高級 Elastic 進階版 ElasticPremium
專用 (App Service) 各種 各種

若要判斷函式應用程式所使用的方案類型,請參閱 Azure 入口網站函式應用程式的 [概觀] 索引標籤中的 App Service 方案。 若要查看定價層,請選取 App Service 方案的名稱,然後從左窗格中選取 [屬性]。

View scaling plan in the portal

規劃移轉

您可以使用 Azure 入口網站 或 Azure CLI 命令,在取用方案與 Windows 上的 進階版 方案之間移轉函式應用程式。 在方案之間移轉時,請記住下列考慮:

  • 目前不支援直接移轉至專用 (App Service) 方案。
  • Linux 不支援移轉。
  • 來源方案和目標方案必須位於相同的資源群組和地理區域中。 如需詳細資訊,請參閱 將應用程式移至另一個 App Service 方案
  • 特定 CLI 命令取決於移轉的方向。
  • 當函式應用程式在計劃之間移轉時,函式執行中的停機時間就會發生。
  • 狀態和其他應用程式特定內容會維持不變,因為應用程式在移轉前後都會使用相同的 Azure 檔案儲存體 共用。

入口網站中的移轉

在 Azure 入口網站 中,流覽至您的取用或 進階版 方案應用程式,然後選擇 [App Service 方案] 底下的 [變更 App Service 方案]。 選取其他 方案類型、建立新類型的新的 App Service 方案,然後選取 [ 確定]。 如需詳細資訊,請參閱 將應用程式移至另一個 App Service 方案

取用至 進階版

使用下列程式,將取用方案移轉至 Windows 上的 進階版 方案:

  1. 執行 az functionapp plan create 命令,如下所示,在與現有函式應用程式相同的區域和資源群組中建立新的 App Service 方案 (Elastic 進階版:

    az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
    
  2. 執行 az functionapp update 命令,如下所示,將現有的函式應用程式遷移至新的 進階版 方案:

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
    
  3. 如果您不再需要先前的取用函式應用程式方案,請在確認您已成功移轉至新的函式之後,刪除原始函式應用程式方案。 執行 az functionapp plan list 命令,如下所示,以取得資源群組中所有取用方案的清單:

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
    

    您可以使用零個網站安全地刪除計劃,這是您從中移轉的方案。

  4. 執行 az functionapp plan delete 命令,如下所示,以刪除您從中移轉的取用方案。

    az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
    

取用 進階版

使用下列程式,從 進階版 方案移轉至 Windows 上的取用方案:

  1. 執行 az functionapp plan create 命令,如下所示,在與現有函式應用程式相同的區域和資源群組中建立新的函式應用程式(使用量)。 此命令也會建立新的取用方案,讓函式應用程式在其中執行。

    az functionapp create --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --storage-account <STORAGE_NAME>
    
  2. 執行 az functionapp update 命令,如下所示,將現有的函式應用程式移轉至新的取用方案。

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
    
  3. 執行 az functionapp delete 命令,如下所示,刪除您在步驟 1 中建立的函式應用程式,因為您只需要建立的計劃來執行現有的函式應用程式。

    az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
    
  4. 如果您不再需要先前的 進階版 函式應用程式方案,請在確認您已成功移轉至新方案之後,刪除原始函式應用程式方案。 在刪除 進階版 方案之前,您仍會繼續為其收費。 執行 az functionapp plan list 命令,如下所示,以取得資源群組中所有 進階版 計劃的清單。

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
    
  5. 執行 az functionapp plan delete 命令,如下所示,以刪除您從中移轉的 進階版 計劃。

    az functionapp plan delete --name <PREMIUM_PLAN> --resource-group <MY_RESOURCE_GROUP>
    

取得您的函式存取金鑰

HTTP 觸發的函式通常可以使用格式的 URL 來呼叫: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>。 當函式的授權設定以外的 anonymous值時,您也必須在要求中提供存取密鑰。 存取金鑰可以使用查詢字串或要求標頭在 URL ?code= 中提供。 若要深入瞭解,請參閱 函式存取金鑰。 有數種方式可以取得您的存取金鑰。

  1. 登入 Azure 入口網站,然後搜尋並選取 [函式應用程式]。

  2. 選取您想要驗證的函式。

  3. 在 [函式] 下方的左側導覽中,選取 [應用程式密鑰]。

    這會傳回主機密鑰,可用來存取應用程式中的任何函式。 它也會傳回系統金鑰,讓任何人能夠存取所有函式應用程式 API 的系統管理員層級。

您也可以藉由在 HTTP 觸發函式中的 [開發人員] 底下選取 [函式密鑰],藉以只針對特定函式使用金鑰來練習最低許可權。

Azure 入口網站 中的開發限制

在 Azure 入口網站開發函式時,您必須考慮這些限制:

  • 只有 JavaScript、PowerShell、Python 和 C# 腳本函式才支援入口網站內編輯。
  • 只有在取用方案中執行時,才支援 Python 入口網站內編輯。
  • 入口網站內編輯目前僅支援在入口網站中建立或修改的函式。
  • 當您從入口網站外部將程式代碼部署至函式應用程式時,您無法再編輯入口網站中該函式應用程式的任何程式碼。 在此情況下,只要繼續使用 本機開發即可。
  • 針對已編譯的 C# 函式、Java 函式和某些 Python 函式,您可以在入口網站中建立函式應用程式和相關資源。 不過,您必須在本機建立函式程式碼專案,然後將它發佈至 Azure。

可能的話,您應該在本機開發函式,並將程式代碼專案發佈至 Azure 中的函式應用程式。 如需詳細資訊,請參閱 在本機撰寫和測試 Azure Functions。

手動安裝擴充功能

C# 類別庫函式可以直接在類別庫專案中包含系結延伸模組的 NuGet 套件。 對於其他 non-.NET 語言和 C# 腳稿,您應該 使用延伸模組套件組合。 如果您必須手動安裝擴充功能,您可以在本機使用 Azure Functions Core Tools 來執行此動作。 如果您無法使用延伸模組套件組合,而且只能在入口網站中運作,則必須使用 Advanced Tools (Kudu) 直接在網站中手動建立 extensions.csproj 檔案。 請務必先從 host.json 檔案中移除 extensionBundle 元素。

這個相同的程式適用於您需要新增至應用程式的任何其他檔案。

重要

可能的話,您不應該直接在 Azure 的函式應用程式中編輯檔案。 建議您 在本機下載應用程式檔案、使用 Core Tools 安裝延伸模組 和其他套件、驗證您的變更,然後使用 Core Tools 或其他其中一個 支援的部署方法重新發布您的應用程式。

Azure 入口網站 內建的 Functions 編輯器可讓您直接在入口網站中更新函式程式代碼和組態 (function.json) 檔案。

  1. 選取您的函式應用程式,然後在 [函式] 下選取 [函式]。
  2. 選擇您的函式,然後選取 [開發人員] 底下的 [程序代碼 + 測試]。
  3. 選擇要編輯的檔案,然後在完成時選取 [ 儲存 ]。

應用程式根目錄中的檔案,例如 function.proj 或 extensions.csproj,必須使用 Advanced Tools (Kudu) 來建立和編輯

  1. 選取您的函式應用程式,然後在 [開發工具] 底下選取 [進階工具>][移至]。

  2. 如果出現提示,請使用您的 Azure 認證登入 SCM 網站。

  3. 從 [偵 錯] 主控台 功能表中,選擇 [CMD]。

  4. 流覽至 .\site\wwwroot,選取頂端的加號 (+) 按鈕,然後選取 [ 新增檔案]。

  5. 將檔案命名為 ,例如 extensions.csproj ,然後按 Enter 鍵。

  6. 選取新檔案旁的 [編輯] 按鈕、在檔案中新增或更新程式代碼,然後選取 [ 儲存]。

  7. 對於 extensions.csproj 之類的項目檔,請執行下列命令來重建延伸模組專案:

    dotnet build extensions.csproj
    

平台功能

函式應用程式會在 Azure App 服務 平台中執行並加以維護。 因此,您的函式應用程式可以存取 Azure 核心 Web 裝載平臺的大部分功能。 在 Azure 入口網站 中工作時,左窗格是您存取可在函式應用程式中使用之App Service 平台的許多功能。

下列矩陣表示載入方案和作業系統支援的入口網站功能:

功能 取用方案 進階方案 專用方案
進階工具 (Kudu) 窗戶: ✔
Linux: X
App Service 編輯器 窗戶: ✔
Linux: X
窗戶: ✔
Linux: X
窗戶: ✔
Linux: X
備份 X X
主控台 Windows:命令行
Linux: X
Windows:命令行
Linux:SSH
Windows:命令行
Linux:SSH

本文的其餘部分著重於入口網站中適用於函式應用程式的下列功能:

如需如何使用App Service 設定的詳細資訊,請參閱設定 Azure App 服務 設定

App Service 編輯器

The App Service editor

App Service 編輯器是進階入口網站內編輯器,可用來修改 JSON 組態檔和程式代碼檔案。 選擇此選項會啟動具有基本編輯器的個別瀏覽器索引標籤。 這可讓您與 Git 存放庫整合、執行和偵錯程式代碼,以及修改函式應用程式設定。 相較於內建函式編輯器,此編輯器會為您的函式提供增強的開發環境。

建議您考慮在本機計算機上開發函式。 當您在本機開發併發佈至 Azure 時,您的項目檔在入口網站中是唯讀的。 若要深入瞭解,請參閱 在本機撰寫和測試 Azure Functions。

主控台

Function app console

當您想要從命令行與函式應用程式互動時,入口網站內控制台是理想的開發人員工具。 常見的命令包括目錄和檔案建立和流覽,以及執行批處理檔和腳本。

在本機開發時,建議您使用 Azure Functions Core ToolsAzure CLI

進階工具 (Kudu)

Configure Kudu

App Service 的進階工具(也稱為 Kudu)可讓您存取函式應用程式的進階系統管理功能。 從 Kudu,您管理系統資訊、應用程式設定、環境變數、網站延伸模組、HTTP 標頭和伺服器變數。 您也可以瀏覽至函式應用程式的 SCM 端點來啟動 Kudu ,例如 https://<myfunctionapp>.scm.azurewebsites.net/

部署中心

當您使用原始檔控制解決方案來開發和維護函式程式代碼時,部署中心可讓您從原始檔控制建置及部署。 當您進行更新時,您的專案會建置並部署至 Azure。 如需詳細資訊,請參閱 Azure Functions 中的部署技術。

跨原始資源共用

為了防止用戶端上的惡意代碼執行,新式瀏覽器會封鎖 Web 應用程式對在不同網域中執行之資源的要求。 跨原始來源資源分享 (CORS) 可讓 Access-Control-Allow-Origin 標頭宣告允許在函式應用程式上呼叫端點的來源。

入口網站

當您為函式應用程式設定 [允許的來源] 列表時, Access-Control-Allow-Origin 標頭會自動新增至函式應用程式中 HTTP 端點的所有回應。

Configure function app's CORS list

如果有另一個網域專案,則會忽略通配符 \ 。

az functionapp cors add使用 命令將網域新增至允許的來源清單。 下列範例會新增 contoso.com 網域:

az functionapp cors add --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--allowed-origins https://contoso.com

az functionapp cors show使用 命令來列出目前允許的來源。

驗證

Configure authentication for a function app

當函式使用 HTTP 觸發程式時,您可以要求先進行驗證的呼叫。 App Service 支援 Microsoft Entra 驗證和與社交提供者登入,例如 Facebook、Microsoft 和 Twitter。 如需設定特定驗證提供者的詳細資訊,請參閱 Azure App 服務 驗證概觀

下一步