管理您的函數應用程式
在 Azure Functions 中,函數應用程式會提供個別函數的執行內容。 函數應用程式行為會套用至指定之函數應用程式所裝載的所有函數。 函數應用程式中的所有函式都必須是相同語言。
函數應用程式中的個別函式會一起部署並一起調整。 相同函數應用程式中的所有函式都會隨著函數應用程式調整而共用每個執行個體的資源。
連接字串、環境變數和其他應用程式設定會針對每個函式應用程式個別定義。 函數應用程式之間必須共用的任何資料,都應該儲存於保存的存放區外部。
在 Azure 入口網站中開始使用
若要檢視函數應用程式中的應用程式設定,請遵循下列步驟:
使用 Azure 帳戶登入 Azure 入口網站。 搜尋函數應用程式並加以選取。
在函數應用程式左窗格中,展開 [設定],選取 [環境變數],然後選取 [應用程式設定] 索引標籤。
使用應用程式設定
除了 Azure Functions 使用的預先定義應用程式設定外,您也可以依照函數程式碼的需求以建立任意數目的應用程式設定。 如需詳細資訊,請參閱 Azure Functions 的應用程式設定參考。
這些設定會以加密方式儲存。 如需詳細資訊,請參閱 應用程式設定安全性。
您可以從 Azure 入口網站並使用 Azure CLI 與 Azure PowerShell 來管理應用程式設定。 您也可以從 Visual Studio Code 與 Visual Studio 管理應用程式設定。
若要檢視應用程式設定,請參閱開始使用 Azure 入口網站。
[應用程式設定] 索引標籤會維護函數應用程式所使用的設定:
若要檢視應用程式設定的值,請選取 [顯示值]。
若要新增設定,請選取 [+ 新增],然後輸入新索引鍵/值組的 [名稱] 和 [值]。
az functionapp config appsettings list
命令會傳回現有的應用程式設定,例如:
az functionapp config appsettings list --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME>
az functionapp config appsettings set
命令會新增或更新應用程式設定。 下列範例會建立一個設定,其中具有名為 CUSTOM_FUNCTION_APP_SETTING
的索引鍵與 12345
的值:
az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings CUSTOM_FUNCTION_APP_SETTING=12345
Get-AzFunctionAppSetting
Cmdlet 會傳回現有的應用程式設定,例如:
Get-AzFunctionAppSetting -Name <FUNCTION_APP_NAME> -ResourceGroupName <RESOURCE_GROUP_NAME>
Update-AzFunctionAppSetting
命令會新增或更新應用程式設定。 下列範例會建立一個設定,其中具有名為 CUSTOM_FUNCTION_APP_SETTING
的索引鍵與 12345
的值:
Update-AzFunctionAppSetting -Name <FUNCTION_APP_NAME> -ResourceGroupName <RESOURCE_GROUP_NAME> -AppSetting @{"CUSTOM_FUNCTION_APP_SETTING" = "12345"}
使用應用程式設定
這些函數應用程式設定值在您的程式碼中也可以做為環境變數加以讀取。 如需詳細資訊,請參閱這些特定語言參考文章的〈環境變數〉章節:
當您在本機開發函數應用程式時,必須在 local.settings.json 專案檔中維護這些值的本機複本。 如需詳細資訊,請參閱本機設定檔。
FTPS 部署設定
Azure Functions 支援使用 FTPS 將專案程式碼部署至函數應用程式。 由於此部署方法會要求您同步觸發程序,因此不建議使用此方法。 若要安全地傳輸專案檔,請一律使用 FTPS,而不是 FTP。
若要取得 FTPS 部署所需的認證,請使用下列其中一種方法:
您可以在 Azure 入口網站中下載函數應用程式的發行設定檔,以取得 FTPS 發佈認證。
重要
發行設定檔包含重要的安全性認證。 一律保護本機電腦上的下載檔案。
若要下載函式應用程式的發佈設定檔:
在 Azure 入口網站中,找出函數應用程式的頁面,展開左側資料行中的 [設定>組態]。
在 [組態] 頁面中,選取 [一般設定] 索引標籤,並確定 SCM 基本驗證發佈認證已 [開啟]。 當此設定為 [關閉] 時,您無法使用發佈設定檔,因此請選取 [開啟],然後選取 [儲存]。
返回函數應用程式的 [概觀] 頁面,然後選取 [取得發佈設定檔]。
儲存並複製檔案的內容。
- 在檔案中,找出具有
publishMethod="FTP"
屬性的 publishProfile
元素。 在此元素中,publishUrl
、userName
和 userPWD
屬性包含 FTPS 發佈的目標 URL 和認證。
執行這個 Azure CLI 命令,從發行設定檔傳回 FTPS 認證。
az functionapp deployment list-publishing-profiles --name <APP_NAME> --resource-group <GROUP_NAME> --query "[?publishMethod=='FTP'].{URL:publishUrl, username:userName, password:userPWD}" -o table
在此範例中,將 <APP_NAME>
取代為您的函數應用程式名稱,將 <GROUP_NAME>
取代為資源群組名稱。 傳回的 URL
、username
和 password
資料行包含 FTPS 發佈的目標 URL 和認證。
執行此 Azure PowerShell 命令,從發行設定檔傳回 FTPS 認證。
$profile = [xml](Get-AzWebAppPublishingProfile -ResourceGroupName "<GROUP_NAME>" -Name "<APP_NAME>" -Format "Ftp")
$profile.publishData.publishProfile | Where-Object -Property publishMethod -eq Ftp | Select-Object -Property @{Name="URL"; Expression = {$_.publishUrl}},
@{Name="username"; Expression = {$_.userName}}, @{Name="password"; Expression = {$_.userPWD}} | Format-Table
在此範例中,將 <APP_NAME>
取代為您的函數應用程式名稱,將 <GROUP_NAME>
取代為資源群組名稱。 傳回的 URL
、username
和 password
資料行包含 FTPS 發佈的目標 URL 和認證。
主控方案類型
建立函數應用程式時,您也會在該應用程式執行所在的位置建立主控方案。 方案可以有一或多個函數應用程式。 函式的功能、調整與定價取決於方案類型。 如需詳細資訊,請參閱 Azure Functions 裝載選項。
您可以從 Azure 入口網站,或使用 Azure CLI 或 Azure PowerShell API,判斷函數應用程式所使用的方案類型。
下列值表示方案類型:
方案類型 |
Azure 入口網站 |
Azure CLI/PowerShell |
耗用 |
耗用 |
Dynamic |
高級 |
ElasticPremium |
ElasticPremium |
專用 (App Service) |
各種 |
各種 |
若要判斷您函數應用程式所用的方案類型,請參閱 Azure 入口網站中,函數應用程式 [概觀] 頁面中的 [App Service 方案]。
若要查看定價層,請選取 [App Service方案] 的名稱,然後從左窗格中選取 [設定] > [屬性]。
執行下列 Azure CLI 命令以取得您的主控方案類型:
functionApp=<FUNCTION_APP_NAME>
resourceGroup=FunctionMonitoringExamples
appServicePlanId=$(az functionapp show --name $functionApp --resource-group $resourceGroup --query appServicePlanId --output tsv)
az appservice plan list --query "[?id=='$appServicePlanId'].sku.tier" --output tsv
在上一個範例中,分別以資源群組與函數應用程式名稱取代 <RESOURCE_GROUP>
與 <FUNCTION_APP_NAME>
。
執行下列 Azure PowerShell 命令以取得您的主控方案類型:
$FunctionApp = '<FUNCTION_APP_NAME>'
$ResourceGroup = '<RESOURCE_GROUP>'
$PlanID = (Get-AzFunctionApp -ResourceGroupName $ResourceGroup -Name $FunctionApp).AppServicePlan
(Get-AzFunctionAppPlan -Name $PlanID -ResourceGroupName $ResourceGroup).SkuTier
在上一個範例中,分別以資源群組與函數應用程式名稱取代 <RESOURCE_GROUP>
與 <FUNCTION_APP_NAME>
。
規劃移轉
您可以在 Windows 上的使用量方案與進階方案之間移轉函數應用程式。 在方案之間移轉時,請記住下列考量:
- 不支援直接移轉至專用 (App Service) 方案。
- Linux 不支援移轉。
- 來源方案和目標方案必須位於相同的資源群組和地理區域中。 如需詳細資訊,請參閱將應用程式移至另一個 App Service 方案。
- 特定 CLI 命令相依於移轉的方向。
- 當函數應用程式在方案之間移轉時,函式執行就會發生停機。
- 狀態和其他應用程式特定內容會維持不變,因為應用程式在移轉前後都會使用相同的 Azure 檔案儲存體共用。
您可以使用下列工具來移轉方案:
您可以使用 Azure CLI 命令以手動建立新的方案、將您的應用程式切換至使用新的方案,以及刪除原始方案。
您可以使用 Azure PowerShell 命令以手動建立新的方案、將您的應用程式切換至使用新的方案,以及刪除原始方案。
選擇 Windows 上應用程式的移轉方向。
在 Azure 入口網站中,瀏覽至您的「使用量」方案應用程式,然後選擇 [App Service 方案] 底下的 [變更 App Service 方案]。
在 [方案類型] 底下選取 [進階],建立新的進階方案並選取 [確定]。
如需詳細資訊,請參閱將應用程式移至另一個 App Service 方案。
在 Azure 入口網站中,瀏覽至您的「進階」方案應用程式,然後選擇 [App Service 方案] 底下的 [變更 App Service 方案]。
在 [方案類型] 底下選取 [使用量],建立新的使用量方案並選取 [確定]。
如需詳細資訊,請參閱將應用程式移至另一個 App Service 方案。
在 Windows 上使用下列程序,以從取用方案移轉至進階方案:
執行下列 az functionapp create 命令,在與現有函數應用程式相同的區域和資源群組中,建立新的 App Service 方案 (彈性進階):
az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
執行下列 az functionapp update 命令,將現有的函數應用程式移轉至新的進階方案:
az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
當您不再需要應用程式原始使用的使用量方案,請在確認您已成功移轉至新的方案之後,刪除原始方案。 執行下列 az functionapp plan list 命令,以取得資源群組中,所有使用量方案的清單:
az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
您可以使用零個網站安全地刪除方案,其為您從中移轉的方案。
執行下列 az functionapp plan delete 命令,以刪除您作為移轉來源的使用量方案。
az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
在 Windows 上使用下列程序,以從進階方案移轉至取用方案:
執行下列 az functionapp create 命令,在與現有函數應用程式相同的區域和資源群組中,建立新的函數應用程式 (使用量)。 此命令也會建立函數應用程式執行所在的新使用量方案:
az functionapp create --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --consumption-plan-location <REGION> --runtime <LANGUAGE_RUNTIME> --functions-version 4 --storage-account <STORAGE_NAME>
執行 az functionapp show 命令 (如下所示) 以取得使用新函數應用程式建立的使用量方案名稱:
az functionapp show --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --query "{appServicePlanId}" -o tsv
使用量方案名稱是已傳回完成資源識別碼的最終部分。
執行下列 az functionapp update 命令,將現有的函數應用程式移轉至新的使用量方案:
az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
執行下列 az functionapp delete 命令,以刪除您在步驟 1 中建立的函數應用程式,因為您只需要針對執行現有函數應用程式而建立的方案:
az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
當您不再需要應用程式原始使用的進階方案,請在確認您已成功移轉至新的方案之後,刪除原始方案。 在刪除「進階」方案之前,您仍要繼續支付費用。 執行下列 az functionapp plan list 命令,以取得資源群組中所有進階方案的清單:
az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
執行下列 az functionapp plan delete 命令,以刪除您作為移轉來源的進階方案:
az functionapp plan delete --name <PREMIUM_PLAN> --resource-group <MY_RESOURCE_GROUP>
在 Windows 上使用下列程序,以從取用方案移轉至進階方案:
執行下列 New-AzFunctionAppPlan 命令,在與現有函數應用程式相同的區域和資源群組中,建立新的 App Service 方案 (彈性進階):
New-AzFunctionAppPlan -Name <NEW_PREMIUM_PLAN_NAME> -ResourceGroupName <MY_RESOURCE_GROUP> -Location <REGION> -Sku EP1 -WorkerType Windows
執行下列 Update-AzFunctionApp 命令,將現有的函數應用程式移轉至新的進階方案:
Update-AzFunctionApp -Name <MY_APP_NAME> -ResourceGroupName <MY_RESOURCE_GROUP> -PlanName <NEW_PREMIUM_PLAN> -Force
當您不再需要應用程式原始使用的使用量方案時,您可以執行 Remove-AzFunctionAppPlan 命令 (如下所示) 以刪除您從中移轉的使用量方案:
Remove-AzFunctionAppPlan -Name <CONSUMPTION_PLAN_NAME> -ResourceGroupName <MY_RESOURCE_GROUP> -Force
在 Windows 上使用下列程序,以從進階方案移轉至取用方案:
執行下列 New-AzFunctionApp 命令,在與現有函數應用程式相同的區域和資源群組中,建立新的函數應用程式 (使用量)。 此命令也會建立函數應用程式執行所在的新使用量方案:
New-AzFunctionApp -Name <NEW_CONSUMPTION_APP_NAME> -StorageAccountName <STORAGE_NAME> -Location <REGION> -ResourceGroupName <MY_RESOURCE_GROUP> -Runtime <LANGUAGE_RUNTIME> -RuntimeVersion <LANGUAGE_VERSION> -FunctionsVersion 4 -OSType Windows
執行 Get-AzFunctionApp 命令 (如下所示) 以取得使用新函數應用程式建立的使用量方案名稱:
Get-AzFunctionApp -ResourceGroupName <MY_RESOURCE_GROUP> -Name <NEW_CONSUMPTION_APP_NAME> | Select-Object -Property AppServicePlan | Format-List
執行下列 Update-AzFunctionApp 命令,將現有的函數應用程式移轉至新的使用量方案:
Update-AzFunctionApp -Name <MY_APP_NAME> -ResourceGroupName <MY_RESOURCE_GROUP> -PlanName <NEW_CONSUMPTION_PLAN> -Force
當您不再需要應用程式原始使用的使用量方案時,您可以執行 Remove-AzFunctionAppPlan 命令 (如下所示) 以刪除您從中移轉的使用量方案:
Remove-AzFunctionAppPlan -Name <CONSUMPTION_PLAN_NAME> -ResourceGroupName <MY_RESOURCE_GROUP> -Force
Azure 入口網站中的開發限制
下表顯示支援入口網站內編輯的作業系統與語言:
語言 |
Windows 使用量 |
Windows 進階 |
Windows 專用 |
Linux 使用量 |
Linux 進階 |
Linux 專用 |
C# |
|
|
|
|
|
|
Java |
|
|
|
|
|
|
JavaScript (Node.js) |
✔ |
✔ |
✔ |
|
✔ |
✔ |
Python |
|
|
|
✔ |
✔ |
✔ |
PowerShell |
✔ |
✔ |
✔ |
|
|
|
TypeScript (Node.js) |
|
|
|
|
|
|
在 Azure 入口網站中開發函數時,請考慮以下限制:
- 僅在入口網站中建立或修改的函數支援入口網站內輯。
- 僅 JavaScript、PowerShell、Python 和 C# 指令碼函數支援入口網站內編輯。
- 預覽版本的彈性使用量方案不支援入口網站內編輯。
- 當您從 Azure 入口網站外部將程式碼部署至函數應用程式時,您就無法再於入口網站中編輯該函數應用程式的任何程式碼。 在此情況下,繼續使用本機開發。
- 針對 Python,入口網站目前不支援使用自定義模組進行開發。 若要將自定義模組新增至函式應用程式,您必須 在本機開發您的應用程式。
- 針對已編譯的 C# 函數和 Java 函數和,您可以在入口網站中建立函數應用程式和相關資源。 不過,您必須在本機建立函式程式碼專案,然後將其發佈至 Azure。
可能的話,請在本機開發函數,並將程式碼專案發佈至 Azure 中的函數應用程式。 如需詳細資訊,請參閱如何在本機撰寫 Azure Functions 程式碼並進行測試。
手動安裝延伸模組
C# 類別庫函式可以在類別庫專案中,直接納入繫結延伸模組的 NuGet 套件。 對於其他非 .NET 語言和 C# 指令碼,您應該使用延伸模組套件組合。 如果您必須手動安裝延伸模組,您可以在本機使用 Azure Functions Core Tools 來執行此作業。 如果您無法使用延伸模組套件組合,而且只能在入口網站中運作,則必須使用進階工具 (Kudu),直接在網站中手動建立 extensions.csproj 檔案。 請務必先從 host.json 檔案中移除 extensionBundle
元素。
此相同流程適用於您需要新增至應用程式的任何其他檔案。
Azure 入口網站內建的 Functions 編輯器,可讓您直接在入口網站中更新函式程式碼和組態檔:
選取您的函數應用程式,然後在 [函數] 下選取 [函數]。
選擇您的函式,然後在 [開發人員] 下選取 [程式碼 + 測試]。
選擇要編輯的檔案,然後在完成時選取 [儲存]。
您必須使用進階工具 (Kudu) 來建立和編輯 function.proj 或 extensions.csproj 等應用程式根目錄中的檔案:
選取您的函數應用程式,展開 [開發工具] ,選取 [進階工具]>[移至]。
若出現提示,請利用您的 Azure 憑證登入原始檔控制管理 (SCM) 網站。
從 [偵錯主控台] 功能表中,選擇 [CMD]。
瀏覽至 .\site\wwwroot
,選取頂端的加號 (+) 按鈕,然後選取 [新增檔案]。
命名檔案名稱 (例如 extensions.csproj
),然後按下 Enter。
選取新檔案旁的編輯按鈕、在檔案中新增或更新程式碼,然後選取 [儲存]。
針對 extensions.csproj 之類的專案檔,請執行下列命令來重建延伸模組專案:
dotnet build extensions.csproj
函數應用程式在 Azure App Service 平台中執行並由此平台維護。 因此,您的函數應用程式可以存取 Azure 核心虛擬主機平台的大多數功能。 當使用 Azure 入口網站時,左側窗格可供您存取許多可在函數應用程式中使用的 App Service 平台功能。
下列矩陣表示裝載方案和作業系統的 Azure 入口網站功能支援:
功能 |
取用方案 |
彈性使用量方案 |
進階方案 |
專用方案 |
進階工具 (Kudu) |
Windows:✔ Linux:X |
X |
✔ |
✔ |
App Service 編輯器 |
Windows:✔ Linux:X |
X |
Windows:✔ Linux:X |
Windows:✔ Linux:X |
備份 |
X |
X |
X |
✔ |
主控台 |
Windows:命令列 Linux:X |
X |
Windows:命令列 Linux:SSH |
Windows:命令列 Linux:SSH |
本文其餘部分將聚焦於入口網站中,對於下列函數應用程式相當實用的功能:
如需有關如何使用 App Service 設定的詳細資訊,請參閱設定 Azure App Service 設定。
App Service 編輯器
App Service 編輯器是一個進階的入口網站內編輯器,可供您用來修改 JSON 組態檔和類似的程式碼檔案。 選擇此選項會啟動一個含有基本編輯器的個別瀏覽器索引標籤。 此編輯器可讓您與 Git 存放庫整合、執行程式碼和進行偵錯,以及修改函數應用程式設定。 與內建函式編輯器相比,此編輯器為您的函式提供了增強開發環境。
建議您考慮在本機電腦上開發函式。 在本機開發並發佈至 Azure 時,您的專案檔在 Azure 入口網站中會是唯讀狀態。 如需詳細資訊,請參閱如何在本機撰寫 Azure Functions 程式碼並進行測試。
主控台
當您偏好從命令列與函數應用程式進行互動時,入口網站內主控台是一個理想的開發人員工具。 常用命令包含目錄和檔案建立與瀏覽,以及執行批次檔和指令碼。
在本機開發時,建議您使用 Azure Functions Core Tools 與 Azure CLI。
進階工具 (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 端點的所有回應。
如果有另一個網域項目,則會忽略萬用字元 (*)。
使用 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
命令列出目前允許的原點。
您目前無法使用 Azure PowerShell更新 CORS 設定。
驗證
當函數使用 HTTP 觸發程序時,您可以要求呼叫必須先經過驗證。 App Service 支援 Microsoft Entra 驗證及使用社交提供者登入,例如 Facebook、Microsoft 和 X。如需設定特定驗證提供者的相關資訊,請參閱Azure App Service 驗證概觀。
相關內容