host.json Azure Functions 1.x 参考

host.json 元数据文件包含影响函数应用实例中所有函数的配置选项。 本文列出了可用于版本 1.x 运行时的设置。 JSON 架构位于 http://json.schemastore.org/host 。

注意

本文保留了Azure Functions运行时1.x的 host.json 参考。 有关其他历史信息,请参见 运行时1.x遗留参考文献。 关于当前 host.json 参考,请参见 host.json Azure Functions 2.x及以后版本的参考文献。

其他函数应用配置选项是在你的应用设置中管理的。

某些 host.json 设置只有在本地运行时才会在 local.settings.json 文件中使用。

示例 host.json 文件

以下示例 host.json 文件指定了所有可能的选项。

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    },
    "applicationInsights": {
        "sampling": {
          "isEnabled": true,
          "maxTelemetryItemsPerSecond" : 5
        }
    },
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix"
        }
    },
    "eventHub": {
      "maxBatchSize": 64,
      "prefetchCount": 256,
      "batchCheckpointFrequency": 1
    },
    "functions": [ "QueueProcessor", "GitHubWebHook" ],
    "functionTimeout": "00:05:00",
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    },
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 20,
        "maxConcurrentRequests": 10,
        "dynamicThrottlesEnabled": false
    },
    "id": "9f4ea53c5136457d883d685e57164f08",
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    },
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    },
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    },
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    },
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    },
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    },
    "watchDirectories": [ "Shared" ],
}

本文的以下各部分解释了每个顶级属性。 除非另有说明,否则其中的所有属性都是可选的。

aggregator

指定在计算 Application Insights 的指标时要聚合多少个函数调用。

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    }
}
属性 默认 说明
batchSize 1000 要聚合的最大请求数。
flushTimeout 00:00:30 要聚合的最大时间段。

函数调用在达到两个限制中的第一个时被聚合。

applicationInsights

控制 Application Insights 中的采样功能。

{
        "applicationInsights": {
                "sampling": {
                    "isEnabled": true,
                    "maxTelemetryItemsPerSecond" : 5
                }
        }
}
属性 默认 说明
isEnabled true 启用或禁用采样。
maxTelemetryItemsPerSecond 5 开始采样所要达到的阈值。

DocumentDB

Azure Cosmos DB触发器和绑定的配置设置。

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
属性 默认 说明
GatewayMode 网关 连接到Azure Cosmos DB服务时函数使用的连接模式。 选项为 Direct 和 Gateway
协议 Https 与 Azure Cosmos DB 服务建立连接时函数使用的连接协议。 参阅此处,了解两种模式的说明
leasePrefix 不适用 应用中所有函数要使用的租用前缀。

durableTask

Durable Functions的配置设置。

在Azure Functions运行时1.x中,该durableTask部分位于 host.json 文件的根节点。 可用的设置取决于Durable Functions扩展的版本。 当前配置参考,请参见Durable Functions host.json设置。

eventHub

事件中心触发器和绑定的配置设置。

functions

作业主机运行的函数列表。 空数组表示运行所有函数。 仅供在本地运行时使用。 在 Azure 中的函数应用中,应按照 如何禁用 Azure Functions中的步骤禁用特定函数,而不是使用此设置。

{
    "functions": [ "QueueProcessor", "GitHubWebHook" ]
}

functionTimeout

指示所有函数的超时持续时间。 在无服务器消耗计划中,有效范围为 1 秒至 10 分钟,默认值为 5 分钟。 在应用服务计划中,没有总体限制,默认值为 null,表示没有超时。

{
    "functionTimeout": "00:05:00"
}

healthMonitor

Host 运行状况监视器的配置设置。

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}
属性 默认 说明
enabled true 指定是否已启用该功能。
healthCheckInterval 10 秒 定期后台运行状况检查之间的时间间隔。
healthCheckWindow 2 分钟 与 healthCheckThreshold 设置结合使用的滑动时间窗口。
healthCheckThreshold 6 在启动主机回收之前,运行状况检查可以失败的最大次数。
counterThreshold 0.80 性能计数器将被视为不正常的阈值。

http

HTTP 触发器和绑定的配置设置。

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
属性 默认 说明
dynamicThrottlesEnabled false 启用后,此设置会导致请求处理管道定期检查系统性能计数器,例如连接/线程/进程/内存/cpu/等。 如果这些计数器中的任何一个超过内置高阈值 (80%),请求将被拒绝并返回 429“太忙”响应,直到计数器恢复到正常水平。
maxConcurrentRequests 无限制 (-1) 将并行执行的 HTTP 函数的最大数目。 这样,可以控制并发性,从而帮助管理资源利用率。 例如,你可能有一个使用大量系统资源(内存/CPU/套接字)的 HTTP 函数,它在并发度太高时会导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。
maxOutstandingRequests 无限制 (-1) 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求以及任何正在进行的执行。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(如 ASP.NET 请求队列)仍将有效,并且不受此设置影响。
routePrefix api 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。

id

作业宿主的唯一 ID。 可以是不带短划线的小写 GUID。 在本地运行时必须指定。 在Azure中运行时,建议不要设置 ID 值。 如果省略 id,则会在 Azure 中自动生成 ID。

如果跨多个函数应用共享存储帐户,请确保每个函数应用都有不同的 id。 可以省略 id 属性或手动将每个函数应用的 id 设置为不同的值。 计时器触发器使用存储锁来确保当函数应用横向扩展到多个实例时将只有一个计时器实例。 如果两个函数应用共享相同的 id 且每个都使用计时器触发器,则只会运行一个计时器。

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

记录器

控制由 ILogger 对象或 context.log 写入的日志的筛选。

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
属性 默认 说明
categoryFilter 不适用 指定按类别进行筛选
defaultLevel 信息 对于 categoryLevels 数组中未指定的任何类别,会将此级别和更高级别的日志发送到 Application Insights。
categoryLevels 不适用 一个类别数组,指定每个类别的、要发送到 Application Insights 的最低日志级别。 此处指定的类别控制以相同值开头的所有类别,较长的值优先。 在前面的示例 host.json 文件中,将在 Information 级别记录以“Host.Aggregator”开头的所有类别的日志。 在 Error 级别记录以“Host”开头的其他所有类别(例如“Host.Executor”)的日志。

queues

存储队列触发器和绑定的配置设置。

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
属性 默认 说明
maxPollingInterval 60000 队列轮询的最大间隔时间,以毫秒为单位。
visibilityTimeout 0 消息处理失败时的重试间隔时间。
batchSize 16 Functions 运行时同时检索并并行处理的队列消息数。 当处理的数量下降到 newBatchThreshold 时,运行时可获取另一个批,并开始处理这些消息。 因此,每个函数处理的最大并发消息数是 batchSize 加上 newBatchThreshold。 此限制分别应用于各个队列触发的函数。

如果要避免对队列上收到的消息并行执行,可以将 batchSize 设置为 1。 但是,只有在函数于单个虚拟机 (VM) 上运行时,此设置才可消除并发。 如果函数应用横向扩展到多个 VM,每个 VM 可运行每个队列触发的函数的一个实例。

batchSize 的最大值为 32。
maxDequeueCount 5 在将某个消息移到有害队列之前,尝试处理该消息的次数。
newBatchThreshold batchSize/2 只要同时处理的消息数下降到此数值,运行时即检索另一个批次。

SendGrid

SendGrid 输出绑定的配置设置。

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
属性 默认 说明
from 不适用 所有函数的发件人电子邮件地址。

serviceBus

服务总线触发器和绑定的配置设置。

{ 
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
属性 默认 说明
maxConcurrentCalls 16 消息泵应该对回调发起的最大并发调用数。 默认情况下,Functions 运行时同时处理多条消息。 若要指示运行时一次只处理单个队列或主题消息,请将 maxConcurrentCalls 设置为 1。
prefetchCount 不适用 基础 ServiceBusReceiver 将要使用的默认 PrefetchCount。
autoRenewTimeout 00:05:00 自动续订消息锁的最长持续时间。
autoComplete true 如果为 true,则触发器会在成功执行操作后自动完成消息处理。 如果为 false,则函数负责在返回之前完成消息。

singleton

单一实例锁行为的配置设置。 有关详细信息,请参阅有关单一实例支持GitHub问题。

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
属性 默认 说明
lockPeriod 00:00:15 占用函数级锁的时间段。 锁自动续订。
listenerLockPeriod 00:01:00 占用侦听器锁的时间段。
listenerLockRecoveryPollingInterval 00:01:00 在启动时无法获取侦听器锁的情况下,用于恢复侦听器锁的时间间隔。
lockAcquisitionTimeout 00:01:00 运行时尝试获取锁的最长时间。
lockAcquisitionPollingInterval 不适用 尝试获取锁的间隔时间。

跟踪

版本 1.x

使用 TraceWriter 对象创建的日志的配置设置。 若要了解详细信息,请参阅 [C# 日志记录]。

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
属性 默认 说明
consoleLevel info 控制台日志记录的跟踪级别。 选项包括:off、error、warning、info 和 verbose。
fileLoggingMode debugOnly 文件日志记录的跟踪级别。 选项包括 never、always 和 debugOnly。

watchDirectories

应该监视其更改情况的一组共享代码目录。 确保当这些目录中的代码发生更改时,函数会拾取这些更改。

{
    "watchDirectories": [ "Shared" ]
}

后续步骤