管理您的函數應用程式

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

函數應用程式中的個別函式會一起部署並一起調整。 相同函數應用程式中的所有函式都會隨著函數應用程式調整而共用每個執行個體的資源。

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

在 Azure 入口網站中開始使用

注意

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

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

  2. 在左窗格的 [設定] 下,選取 [設定]

    Function app overview in the Azure portal

您可以從概觀頁面巡覽至管理函數應用程式所需的所有項目,尤其是 [應用程式設定][Platform features] \(平台功能\)

使用應用程式設定

您可以建立函式程式碼所需的任意數目應用程式設定。 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. 在檔案中,找出具有 publishMethod="FTP" 屬性的 publishProfile 元素。 在此元素中,publishUrluserNameuserPWD 屬性包含 FTPS 發佈的目標 URL 和認證。

主控方案類型

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

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

下列值表示方案類型:

方案類型 入口網站 Azure CLI/PowerShell
耗用 耗用 Dynamic
高級 ElasticPremium 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 方案 (彈性進階):

    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 以外的值時,您也必須在要求中提供存取金鑰。 存取金鑰可從使用 ?code= 查詢字串的 URL 或要求標頭中提供。 若要深入了解,請參閱函式存取金鑰。 有數種方式可取得存取金鑰。

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

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

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

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

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

Azure 入口網站中的開發限制

Azure 入口網站中開發函式時,您必須考慮以下限制:

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

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

手動安裝延伸模組

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

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

重要

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

Azure 入口網站內建的 Functions 編輯器,可讓您直接在入口網站中更新函式程式碼和組態檔。

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

您必須使用進階工具 (Kudu) 來建立和編輯 function.proj 或 extensions.csproj 等應用程式根目錄中的檔案。

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

  2. 若出現提示,請利用您的 Azure 憑證登入 SCM 網站。

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

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

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

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

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

    dotnet build extensions.csproj
    

平台功能

函數應用程式在 Azure App Service 平台中執行並由此平台維護。 因此,您的函數應用程式可以存取 Azure 核心虛擬主機平台的大多數功能。 當在 Azure 入口網站中操作時,左側窗格可供您存取許多可在函數應用程式中使用的 App Service 平台功能。

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

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

本文其餘部分將聚焦於入口網站中,對於下列函數應用程式相當實用的功能:

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

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 端點 (例如 https://<myfunctionapp>.scm.azurewebsites.net/) 來啟動 Kudu

部署中心

當您使用原始檔控制解決方案來開發及維護函式程式碼時,部署中心可讓您從原始檔控制建置及部署。 當您進行更新時,您的專案會建置並部署至 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 Service 驗證概觀

下一步