Azure Functions 的应用设置参考

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

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

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

host.json 文件和 local.settings.json 文件中提供了其他全局配置选项。

备注

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

APPINSIGHTS_INSTRUMENTATIONKEY

Application Insights 的检测密钥。 仅使用 APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING 中的一个。 当 Application Insights 在主权云中运行时,请使用 APPLICATIONINSIGHTS_CONNECTION_STRING。 有关详细信息,请参阅如何配置对 Azure Functions 的监视

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

APPLICATIONINSIGHTS_CONNECTION_STRING

Application Insights 的连接字符串。 在以下情况下使用 APPLICATIONINSIGHTS_CONNECTION_STRING 而不是 APPINSIGHTS_INSTRUMENTATIONKEY

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

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

示例值
APPLICATIONINSIGHTS_CONNECTION_STRING InstrumentationKey=[key];IngestionEndpoint=[url];LiveEndpoint=[url];ProfilerEndpoint=[url];SnapshotEndpoint=[url];

AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL

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

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

AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES

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

说明
AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES 包含编码斜杠的路由参数已解码。
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

在 2.x 和更高版本的 Functions 运行时中,基于运行时环境配置应用行为。 在初始化期间读取此值,并且可以将其设置为任意值。 运行时仅接受 DevelopmentStagingProduction 的值。 如果在 Azure 中运行时此应用程序设置不存在,则假定环境为 Production。 如果需要将 Azure 中的运行时环境更改为 Production 以外的其他内容,请使用此设置,而不是 ASPNETCORE_ENVIRONMENT。 在本地计算机上运行时,Azure Functions Core Tools 将 AZURE_FUNCTIONS_ENVIRONMENT 设置为 Development,并且无法在 local.settings.json 文件中重写。 若要了解详细信息,请参阅基于环境的启动类和方法

AzureFunctionsJobHost__*

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

AzureWebJobsDashboard

用于存储日志并在门户上的“监视”选项卡中显示这些日志的可选存储帐户连接字符串。 此设置仅对面向 Azure Functions 运行时版本 1.x 的应用有效。 存储帐户必须是支持 Blob、队列和表的通用帐户。 有关详细信息,请参阅存储帐户要求

示例值
AzureWebJobsDashboard DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.chinacloudapi.cn

备注

为了获得更好的性能和体验,运行时版本 2.x 及更高版本使用 APPINSIGHTS_INSTRUMENTATIONKEY 和 App Insights 进行监视,而不是使用 AzureWebJobsDashboard

AzureWebJobsDisableHomepage

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

示例值
AzureWebJobsDisableHomepage

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

函数应用登录页

AzureWebJobsDotNetReleaseCompilation

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

示例值
AzureWebJobsDotNetReleaseCompilation

AzureWebJobsFeatureFlags

要启用的 beta 功能的逗号分隔列表。 由这些标志启用的 Beta 功能尚未准备好用于生产,但在发布这些功能之前可针对试验目的启用这些功能。

示例值
AzureWebJobsFeatureFlags feature1,feature2

AzureWebJobsSecretStorageType

指定用于密钥存储的存储库或提供程序。 目前,支持的存储库包括 blob 存储(“Blob”)和本地文件系统(“Files”)。 默认为在版本 2 中使用 blob,在版本 1 中使用文件系统。

示例值
AzureWebJobsSecretStorageType 文件

AzureWebJobsStorage

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

示例值
AzureWebJobsStorage DefaultEndpointsProtocol=https;AccountName=[name];AccountKey=[key];EndpointSuffix=core.chinacloudapi.cn

AzureWebJobs_TypeScriptPath

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

示例值
AzureWebJobs_TypeScriptPath %HOME%\typescript

FUNCTION_APP_EDIT_MODE

指示是否在 Azure 门户中启用了编辑。 有效值为“readwrite”和“readonly”。

示例值
FUNCTION_APP_EDIT_MODE readonly

FUNCTIONS_EXTENSION_VERSION

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

示例值
FUNCTIONS_EXTENSION_VERSION ~3

FUNCTIONS_V2_COMPATIBILITY_MODE

此设置使函数应用能够在版本 3.x 运行时上以版本 2.x 兼容模式运行。 仅当在将函数应用从运行时版本 2.x 升级到版本 3.x 时遇到问题的情况下,才使用此设置。

重要

在更新应用以便在版本 3.x 上正常运行时,此设置仅用作短期解决方法。 只要 2.x 运行时受支持,此设置就受支持。 如果在不使用此设置的情况下遇到阻止应用在版本 3.x 上运行的问题,请报告问题

需要 FUNCTIONS_EXTENSION_VERSION 设置为 ~3

示例值
FUNCTIONS_V2_COMPATIBILITY_MODE

FUNCTIONS_WORKER_PROCESS_COUNT

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

示例值
FUNCTIONS_WORKER_PROCESS_COUNT 2

FUNCTIONS_WORKER_RUNTIME

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

示例值
FUNCTIONS_WORKER_RUNTIME 节点

有效值:

语言
dotnet C#(类库)
C#(脚本)
dotnet-isolated C#(隔离进程)
java Java
node JavaScript
TypeScript
powershell PowerShell
python Python

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_EXTRA_INDEX_URL

此设置的值指示 Python 应用的自定义包索引 URL。 如果需要使用在额外的包索引中找到的自定义依赖项运行远程生成,请使用此设置。

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

若要了解详细信息,请参阅 Python 开发人员参考中的自定义依赖项

PYTHON_ISOLATE_WORKER_DEPENDENCIES

配置特定于 Python 函数应用。 它定义模块加载顺序的优先级。 当 Python 函数应用面临与模块冲突相关的问题时(例如,在项目中使用 protobuf、tensorflow 或 grpcio 时),将此应用设置配置为 1 应该能够解决问题。 默认情况下,此值设置为 0

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

PYTHON_ENABLE_WORKER_EXTENSIONS

配置特定于 Python 函数应用。 将其设置为 1 后,工作线程能够加载 requirements.txt 中定义的 Python工作线程扩展。 通过该扩展,函数应用能够访问第三方包提供的新功能。 它也可能改变函数在应用中加载和调用的行为。 请确保所选扩展可靠,因为你需要承担使用它所带来的风险。 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> 格式提供,其定义如下:

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

提示

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

WEBSITE_CONTENTAZUREFILECONNECTIONSTRING

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

示例值
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING DefaultEndpointsProtocol=https;AccountName=[name];AccountKey=[key]

仅在部署到 Windows 运行上的高级计划或消耗计划时使用。 不支持运行 Linux 的消耗计划。 更改或删除此设置可能会导致函数应用无法启动。 若要了解详细信息,请参阅此故障排除文章

WEBSITE_CONTENTOVERVNET

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

示例值
WEBSITE_CONTENTOVERVNET 1

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

WEBSITE_CONTENTSHARE

Windows 上事件驱动的缩放计划中函数应用代码和配置的文件路径。 与 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 结合使用。 默认值是以函数应用名称开头的唯一字符串。 请参阅创建函数应用

示例值
WEBSITE_CONTENTSHARE functionapp091999e2

仅在部署到 Windows 运行上的高级计划或消耗计划时使用。 不支持运行 Linux 的消耗计划。 更改或删除此设置可能会导致函数应用无法启动。 若要了解详细信息,请参阅此故障排除文章

在部署期间使用 Azure 资源管理器模板创建函数应用时,请勿在该模板中包括 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_MAX_DYNAMIC_APPLICATION_SCALE_OUT

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

重要

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

示例值
WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 5

WEBSITE_NODE_DEFAULT_VERSION

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

示例值
WEBSITE_NODE_DEFAULT_VERSION ~10

WEBSITE_RUN_FROM_PACKAGE

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

示例值
WEBSITE_RUN_FROM_PACKAGE 1

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

WEBSITE_TIME_ZONE

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

(OS) 示例值
WEBSITE_TIME_ZONE Windows 东部标准时间
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_VNET_ROUTE_ALL

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

示例值
WEBSITE_VNET_ROUTE_ALL 1

后续步骤

了解如何更新应用设置

查看 host.json 文件中的全局设置

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