Azure Functions 的应用设置参考

函数应用中的应用程序设置包含对该函数应用的所有函数产生影响的配置选项。 可将这些设置作为环境变量进行访问。 本文列出可在函数应用中使用的应用设置。

可以通过以下几种方法添加、更新和删除函数应用设置:

如果更改函数应用设置,则需要重启函数应用。

在本文中,为了便于阅读,示例连接字符串值已被截断。

应用设置注意事项

使用应用设置时,应注意以下注意事项:

  • 如果更改函数应用设置,则需要重启函数应用。

  • 在设置名称中,双下划线(__)和分号(:)被视为保留值。 双下划线在 Windows 和 Linux 上解释为分层分隔符,而冒号仅在 Linux 上以相同的方式解释。 例如,设置 AzureFunctionsWebHost__hostid=somehost_123456 将解释为以下 JSON 对象:

    "AzureFunctionsWebHost": {
        "hostid": "somehost_123456"
    }
    

    在本文中,仅使用双下划线,因为它们在两个操作系统上都受支持。 支持托管标识连接的大多数设置都使用双下划线。

  • 当 Functions 在本地运行时,将在 local.settings.jsonValues 集合中指定应用设置。

  • host.json 文件和 local.settings.json 文件中提供了其他函数应用程序配置选项。

  • 可以使用应用程序设置替代 host.json 设置值,而不必更改 host.json 文件本身。 这对于需要针对特定环境配置或修改特定 host.json 设置的方案很有用。 这也让你可以更改 host.json 设置,而不必重新发布项目。 若要了解详细信息,请参阅 host.json 参考文章

  • 本文记载了与函数应用最相关的设置。 由于 Azure Functions 在应用服务上运行,因此可能还支持其他应用程序设置。 要了解详细信息,请参阅 Azure 应用服务中的环境变量和应用设置

  • 一些方案还要求使用应用服务网站设置中记录的设置。

  • 更改任何只读应用服务应用程序设置可能会使函数应用进入无响应状态。

  • 使用 REST API(包括 ARM 模板)更新应用程序设置时请小心操作。 由于这些 API 替换了现有的应用程序设置,因此在使用 REST API 或 ARM 模板添加或修改设置时必须包含所有现有设置。 如果可能,请使用 Azure CLI 或 Azure PowerShell 以编程方式使用应用程序设置。 有关详细信息,请参阅使用应用程序设置

APPINSIGHTS_INSTRUMENTATIONKEY

Application Insights 的检测密钥。 不要同时使用 APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING。 如果可能,请使用 APPLICATIONINSIGHTS_CONNECTION_STRING。 当 Application Insights 在主权云中运行时,必须使用 APPLICATIONINSIGHTS_CONNECTION_STRING。 有关详细信息,请参阅如何配置对 Azure Functions 的监视

示例值
APPINSIGHTS_INSTRUMENTATIONKEY 55555555-af77-484b-9032-64f83bb83bb

不要同时使用 APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING。 建议使用 APPLICATIONINSIGHTS_CONNECTION_STRING

注意

对检测密钥引入的支持将于 2025 年 3 月 31 日结束。 检测密钥引入功能将会继续工作,但我们将不再为该功能提供更新或支持。 转换为连接字符串,以利用新功能

APPLICATIONINSIGHTS_CONNECTION_STRING

Application Insights 的连接字符串。 不要同时使用 APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING。 虽然建议在所有情况下使用 APPLICATIONINSIGHTS_CONNECTION_STRING,但在以下情况下需要使用:

  • 当函数应用需要通过连接字符串提供支持的已添加自定义项时。
  • 当 Application Insights 实例在需要自定义终结点的主权云中运行时。

有关详细信息,请参阅连接字符串

示例值
APPLICATIONINSIGHTS_CONNECTION_STRING InstrumentationKey=...

AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL

重要

Azure Functions 代理是 Azure Functions 运行时 1.x 到 3.x 版的旧功能。 有关 4.x 版本中旧版支持的详细信息,请参阅 Functions 代理

默认情况下,Functions 代理使用快捷方式从代理直接将 API 调用发送到同一函数应用中的函数。 使用此快捷方式取代创建新的 HTTP 请求。 此设置让你能够禁用该快捷方式行为。

说明
AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL true 具有指向本地函数应用中函数的后端 URL 的调用不会直接发送到函数, 相反,请求会定向回函数应用的 HTTP 前端。
AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL false 具有指向本地函数应用中函数的后端 URL 的调用会直接转发到函数。 默认值为 false

AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES

重要

Azure Functions 代理是 Azure Functions 运行时 1.x 到 3.x 版的旧功能。 有关 4.x 版本中旧版支持的详细信息,请参阅 Functions 代理

此设置控制在将字符 %2F 插入后端 URL 时,是否将其解释为路由参数中的斜杠。

密钥 说明
AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES true 包含编码斜杠的路由参数已解码。
AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES false 所有路由参数均原样传递,这是默认行为。

例如,考虑位于 myfunction.com 域的函数应用的 proxies.json 文件。

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "root": {
            "matchCondition": {
                "route": "/{*all}"
            },
            "backendUri": "example.com/{all}"
        }
    }
}

如果 AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES 设置为 true,则 URL example.com/api%2ftest 解析为 example.com/api/test。 默认情况下,URL 保持为 example.com/test%2fapi 不变。 有关详细信息,请参阅 Functions 代理

AZURE_FUNCTIONS_ENVIRONMENT

在 Azure 中运行时,配置函数应用的运行时托管环境。 此值在初始化期间读取,且运行时仅遵循以下值:

说明
Production 表示一个生产环境,其中日志记录减少且性能全面优化。 如果未设置 AZURE_FUNCTIONS_ENVIRONMENT 或将其设置为不受支持的值,则这是默认值。
Staging 表示过渡环境,例如在过渡槽中运行时。
Development 开发环境支持更详细的日志记录和其他性能优化。 在本地计算机上运行时,Azure Functions Core Tools 会将 AZURE_FUNCTIONS_ENVIRONMENT 设置为 Development。 无法在 local.settings.json 文件中重写此设置。

如果需要将 Azure 中的运行时环境更改为 Production 以外的内容,请使用此设置,而不是 ASPNETCORE_ENVIRONMENT。 有关详细信息,请参阅基于环境的 Startup 类和方法

此设置在 Functions 运行时的 1.x 版本中不可用。

AzureFunctionsJobHost__*

在 Functions 运行时的版本 2.x 和更高版本中,应用程序设置可以替代当前环境中的 host.json 设置。 这些替代表示为名为 AzureFunctionsJobHost__path__to__setting 的应用程序设置。 有关详细信息,请参阅替代 host.json 值

AzureFunctionsWebHost__hostid

设置给定函数应用的主机 ID,该 ID 应是唯一 ID。 此设置将替代自动为应用生成的主机 ID 值。 仅当需要防止共享同一存储帐户的函数应用之间的主机 ID 冲突时,才使用此设置。

主机 ID 必须满足以下要求:

  • 长度为 1 到 32 个字符
  • 只能包含小写字母、数字和短划线
  • 不能以短划线开头或结尾
  • 不能包含连续的短划线

生成 ID 的一种简单方法是获取 GUID、删除短划线,并将其转换为小写,例如将 GUID 1835D7B5-5C98-4790-815D-072CC94C6F71 转换为值 1835d7b55c984790815d072cc94c6f71

示例值
AzureFunctionsWebHost__hostid myuniquefunctionappname123456789

有关详细信息,请参阅主机 ID 注意事项

AzureWebJobsDashboard

此设置已弃用,仅支持在 Azure Functions 运行时 1.x 版本上运行。

用于存储日志并在门户上的“监视”选项卡中显示这些日志的可选存储帐户连接字符串。 存储帐户必须是支持 Blob、队列和表的通用帐户。 有关详细信息,请参阅存储帐户要求

示例值
AzureWebJobsDashboard DefaultEndpointsProtocol=https;AccountName=...

AzureWebJobsDisableHomepage

值为 true 将禁用针对函数应用根 URL 显示的默认登陆页。 默认值为 false

示例值
AzureWebJobsDisableHomepage true

如果省略此应用设置或将其设置为 false,则会显示类似于以下示例的页来响应 URL <functionappname>.chinacloudsites.cn

Function app landing page

AzureWebJobsDotNetReleaseCompilation

true 表示在编译 .NET 代码时使用“发布”模式;false 表示使用“调试”模式。 默认值为 true

示例值
AzureWebJobsDotNetReleaseCompilation true

AzureWebJobsFeatureFlags

要启用的 beta 功能的逗号分隔列表。 由这些标志启用的 Beta 功能尚未处于生产就绪状态,但在发布之前可出于试验目的启用这些功能。

示例值
AzureWebJobsFeatureFlags feature1,feature2,EnableProxies

EnableProxies 添加到此列表,以便在计划迁移到 Azure API 管理时,在 Functions 运行时版本 4.x 上重新启用代理。 有关详细信息,请参阅在 Functions v4.x 中重新启用代理

AzureWebJobsKubernetesSecretName

指示用于存储密钥的 Kubernetes 机密资源。 仅在 Kubernetes 中运行时受支持。 此设置要求将 AzureWebJobsSecretStorageType 设置为 kubernetes。 如果未设置 AzureWebJobsKubernetesSecretName,则会将存储库视为只读。 在这种情况下,必须在部署之前生成值。 在部署到 Kubernetes 时,Azure Functions Core Tools 会自动生成值。

示例值
AzureWebJobsKubernetesSecretName <SECRETS_RESOURCE>

若要了解详细信息,请参阅机密存储库

AzureWebJobsSecretStorageKeyVaultClientId

用户分配的托管标识或应用注册的客户端 ID,用于访问存储密钥的保管库。 此设置要求将 AzureWebJobsSecretStorageType 设置为 keyvault。 在 4.x 版及更高版本的 Functions 运行时中受支持。

示例值
AzureWebJobsSecretStorageKeyVaultClientId <CLIENT_ID>

若要了解详细信息,请参阅机密存储库

AzureWebJobsSecretStorageKeyVaultClientSecret

用户分配的托管标识或应用注册的客户端 ID 的机密,用于访问存储密钥的保管库。 此设置要求将 AzureWebJobsSecretStorageType 设置为 keyvault。 在 4.x 版及更高版本的 Functions 运行时中受支持。

示例值
AzureWebJobsSecretStorageKeyVaultClientSecret <CLIENT_SECRET>

若要了解详细信息,请参阅机密存储库

AzureWebJobsSecretStorageKeyVaultName

用于存储密钥的密钥保管库实例的名称。 仅 Functions 运行时版本 3.x 支持此设置。 对于版本 4.x,请改为使用 AzureWebJobsSecretStorageKeyVaultUri。 此设置要求将 AzureWebJobsSecretStorageType 设置为 keyvault

保管库必须有一项与承载资源的系统分配托管标识相对应的访问策略。 访问策略应向标识授予以下机密权限:GetSetListDelete
在本地运行函数时,将使用开发人员标识,且设置必须位于 local.settings.json 文件中。

示例值
AzureWebJobsSecretStorageKeyVaultName <VAULT_NAME>

若要了解详细信息,请参阅机密存储库

AzureWebJobsSecretStorageKeyVaultTenantId

用于访问存储密钥的保管库的应用注册的租户 ID。 此设置要求将 AzureWebJobsSecretStorageType 设置为 keyvault。 在 4.x 版及更高版本的 Functions 运行时中受支持。 若要了解详细信息,请参阅机密存储库

示例值
AzureWebJobsSecretStorageKeyVaultTenantId <TENANT_ID>

AzureWebJobsSecretStorageKeyVaultUri

用于存储密钥的密钥保管库实例的 URI。 在 4.x 版及更高版本的 Functions 运行时中受支持。 这是使用密钥保管库实例进行密钥存储的推荐设置。 此设置要求将 AzureWebJobsSecretStorageType 设置为 keyvault

AzureWebJobsSecretStorageKeyVaultUri 值应该是“密钥保管库概述”标签中显示的“保管库 URI”的完整值,包括

保管库必须有一项与承载资源的系统分配托管标识相对应的访问策略。 访问策略应向标识授予以下机密权限:GetSetListDelete
在本地运行函数时,将使用开发人员标识,且设置必须位于 local.settings.json 文件中。

示例值
AzureWebJobsSecretStorageKeyVaultUri https://<VAULT_NAME>.vault.azure.cn

若要了解详细信息,请参阅使用 Azure Functions 的密钥保管库引用

AzureWebJobsSecretStorageSas

用于存储密钥的第二个存储帐户的 Blob 存储 SAS URL。 默认情况下,Functions 使用 AzureWebJobsStorage 中设置的帐户。 使用此机密存储选项时,请确保未显示设置 AzureWebJobsSecretStorageType 或将其设置为 blob。 若要了解详细信息,请参阅机密存储库

示例值
AzureWebJobsSecretStorageSas <BLOB_SAS_URL>

AzureWebJobsSecretStorageType

指定用于密钥存储的存储库或提供程序。 密钥在存储之前始终使用函数应用特有的密钥进行加密。

密钥 说明
AzureWebJobsSecretStorageType blob 密钥存储在通过 AzureWebJobsStorage 设置提供的帐户中的 Blob 存储容器中。 未设置 AzureWebJobsSecretStorageType 时,Blob 存储将是默认行为。
若要指定其他存储帐户,请使用 AzureWebJobsSecretStorageSas 设置来指示第二个存储帐户的 SAS URL。
AzureWebJobsSecretStorageType files 密钥将持久保存于文件系统中。 这是 Functions v1.x 的默认行为。
AzureWebJobsSecretStorageType keyvault 密钥存储在由 AzureWebJobsSecretStorageKeyVaultName 设置的密钥保管库实例中。
AzureWebJobsSecretStorageType kubernetes 仅当在 Kubernetes 中运行 Functions 运行时时才受支持。 如果未设置 AzureWebJobsKubernetesSecretName,则会将存储库视为只读。 在这种情况下,必须在部署之前生成值。 在部署到 Kubernetes 时,Azure Functions Core Tools 会自动生成值。

若要了解详细信息,请参阅机密存储库

AzureWebJobsStorage

指定 Functions 运行时用于常规操作的 Azure 存储帐户的连接字符串。 此存储帐户的一些 Functions 用途包括密钥管理、计时器触发器管理和事件中心检查点。 存储帐户必须是支持 Blob、队列和表的通用帐户。 有关详细信息,请参阅存储帐户要求

密钥 示例值
AzureWebJobsStorage DefaultEndpointsProtocol=https;AccountName=...

可以为该存储帐户使用基于标识的连接,而不是连接字符串。 有关详细信息,请参阅使用标识连接到主机存储

AzureWebJobsStorage__accountName

使用基于标识的存储连接时,设置存储帐户的帐户名称,而不是使用 AzureWebJobsStorage 中的连接字符串。 此语法是 AzureWebJobsStorage 独有的,不能用于其他基于标识的连接。

密钥 示例值
AzureWebJobsStorage__accountName <STORAGE_ACCOUNT_NAME>

对于主权云或使用自定义 DNS 时,必须改用特定于服务的 AzureWebJobsStorage__*ServiceUri 设置。

AzureWebJobsStorage__blobServiceUri

使用基于标识的存储连接时,设置存储帐户的 Blob 服务的数据平面 URI。

密钥 示例值
AzureWebJobsStorage__blobServiceUri https://<STORAGE_ACCOUNT_NAME>.blob.core.chinacloudapi.cn

在主权云中或使用自定义 DNS 时,使用此设置,而不是 AzureWebJobsStorage__accountName。 有关详细信息,请参阅使用标识连接到主机存储

AzureWebJobsStorage__queueServiceUri

使用基于标识的存储连接时,设置存储帐户队列服务的数据平面 URI。

密钥 示例值
AzureWebJobsStorage__queueServiceUri https://<STORAGE_ACCOUNT_NAME>.queue.core.chinacloudapi.cn

在主权云中或使用自定义 DNS 时,使用此设置,而不是 AzureWebJobsStorage__accountName。 有关详细信息,请参阅使用标识连接到主机存储

AzureWebJobsStorage__tableServiceUri

使用基于标识的存储连接时,设置存储帐户的表服务的数据平面 URI。

密钥 示例值
AzureWebJobsStorage__tableServiceUri https://<STORAGE_ACCOUNT_NAME>.table.core.chinacloudapi.cn

在主权云中或使用自定义 DNS 时,使用此设置,而不是 AzureWebJobsStorage__accountName。 有关详细信息,请参阅使用标识连接到主机存储

AzureWebJobs_TypeScriptPath

用于 TypeScript 的编译器的路径。 允许根据需要重写默认值。

示例值
AzureWebJobs_TypeScriptPath %HOME%\typescript

DOCKER_REGISTRY_SERVER_PASSWORD

指示用于访问专用容器注册表的密码。 仅当从专用容器注册表部署容器化函数应用时,才需要此设置。 要了解详细信息,请参阅 Azure 应用服务中的环境变量和应用设置

DOCKER_REGISTRY_SERVER_URL

指示专用容器注册表的 URL。 仅当从专用容器注册表部署容器化函数应用时,才需要此设置。 要了解详细信息,请参阅 Azure 应用服务中的环境变量和应用设置

DOCKER_REGISTRY_SERVER_USERNAME

指示用于访问专用容器注册表的帐户。 仅当从专用容器注册表部署容器化函数应用时,才需要此设置。 要了解详细信息,请参阅 Azure 应用服务中的环境变量和应用设置

DOCKER_SHM_SIZE

设置 Python 辅助角色使用共享内存时的共享内存大小(以字节为单位)。 要了解详细信息,请参阅共享内存

示例值
DOCKER_SHM_SIZE 268435456

上述值将设置为约 256 MB 的共享内存大小。

需要将 FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED 设置为 1

ENABLE_ORYX_BUILD

指示部署期间是否使用 Oryx 生成系统。 在 Linux 上执行远程生成部署时,必须设置将 ENABLE_ORYX_BUILD 设为 true。 有关详细信息,请参阅远程构建

示例值
ENABLE_ORYX_BUILD true

FUNCTION_APP_EDIT_MODE

指示是否可以在 Azure 门户中编辑函数应用。 有效值为 readwritereadonly

示例值
FUNCTION_APP_EDIT_MODE readonly

该值由运行时根据函数应用的语言堆栈和部署状态进行设置。 有关详细信息,请参阅 Azure 门户中的开发限制

FUNCTIONS_EXTENSION_VERSION

托管函数应用的 Functions 运行时版本。 波浪符(~)加主要版本号表示使用该主要版本的最新版本(例如 ~3)。 当同一主要版本的新版本可用时,会自动在函数应用中安装新版本。 要将应用固定为特定版本,请使用完整版本号(例如 3.0.12345)。 默认为 ~3。 值 ~1 让应用固定使用运行时版本 1.x。 有关详细信息,请参阅 Azure Functions 运行时版本概述。 值为 ~4 表示应用在版本 4.x 上运行。

示例值
FUNCTIONS_EXTENSION_VERSION ~4

支持以下主要运行时版本值:

Value 运行时目标 评论
~4 4.x 建议
~3 3.x 不再支持
~2 2.x 不再支持
~1 1.x 支持于 2026 年 9 月 14 日终止

FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR

此应用设置是 Node.js 应用的一种临时方式,用于支持中断性变更,使入口点错误更容易在 Node.js v18 或更低版本上进行故障排除。 强烈建议使用 true,尤其是对于始终使用入口点文件的编程模型 v4 应用。 没有中断性变更 (false) 的行为忽略入口点错误,并且不会将其记录在 Application Insights 中。

从 Node.js v20 开始,应用设置不起作用,并且始终启用中断性变更行为。

对于 Node.js v18 或更低版本,可以使用应用设置,默认行为取决于错误是在注册模型 v4 函数之前还是之后发生:

  • 如果错误是在注册之前引发(例如如果使用模型 v3 或入口点文件不存在),则默认行为与 false 匹配。
  • 如果错误是在注册之后引发(例如你尝试注册重复模型 v4 函数),则默认行为与 true 匹配。
密钥 说明
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR true 阻止入口点错误并将其记录在 Application Insights 中。
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR false 忽略入口点错误,不要将其记录在 Application Insights 中。

FUNCTIONS_V2_COMPATIBILITY_MODE

重要

不再支持此设置。 提供该功能的初衷是在其仍受支持时为针对 v2.x 运行时的应用提供短期变通办法,让它们能改为在 v3.x 运行时上运行。 除了在 1.x 版本上运行的旧应用外,所有函数应用都必须在 Functions 运行时的 4.x 版本上运行:FUNCTIONS_EXTENSION_VERSION=~4。 有关详细信息,请参阅 Azure Functions 运行时版本概述

FUNCTIONS_REQUEST_BODY_SIZE_LIMIT

替代发送到 HTTP 终结点的请求正文大小默认限制。 该值以字节为单位给出,默认最大请求大小为 104857600 字节。

示例值
FUNCTIONS_REQUEST_BODY_SIZE_LIMIT 250000000

FUNCTIONS_WORKER_PROCESS_COUNT

指定语言工作进程的最大数量,其默认值为 1。 允许的最大值为 10。 函数调用均匀地分布在语言工作进程中。 语言工作进程每 10 秒生成一次,直到达到 FUNCTIONS_WORKER_PROCESS_COUNT 设置的计数。 使用多个语言工作进程与缩放不同。 当工作负荷混合使用 CPU 绑定和 I/O 绑定调用时,请考虑使用此设置。 此设置适用于所有语言运行时,除了在进程中运行的 .NET (FUNCTIONS_WORKER_RUNTIME=dotnet)。

示例值
FUNCTIONS_WORKER_PROCESS_COUNT 2

FUNCTIONS_WORKER_RUNTIME

在函数应用中加载的工作运行时的语言或语言堆栈。 此项对应于应用程序中正在使用的语言(例如,“python”)。 从 Azure Functions 运行时版本 2.x 开始,给定函数应用只能支持一种语言。

示例值
FUNCTIONS_WORKER_RUNTIME node

有效值:

语言/语言堆栈
dotnet C#(类库)
C#(脚本)
dotnet-isolated C#(独立工作进程)
java Java
node JavaScript
TypeScript
powershell PowerShell
python Python
custom 其他

FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED

此设置允许 Python 辅助角色使用共享内存来提高吞吐量。 当 Python 函数应用遇到内存瓶颈时启用共享内存。

示例值
FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED 1

启用此设置后,可以使用 DOCKER_SHM_SIZE 设置来设置共享内存大小。 要了解详细信息,请参阅共享内存

JAVA_OPTS

用于自定义 Java 虚拟机 (JVM),在高级计划专用计划上运行时,该虚拟机用于运行 Java 函数。 在消耗计划上运行时,改为使用 languageWorkers__java__arguments。 有关详细信息,请参阅自定义 JVM

languageWorkers__java__arguments

用于自定义 Java 虚拟机 (JVM),在消耗计划上运行时,该虚拟机用于运行 Java 函数。 此设置确实会增加消耗计划中运行的 Java 函数的冷启动时间。 对于高级或专用计划,请改用 JAVA_OPTS。 有关详细信息,请参阅自定义 JVM

MDMaxBackgroundUpgradePeriod

控制 PowerShell 函数应用的托管依赖项后台更新周期,默认值为 7.00:00:00(每周)。

每个 PowerShell 工作进程都会在进程启动时检查 PowerShell 库上的模块升级,并在之后每 MDMaxBackgroundUpgradePeriod 检查一次。 当 PowerShell 库中有新的模块版本时,该版本会被安装到文件系统,并提供给 PowerShell 工作进程。 减小此值后,函数应用不但可以更快地获取较新的模块版本,而且可以增加应用资源使用率(网络 I/O、CPU、存储)。 增大此值会减少应用的资源使用率,但也可能会延迟将新的模块版本传递给你的应用。

密钥 示例值
MDMaxBackgroundUpgradePeriod 7.00:00:00

有关详细信息,请参阅依赖项管理

MDNewSnapshotCheckPeriod

指定每个 PowerShell 辅助角色检查是否已安装托管依赖关系升级的频率。 默认频率为 01:00:00(每小时)。

将新的模块版本安装到文件系统后,必须重启每个 PowerShell 工作进程。 重启 PowerShell 工作进程会影响应用可用性,因为它可能会中断当前的函数执行操作。 在所有 PowerShell 工作进程都重启之前,函数调用可能使用旧的模块版本,也可能使用新的模块版本。 重启所有 PowerShell 工作进程的操作会在 MDNewSnapshotCheckPeriod 内完成。

在每个 MDNewSnapshotCheckPeriod 中,PowerShell 工作进程会检查是否已安装托管依赖关系升级。 安装升级后,重启随即开始。 增加此值会降低因重启而中断的频率。 但是,这种增加也可能会增加函数调用使用新/旧模块版本的时间,这种情况不确定。

密钥 示例值
MDNewSnapshotCheckPeriod 01:00:00

有关详细信息,请参阅依赖项管理

MDMinBackgroundUpgradePeriod

在前一次托管依赖关系升级检查之后,启动下一次升级检查之前的时间段,默认值为 1.00:00:00(每天)。

为了避免在频繁重启工作进程时进行过多的模块升级,当任何工作进程在上一个 MDMinBackgroundUpgradePeriod 中启动了模块升级检查时,系统不会执行该检查。

示例值
MDMinBackgroundUpgradePeriod 1.00:00:00

有关详细信息,请参阅依赖项管理

PIP_INDEX_URL

此设置可覆盖 Python 包索引的基 URL,默认情况下为 https://pypi.org/simple。 如果需要使用自定义依赖项运行远程生成,请使用此设置。 这些自定义依赖项可能位于符合 PEP 503 的包索引存储库(简单 存储库 API)中,也可能位于遵循同一格式的本地目录中。

示例值
PIP_INDEX_URL http://my.custom.package.repo/simple

若要了解更多信息,请参阅 --index-urlpip 文档和 Python 开发人员参考中的“使用自定义依赖项”。

PIP_EXTRA_INDEX_URL

此设置的值表示除 --index-url 之外可使用的 Python 应用自定义包的额外索引 URL。 如果需要使用在额外的包索引中找到的自定义依赖项运行远程生成,请使用此设置。 应遵循与 --index-url 相同的规则。

示例值
PIP_EXTRA_INDEX_URL http://my.custom.package.repo/simple

若要了解更多信息,请参阅 --extra-index-urlpip 文档和 Python 开发人员参考中的自定义依赖项

PYTHON_ISOLATE_WORKER_DEPENDENCIES

配置特定于 Python 函数应用。 它定义模块加载顺序的优先级。 默认情况下,此值设置为 0

Key 说明
PYTHON_ISOLATE_WORKER_DEPENDENCIES 0 优先从内部 Python 辅助角色的依赖项加载 Python 库,这是默认行为。 requirements.txt 中定义的第三方库可能会隐藏。
PYTHON_ISOLATE_WORKER_DEPENDENCIES 1 优先从 requirements.txt 中定义的应用程序包加载 Python 库。 这可以防止你的库与内部 Python 辅助角色的库发生冲突。

PYTHON_ENABLE_DEBUG_LOGGING

在 Python 函数应用中启用调试级日志记录。 值为 1 可启用调试级日志记录。 如果没有此设置或值为 0,只会将信息和更高级别的日志从 Python 辅助角色发送到 Functions 主机。 调试或跟踪 Python 函数执行时,请使用此设置。

调试 Python 函数时,请确保还根据需要在 host.json 文件中设置调试或跟踪日志记录级别。 若要了解详细信息,请参阅如何配置对 Azure Functions 的监视

PYTHON_ENABLE_WORKER_EXTENSIONS

配置特定于 Python 函数应用。 如果将此配置设置为 1,则辅助角色可载入 requirements.txt 中所定义的 1中。 通过该扩展,函数应用能够访问第三方包提供的新功能。 此外,此配置还可以更改应用中函数加载和调用的行为。 请确保选择的扩展可信,因为你需要承担其使用风险。 Azure Functions 不提供针对任何扩展的明示保证。 有关如何使用扩展的信息,请访问扩展的手册页或自述文件文档。默认情况下,此值设置为 0

密钥 说明
PYTHON_ENABLE_WORKER_EXTENSIONS 0 禁用任何 Python 工作线程扩展。
PYTHON_ENABLE_WORKER_EXTENSIONS 1 允许 Python 工作线程从 requirements.txt 加载扩展。

PYTHON_THREADPOOL_THREAD_COUNT

指定 Python 语言辅助角色将用于执行函数调用的最大线程数,对于 Python 版本 3.8 及更低版本,默认值为 1。 对于 Python 版本 3.9 及更高版本,该值设置为 None。 此设置不保证将在执行过程中设置的线程数。 此设置允许 Python 将线程数扩展到指定的值。 此设置仅适用于 Python 函数应用。 此外,此设置还适用于同步函数调用,而不适用于协同例程。

示例值 最大值
PYTHON_THREADPOOL_THREAD_COUNT 2 32

SCALE_CONTROLLER_LOGGING_ENABLED

此设置当前处于预览状态。

此设置控制 Azure Functions 缩放控制器中的日志记录。 有关详细信息,请参阅缩放控制器日志

示例值
SCALE_CONTROLLER_LOGGING_ENABLED AppInsights:Verbose

此键的值以 <DESTINATION>:<VERBOSITY> 格式提供,其定义如下:

属性 说明
<DESTINATION> 日志发送到的目标。 有效值为 AppInsightsBlob
使用 AppInsights 时,请确保在函数应用中启用 Application Insights
将目标设置为 Blob 时,将在名为 azure-functions-scale-controller 的 blob 容器中创建日志,该容器位于 AzureWebJobsStorage 应用程序设置中设置的默认存储帐户中。
<VERBOSITY> 指定日志记录级别。 支持的值为 NoneWarningVerbose
设置为 Verbose 时,缩放控制器将记录辅助角色计数每次更改的原因,以及有关将这些因素纳入决策的触发器的信息。 详细日志包含触发器警告和缩放控制器运行前后触发器使用的哈希。

提示

请记住,将“缩放控制器日志记录”保留为启用时,它会影响监视函数应用的潜在成本。 请考虑启用日志记录,直到收集到的数据足以了解缩放控制器的行为方式,然后将其禁用。

SCM_DO_BUILD_DURING_DEPLOYMENT

控制部署期间的远程生成行为。 如果将 SCM_DO_BUILD_DURING_DEPLOYMENT 设为 true,项目将在部署期间远程生成。

示例值
SCM_DO_BUILD_DURING_DEPLOYMENT true

SCM_LOGSTREAM_TIMEOUT

控制连接到流式处理日志时的超时(秒)。 默认值为 7200(2 小时)。

示例值
SCM_LOGSTREAM_TIMEOUT 1800

上述示例值 1800 设置超时 30 分钟。 有关详细信息,请参阅在 Azure Functions 中启用流式处理执行日志

WEBSITE_CONTENTAZUREFILECONNECTIONSTRING

存储帐户的连接字符串,该帐户的函数应用代码和配置存储在事件驱动缩放计划中。 有关详细信息,请参阅存储帐户连接设置

密钥 示例值
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING DefaultEndpointsProtocol=https;AccountName=...

在 Windows 和 Linux 上运行的消耗和弹性高级计划应用需要此设置。 它不是专用计划应用所需的,这些应用不会由 Functions 动态扩展。

更改或删除此设置可能会导致函数应用无法启动。 若要了解详细信息,请参阅此故障排除文章

Azure 文件存储在访问文件共享时不支持使用托管标识。 有关详细信息,请参阅 Azure 文件存储支持的身份验证方案

WEBSITE_CONTENTOVERVNET

将存储帐户限制在虚拟网络中时,值 1 允许函数应用进行缩放。 将存储帐户限制于一个虚拟网络时,应启用此设置。 仅在使用 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 时需要。 若要了解详细信息,请参阅将存储帐户限制在虚拟网络中

示例值
WEBSITE_CONTENTOVERVNET 1

高级专用(应用服务)计划(标准及更高版本)支持。 在消耗计划上运行时不受支持。

WEBSITE_CONTENTSHARE

Functions 用于存储函数应用代码和配置文件的文件共享名称。 事件驱动的缩放计划需要此内容。 与 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 一起使用。 默认值是运行时生成的唯一字符串,以函数应用名称开头。 有关详细信息,请参阅存储帐户连接设置

密钥 示例值
WEBSITE_CONTENTSHARE functionapp091999e2

此设置是 Windows 和 Linux 上的消耗计划和高级计划应用所需的。 它不是专用计划应用所需的,这些应用不会由 Functions 动态扩展。

创建函数应用时会创建该共享。 更改或删除此设置可能会导致函数应用无法启动。 若要了解详细信息,请参阅此故障排除文章

在部署期间使用 Azure 资源管理器 (ARM) 模板或 Bicep 文件创建函数应用时,需要考虑以下注意事项:

  • 如果没有为主函数应用或槽中的任何应用设置 WEBSITE_CONTENTSHARE 值,则会为你生成唯一的共享值。 对于 ARM 模板部署,WEBSITE_CONTENTSHARE建议的方法是不要设置
  • 在某些情况下,必须将 WEBSITE_CONTENTSHARE 值设置为预定义值,例如在虚拟网络中使用安全存储帐户时。 在这种情况下,必须为主函数应用和每个部署槽位的应用设置唯一的共享名称。 对于由虚拟网络保护的存储帐户,还必须在自动化部署过程中创建共享本身。 有关详细信息,请参阅安全部署
  • 不要将 WEBSITE_CONTENTSHARE 设为槽位。
  • 指定 WEBSITE_CONTENTSHARE 时,该值必须遵循此共享名指南

WEBSITE_DNS_SERVER

设置应用在解析 IP 地址时使用的 DNS 服务器。 使用某些网络功能(如 Azure DNS 专用区域专用终结点)时,通常需要此设置。

示例值
WEBSITE_DNS_SERVER 168.63.129.16

WEBSITE_ENABLE_BROTLI_ENCODING

控制是否将 Brotli 编码用于压缩,代替默认的 gzip 压缩。 当 WEBSITE_ENABLE_BROTLI_ENCODING 设置为 1 时,就会使用 Brotli 编码,否则使用 gzip 编码。

WEBSITE_FUNCTIONS_ARMCACHE_ENABLED

使用 Azure 资源管理器 (ARM) 模板部署函数应用时禁用缓存。

示例值
WEBSITE_FUNCTIONS_ARMCACHE_ENABLED 0

WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT

应用可以横向扩展到的最大实例数。 默认值为无限制。

重要

此设置处于预览状态。 添加了一个函数应用横向扩展上限属性,建议使用此方法限制横向扩展。

示例值
WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 5

WEBSITE_NODE_DEFAULT_VERSION

仅限 Windows。 设置在 Windows 上运行函数应用时要使用的 Node.js 版本。 应使用波形符 (~) 让运行时使用目标主版本的最新可用版本。 例如,当设置为 ~18 时,将使用最新版本的 Node.js 18。 当目标主版本带有波形符时,无需手动更新次版本。

示例值
WEBSITE_NODE_DEFAULT_VERSION ~18

WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS

在高级版 Functions 上执行 槽交换 时,如果与函数应用关联的存储帐户受网络限制,则可能无法交换。 这是由于 Functions 和应用服务共享的旧版应用程序日志记录功能所导致的。 此设置将替代该旧版日志记录功能,并允许进行交换。 在生产槽中设置为 0,并将其标记为部署槽设置(也称为粘滞),或添加到所有槽以确保也交换所有版本设置。

示例值
WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS 0

WEBSITE_OVERRIDE_STICKY_EXTENSION_VERSIONS

默认情况下,函数应用的版本设置特定于每个槽。 使用部署槽升级功能时使用此设置。 这可以防止由于交换后更改版本导致的意外行为。 在生产环境和槽中设置为 0,确保还交换所有版本设置。 有关详细信息,请参阅使用槽进行升级

示例值
WEBSITE_OVERRIDE_STICKY_EXTENSION_VERSIONS 0

WEBSITE_RUN_FROM_PACKAGE

让函数应用从已装载的包文件运行。

示例值
WEBSITE_RUN_FROM_PACKAGE 1

有效值是解析为部署包文件位置的 URL 或 1。 设置为 1 时,包必须位于 d:\home\data\SitePackages 文件夹中。 在使用启用了 WEBSITE_RUN_FROM_PACKAGE 的 zip 部署时,包将自动上传到此位置。 在预览版中,此设置名为 WEBSITE_RUN_FROM_ZIP。 有关详细信息,请参阅从包文件运行函数

WEBSITE_SKIP_CONTENTSHARE_VALIDATION

设置具有其验证检查,以确保应用可以正常启动。WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE 设置具有额外的验证检查,以确保应用可以正常启动。 如果由于网络约束或其他限制因素,函数应用无法正确调用下游存储帐户或密钥保管库,则创建应用程序设置将失败。 当 WEBSITE_SKIP_CONTENTSHARE_VALIDATION 设置为 1 时,将跳过验证检查;否则,该值默认为 0 并会进行验证。

密钥 示例值
WEBSITE_SKIP_CONTENTSHARE_VALIDATION 1

如果跳过验证,并且连接字符串或内容共享无效,该应用将无法正常启动。 在这种情况下,函数将返回 HTTP 500 错误。 有关详细信息,请参阅排查错误:“无法访问 Azure Functions 运行时”

WEBSITE_SLOT_NAME

只读。 当前部署槽位的名称。 生产槽的名称为 Production

示例值
WEBSITE_SLOT_NAME Production

WEBSITE_TIME_ZONE

允许为函数应用设置时区。

(OS) 示例值
WEBSITE_TIME_ZONE Windows Eastern Standard Time
WEBSITE_TIME_ZONE Linux America/New_York

CRON 表达式使用的默认时区为协调世界时 (UTC)。 若要让 CRON 表达式基于其他时区,请为你的函数应用创建一个名为 WEBSITE_TIME_ZONE 的应用设置。

此设置的值取决于运行函数应用的操作系统和计划。

操作系统 计划
Windows All 将该值设置为所需时区的名称,由 Windows 命令 tzutil.exe /L 给定的每个对的第二行指定

注意

Linux 消耗计划目前不支持 WEBSITE_TIME_ZONE

例如,美国东部时间(由 Eastern Standard Time (Windows) 或 America/New_York (Linux) 表示)当前在标准时间中使用 UTC-05:00,在夏令时中使用 UTC-04:00。 若要使计时器触发器每天在东部时间上午 10:00 触发,请为函数应用创建一个名为 WEBSITE_TIME_ZONE 的应用设置并将值设置为 Eastern Standard Time (Windows) 或 America/New_York (Linux),然后使用以下 NCRONTAB 表达式:

"0 0 10 * * *"

使用 WEBSITE_TIME_ZONE 时,时间将针对特定时区中的时间更改进行调整,包括夏令时和标准时间的更改。

WEBSITE_USE_PLACEHOLDER

指示在消耗计划上运行时,是否使用特定的冷启动优化。 设置为 0 可在消耗计划上禁用冷启动优化。

示例值
WEBSITE_USE_PLACEHOLDER 1

WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED

指示在消耗计划上运行 .NET 独立工作进程函数时是否使用特定的冷启动优化。 设置为 0 可在消耗计划上禁用冷启动优化。

示例值
WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED 1

WEBSITE_VNET_ROUTE_ALL

重要

WEBSITE_VNET_ROUTE_ALL 是旧版应用设置,它已被替换为 vnetRouteAllEnabled 站点设置。

指示是否通过虚拟网络路由应用的所有出站流量。 设置值 1 指示所有流量都通过虚拟网络进行路由。 使用区域虚拟网络集成功能时,需要使用此设置。 使用虚拟网络 NAT 网关定义静态出站 IP 地址时,也可以使用此设置。

示例值
WEBSITE_VNET_ROUTE_ALL 1

WEBSITES_ENABLE_APP_SERVICE_STORAGE

指示 /home 目录是否跨缩放实例共享,默认值为 true。 在容器中部署函数应用时,应将设置为 false。 d

应用服务网站设置

某些配置必须在应用服务级别作为站点设置进行维护,例如语言版本。 这些设置在门户中通过使用 REST API、Azure CLI 或 Azure PowerShell 进行设置。 以下是可能需要的站点设置,具体取决于运行时语言、OS 和版本:

alwaysOn

专用(应用程序服务)计划中运行的函数应用中,函数运行时在几分钟不活动后进入空闲状态,此时只有对 HTTP 触发器的请求才会唤醒您的函数。 若要确保非 HTTP 触发的函数正常运行(包括计时器触发器),请将 alwaysOn 站点设置设置为值 true,从而为函数应用启用 Always On。

linuxFxVersion

对于在 Linux 上运行的函数应用,linuxFxVersion 指示特定于语言的工作进程的语言和版本。 此信息与 FUNCTIONS_EXTENSION_VERSION 一起用于确定安装了哪个特定的 Linux 容器映像来运行函数应用。 此设置可设置为预定义值或自定义映像 URI。

创建 Linux 函数应用时,系统会为你设置此值。 对于 ARM 模板和 Bicep 部署以及某些升级场景,你可能需要设置该值。

有效的 linuxFxVersion 值

可以使用以下 Azure CLI 命令根据支持的 Functions 运行时版本查看当前 linuxFxVersion 值的表:

az functionapp list-runtimes --os linux --query "[].{stack:join(' ', [runtime, version]), LinuxFxVersion:linux_fx_version, SupportedFunctionsVersions:to_string(supported_functions_versions[])}" --output table

上述命令要求升级到 Azure CLI 版本 2.40。

自定义映像

为函数应用创建和维护自定义 Linux 容器时,linuxFxVersion 值改为采用格式 DOCKER|<IMAGE_URI>,如以下示例所示:

linuxFxVersion = "DOCKER|contoso.com/azurefunctionsimage:v1.0.0"

这表示已部署的容器的注册表源。 有关详细信息,请参阅使用容器和 Azure Functions

重要

创建自己的容器时,需要将容器的基础映像更新为受支持的最新基础映像。 Azure Functions 支持的基映像特定于语言,可在 Azure Functions 基础映像存储库中找到。

Functions 团队致力于发布这些基础映像的每月更新。 定期更新包括 Functions 运行时和语言的最新次要版本更新和安全修补程序。 对于容器,应定期更新 Dockerfile 中的基础映像,重新生成并重新部署容器的更新版本。

netFrameworkVersion

为 C# 函数设置特定的 .NET 版本。 有关详细信息,请参阅在 Azure 中升级函数应用

powerShellVersion

设置函数运行的特定 PowerShell 版本。 有关详细信息,请参阅更改 PowerShell 脚本

在本地运行时,请改用 local.settings.json 文件中的 FUNCTIONS_WORKER_RUNTIME_VERSION 设置。

vnetrouteallenabled

指示是否通过虚拟网络路由应用的所有出站流量。 设置值 1 指示所有流量都通过虚拟网络进行路由。 使用区域虚拟网络集成功能时,需要使用此设置。 使用虚拟网络 NAT 网关定义静态出站 IP 地址时,也可以使用此设置。 有关详细信息,请参阅配置应用程序路由

此站点设置替换了旧版 WEBSITE_VNET_ROUTE_ALL 设置。

后续步骤

了解如何更新应用设置

查看 host.json 文件中的配置设置

查看应用服务应用的其他应用设置