Справочник по файлу host.json для службы "Функции Azure" версии 1.x
Файл метаданных host.json содержит параметры конфигурации, которые влияют на все функции в экземпляре приложения-функции. В этой статье перечислены параметры, доступные для среды выполнения версии 1.x. Схему JSON можно найти по адресу http://json.schemastore.org/host.
Примечание.
Эта статья предназначена для службы "Функции Azure" версии 1.x. Сведения о файле host.json в Функциях Azure версии 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"
}
}
Свойство | По умолчанию | Description |
---|---|---|
batchSize | 1000 | Максимальное количество запросов, которое необходимо обработать. |
flushTimeout | 00:00:30 | Максимальный период времени, который необходимо обработать. |
Вызовы функций обрабатываются, когда достигается одно из этих двух ограничений.
applicationInsights
Управляет функцией выборки в Application Insights.
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 5
}
}
}
Свойство | По умолчанию | Description |
---|---|---|
isEnabled | true | Включает или отключает выборку. |
maxTelemetryItemsPerSecond | 5 | Пороговое значение, при котором начинается выборка. |
DocumentDB
Параметры конфигурации для триггера и привязок Azure Cosmos DB.
{
"documentDB": {
"connectionMode": "Gateway",
"protocol": "Https",
"leaseOptions": {
"leasePrefix": "prefix1"
}
}
}
Свойство | По умолчанию | Description |
---|---|---|
GatewayMode | Шлюз | Режим подключения, используемый функцией при подключении к службе Azure Cosmos DB. Возможные значения: Direct и Gateway . |
Протокол | Https | Протокол подключения, используемый функцией при подключении к службе Azure Cosmos DB. Описание обоих режимов |
leasePrefix | Н/Д | Префикс аренды для использования во всех функциях приложения. |
durableTask
Параметры конфигурации для устойчивых функций.
Примечание.
Все основные версии Устойчивых функций поддерживаются во всех версиях среды выполнения Функций Azure. При этом схема конфигурации host.json немного отличается в зависимости от версии среды выполнения Функций Azure и используемой версии расширения Устойчивых функций. Следующие примеры предназначены для использования с Функциями Azure 2.0 и 3.0. Если вы используете Функции Azure 1.0, в обоих примерах доступные параметры будут одинаковыми, но раздел durableTask файла host.json должен находиться в корне конфигурации host.json, а не в поле extensions.
{
"extensions": {
"durableTask": {
"hubName": "MyTaskHub",
"storageProvider": {
"connectionStringName": "AzureWebJobsStorage",
"controlQueueBatchSize": 32,
"controlQueueBufferThreshold": 256,
"controlQueueVisibilityTimeout": "00:05:00",
"maxQueuePollingInterval": "00:00:30",
"partitionCount": 4,
"trackingStoreConnectionStringName": "TrackingStorage",
"trackingStoreNamePrefix": "DurableTask",
"useLegacyPartitionManagement": true,
"useTablePartitionManagement": false,
"workItemQueueVisibilityTimeout": "00:05:00",
},
"tracing": {
"traceInputsAndOutputs": false,
"traceReplayEvents": false,
},
"notifications": {
"eventGrid": {
"topicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
"keySettingName": "EventGridKey",
"publishRetryCount": 3,
"publishRetryInterval": "00:00:30",
"publishEventTypes": [
"Started",
"Completed",
"Failed",
"Terminated"
]
}
},
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 10,
"extendedSessionsEnabled": false,
"extendedSessionIdleTimeoutInSeconds": 30,
"useAppLease": true,
"useGracefulShutdown": false,
"maxEntityOperationBatchSize": 50,
"storeInputsInOrchestrationHistory": false
}
}
}
Имена центров задач должны начинаться с буквы и содержать только буквы и цифры. Если оно не указано, имя концентратора задач по умолчанию для приложения-функции — TestHubName. Для получения дополнительной информации см. раздел Центры задач.
Свойство | По умолчанию | Description |
---|---|---|
hubName | TestHubName (DurableFunctionsHub при использовании Устойчивые функции 1.x) | Альтернативные имена центра задач позволяют изолировать несколько приложений устойчивых функций друг от друга, даже если они используют один и тот же интерфейс хранилища. |
controlQueueBatchSize | 32 | Количество сообщений, одновременно извлекаемых из очереди управления. |
controlQueueBufferThreshold | План потребления для Python: 32 План потребления для JavaScript и C#: 128 План "Выделенный" или "Премиум": 256 |
Количество сообщений в очереди управления, которые можно поместить в память одновременно, после чего диспетчер будет ожидать исключения дополнительных сообщений из очереди. |
partitionCount | 4 | Число разделов для очереди управления. Допускается целочисленное значение в диапазоне от 1 до 16. |
controlQueueVisibilityTimeout | 5 мин | Время видимости для сообщений, выведенных из очереди управления. |
workItemQueueVisibilityTimeout | 5 мин | Время видимости для сообщений, выведенных из очереди рабочих элементов. |
maxConcurrentActivityFunctions | План потребления: 10 План "Выделенный" или "Премиум": 10 × количество процессоров на текущем компьютере |
Максимальное число функции действия, которые могут параллельно обрабатываться на одном экземпляре узла. |
maxConcurrentOrchestratorFunctions | План потребления: 5 План "Выделенный" или "Премиум": 10 × количество процессоров на текущем компьютере |
Максимальное количество функций оркестратора, которые могут быть обработаны параллельно в одном экземпляре узла. |
maxQueuePollingInterval | 30 секунд | Максимальный интервал опроса очереди управления и рабочих элементов в формате чч:мм:сс. Высокие значения могут привести к увеличению задержек при обработке сообщений. Низкие значения могут привести к повышению затрат на хранение из-за увеличенного объема транзакций с хранилищем. |
connectionName (2.7.0 и более поздние версии) connectionStringName (2.x) azureStorageConnectionStringName (1.x) |
AzureWebJobsStorage | Имя параметра или коллекции параметров приложения, указывающих, как подключиться к базовым ресурсам службы хранилища Azure. Если указан один параметр приложения, это должна быть строка подключения службы хранения Azure. |
trackingStoreConnectionName (2.7.0 и более поздние версии) trackingStoreConnectionStringName |
Имя параметра или коллекции параметров приложения, указывающих, как подключиться к таблицам "Журнал" и "Экземпляры". Если указан один параметр приложения, это должна быть строка подключения службы хранения Azure. Если значение не указано, используется подключение connectionStringName (Устойчивые функции 2.x) или azureStorageConnectionStringName (Устойчивые функции 1.x). |
|
trackingStoreNamePrefix | Префикс, используемый для таблиц журнала и экземпляров, если задано значение trackingStoreConnectionStringName . Если значение не задано, по умолчанию будет использоваться префикс DurableTask . Если значение trackingStoreConnectionStringName не задано, для таблиц журнала и экземпляров в качестве префикса будет использоваться значение hubName , а любой параметр для trackingStoreNamePrefix будет игнорироваться. |
|
traceInputsAndOutputs | false | Это значение указывает, нужно ли отслеживать входы и выходы вызовов функций. При трассировке событий выполнения функции по умолчанию для вызовов функций фиксируется количество байтов в сериализованных входных и выходных данных. Такое поведение позволяет получить некоторое представление о входах и выходах, не увеличивая размеры журналов и не раскрывая конфиденциальные сведения. Если вы присвоите этому свойству значение true, в журналы выполнения функций будет включаться полное содержимое их входов и выходов. |
traceReplayEvents | false | Значение, указывающее, следует ли записывать повторные события оркестрации в Application Insights. |
eventGridTopicEndpoint | URL-адрес конечной точки пользовательского раздела службы "Сетка событий Azure". Если установлен этот параметр, события уведомления о жизненном цикле оркестрации публикуются в указанную конечную точку. Это свойство поддерживает разрешение параметров приложения. | |
eventGridKeySettingName | Имя параметра приложения, содержащего ключ для аутентификации в пользовательском разделе службы "Сетка событий Azure" в EventGridTopicEndpoint . |
|
eventGridPublishRetryCount | 0 | Число повторных попыток, если публикация в разделе "Сетка событий" завершается сбоем. |
eventGridPublishRetryInterval | 5 мин | Интервал повторных попыток для публикации в разделе "Сетка событий" указывается в формате чч: мм:сс. |
eventGridPublishEventTypes | Список типов событий для публикации в Сетке событий. Если значение не указано, будут опубликованы все типы событий. Допустимые значения: Started , Completed , Failed , Terminated . |
|
useAppLease | true | Если задано значение true , перед обработкой сообщений центра задач приложениям потребуется получить аренду большого двоичного объекта уровня приложения. Дополнительные сведения см. в документации по аварийному восстановлению и географическом распределению. Доступно, начиная с версии 2.3.0. |
useLegacyPartitionManagement | false | Если задано значение false , используется алгоритм управления секциями, который снижает вероятность дублирования выполнения функций при горизонтальном масштабировании. Доступно, начиная с версии 2.3.0. |
useTablePartitionManagement | false | Если задано значение true , используется алгоритм управления секциями, предназначенный для снижения затрат на служба хранилища Azure учетных записей версии 2. Доступно начиная с версии 2.10.0. Эта функция сейчас доступна в предварительной версии и еще не совместима с планом потребления. |
useGracefulShutdown | false | Предварительная версия. Включение корректного завершения работы для снижения вероятности того, что при завершении работы основного приложения произойдет сбой внутрипроцессного выполнения функции. |
maxEntityOperationBatchSize(2.6.1) | План потребления: 50 План "Выделенный" или "Премиум": 5000 |
Максимальное количество операций с сущностями, которые обрабатываются пакетом. Если задано значение 1, пакетная обработка отключена, а каждое сообщение об операции обрабатывается с помощью отдельного вызова функции. |
storeInputsInOrchestrationHistory | false | Если задано значение true , платформа устойчивых задач позволяет сохранять входные данные действий в таблице журнала. Это позволяет отображать входные данные функции действия при запросе журнала оркестрации. |
Многие из этих параметров предназначены для оптимизации производительности. Дополнительные сведения см. в статье о производительности и масштабируемости.
eventHub
Параметры конфигурации для триггеров и привязок концентратора событий.
functions
Список функций, которые выполняют узел заданий. Пустой массив означает выполнение всех функций. Предназначен для использования только при локальном выполнении. Чтобы отключить определенные функции в приложениях-функциях Azure, выполните следующие действия в разделе Способы отключения функций в решении "Функции Azure" вместо использования этого параметра.
{
"functions": [ "QueueProcessor", "GitHubWebHook" ]
}
functionTimeout
Указывает время ожидания для всех функций. В бессерверных планах потребления допускается диапазон от 1 секунды до 10 минут, а значение по умолчанию — 5 минут. В планах службы приложений время не ограничено и используется значение по умолчанию NULL, что означает отсутствие времени ожидания.
{
"functionTimeout": "00:05:00"
}
healthMonitor
Параметры конфигурации для монитора работоспособности узла.
{
"healthMonitor": {
"enabled": true,
"healthCheckInterval": "00:00:10",
"healthCheckWindow": "00:02:00",
"healthCheckThreshold": 6,
"counterThreshold": 0.80
}
}
Свойство | По умолчанию | Description |
---|---|---|
включена | true | Указывает, включена ли функция. |
healthCheckInterval | 10 seconds | Интервал времени между периодическими фоновыми проверками работоспособности. |
healthCheckWindow | 2 минуты | Скользящее окно времени, используемое с параметром healthCheckThreshold . |
healthCheckThreshold | 6 | Максимальное количество попыток проверки работоспособности, которые могут завершиться сбоем, прежде чем инициируется повторный запуск. |
counterThreshold | 0.80 | Пороговое значение, при достижении которого счетчик производительности будет считаться неработоспособным. |
HTTP
Параметры конфигурации для триггеров и привязок http.
{
"http": {
"routePrefix": "api",
"maxOutstandingRequests": 200,
"maxConcurrentRequests": 100,
"dynamicThrottlesEnabled": true
}
}
Свойство | По умолчанию | Description |
---|---|---|
dynamicThrottlesEnabled | false | Если этот параметр включен, конвейер обработки запросов периодически проверяет счетчики производительности системы, такие как подключения, потоки, процессы, память/ ЦП и т. д., и если любой из этих счетчиков превышает встроенное пороговое значение (80%), запросы отклоняются с ответом 429 "Слишком занято", пока счетчики не возвращаются к нормальным уровням. |
maxConcurrentRequests | не ограничено (-1 ) |
Максимальное число HTTP-функций, которые будут выполняться параллельно. Это позволяет регулировать параллелизм, что может помочь в управлении использованием ресурсов. Например, у вас может быть HTTP-функция, использующая много системных ресурсов (памяти, ЦП или сокетов) таким образом, что при слишком высоком параллелизме это вызывает проблемы. Или же функция может выполнять исходящие запросы к сторонней службе, и частоту таких вызовов необходимо ограничить. В таких случаях может помочь применение регулирования. |
maxOutstandingRequests | не ограничено (-1 ) |
Максимальное число невыполненных запросов, которое хранится в любой отдельно взятый момент времени. Это ограничение включает запросы, которые находятся в очереди, но не начали выполняться, и любые выполняемые выполнения. Все входящие запросы, превышающие это ограничение, отклоняются с ответом 429 "Too Busy" (Перегрузка). Это позволяет вызывающим объектам использовать стратегии повторов на основе времени, а также помогает вам контролировать максимальные задержки запросов. Эта настройка влияет только на очереди, которые создаются по пути выполнения средства обработки скриптов. Она не влияет на другие очереди, такие как очередь запросов ASP.NET. |
routePrefix | api | Префикс маршрута, который применяется ко всем маршрутам. Используйте пустую строку, чтобы удалить префикс по умолчанию. |
id
Уникальный идентификатор для узла заданий. Это может быть глобальный уникальный идентификатор (GUID), вводимый в нижнем регистре с удаленными дефисами. Необходим при локальном выполнении. При работе в Azure, мы рекомендуем не задавать значение идентификатора. Идентификатор создается автоматически в Azure, когда id
пропускается.
Если вы предоставляете общий доступ к учетной записи хранения для нескольких приложений-функций, убедитесь, что у всех них разные id
. Вы можете опустить свойство id
или вручную задать для id
всех приложений-функций разные значения. Для триггера таймера используется блокировка хранилища. Это гарантирует наличие только одного экземпляра таймера, когда приложение-функция масштабируется до нескольких экземпляров. Если два приложения-функции используют одно и то же, id
и каждый использует триггер таймера, выполняется только один таймер.
{
"id": "9f4ea53c5136457d883d685e57164f08"
}
logger
Управляет фильтрацией журналов, которые создаются объектом ILogger или context.log.
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
Свойство | По умолчанию | Description |
---|---|---|
categoryFilter | Н/Д | Указывает параметры фильтрации по категории. |
defaultLevel | Информация | Для любых категорий, не указанных в массиве categoryLevels , отправляет журналы на этом уровне и выше в Application Insights. |
categoryLevels | Н/Д | Массив категорий, который определяет минимальный уровень ведения журнала для отправки в Application Insights для каждой категории. Указанная здесь категория управляет всеми категориями, которые начинаются с одного значения, при этом более длинные значения имеют приоритет. В предыдущем примере файла host.json все категории, которые начинаются с "Host.Aggregator", записываются в журнал на уровне Information . Все прочие категории, которые начинаются с "Host" (такие как "Host.Executor"), записываются в журнал на уровне Error . |
очереди
Параметры конфигурации для триггеров и привязок очереди хранилища.
{
"queues": {
"maxPollingInterval": 2000,
"visibilityTimeout" : "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8
}
}
Свойство | По умолчанию | Description |
---|---|---|
maxPollingInterval | 60 000 | Максимальный интервал в миллисекундах между опросами очереди. |
visibilityTimeout | 0 | Интервал времени между повторными попытками, когда при обработке сообщения возникает сбой. |
batchSize | 16 | Количество сообщений очереди, которые среда выполнения функций одновременно получает и обрабатывает в параллельном режиме. Когда число обрабатываемых сообщений достигает newBatchThreshold , среда выполнения получает следующий пакет и начинает обработку содержащихся в нем сообщений. Поэтому максимальное количество сообщений, одновременно обрабатываемых каждой функцией, равно batchSize плюс newBatchThreshold . Это ограничение применяется отдельно к каждой функции, активируемой с помощью очереди. Если вы не хотите, чтобы сообщения из одной очереди обрабатывались параллельно, можно установить для batchSize значение 1. Тем не менее этот параметр позволяет исключить параллелизм только при условии, что приложение-функция выполняется на одной виртуальной машине. Если приложение-функция развернуто на нескольких виртуальных машинах, каждая машина может запускать один экземпляр каждой функции, активируемой с помощью очереди.Максимальное значение batchSize — 32. |
maxDequeueCount | 5 | Число повторных попыток обработки сообщения, прежде чем поместить его в очередь подозрительных сообщений. |
newBatchThreshold | batchSize/2 | Каждый раз, когда количество сообщений, обрабатываемых параллельно, достигает этого числа, среда выполнения получает другой пакет. |
SendGrid
Параметры конфигурации для выходной привязки SendGrind
{
"sendGrid": {
"from": "Contoso Group <admin@contoso.com>"
}
}
Свойство | По умолчанию | Description |
---|---|---|
from | Н/Д | Адрес электронной почты для всех функций. |
serviceBus
Параметр конфигурации для триггеров и привязок служебной шины.
{
"serviceBus": {
"maxConcurrentCalls": 16,
"prefetchCount": 100,
"autoRenewTimeout": "00:05:00",
"autoComplete": true
}
}
Свойство | По умолчанию | Description |
---|---|---|
maxConcurrentCalls | 16 | Максимальное число параллельных вызовов к обратному вызову, которое должен инициировать процесс обработки сообщений. По умолчанию в среде выполнения службы "Функции" одновременно обрабатывается несколько сообщений очереди. Чтобы среда выполнения обрабатывала в любой момент времени только одно сообщение очереди или раздела, для свойства maxConcurrentCalls нужно задать значение 1. |
prefetchCount | Н/Д | Значение по умолчанию PrefetchCount, которое будет использоваться базовым ServiceBusReceiver. |
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"
}
}
Свойство | По умолчанию | Description |
---|---|---|
lockPeriod | 00:00:15 | Период времени, на который применяются блокировки уровня функции. Эти блокировки возобновляются автоматически. |
listenerLockPeriod | 00:01:00 | Период времени, на который применяются блокировки прослушивателя. |
listenerLockRecoveryPollingInterval | 00:01:00 | Интервал времени, используемый для восстановления блокировки прослушивателя, если блокировку прослушивателя не удалось получить при запуске. |
lockAcquisitionTimeout | 00:01:00 | Максимальное время выполнения пытается получить блокировку. |
lockAcquisitionPollingInterval | Н/Д | Интервал между попытками получения блокировки. |
tracing.
Версия 1.x
Параметры конфигурации для журналов, создаваемых с помощью объекта TraceWriter
. Подробнее см. в разделе [Ведение журнала C#].
{
"tracing": {
"consoleLevel": "verbose",
"fileLoggingMode": "debugOnly"
}
}
Свойство | По умолчанию | Description |
---|---|---|
consoleLevel | info | Уровень трассировки для ведения журнала консоли. Доступны следующие параметры: off , error , warning , info и verbose . |
fileLoggingMode | debugOnly | Уровень трассировки для ведения журнала файлов. Доступны следующие параметры: never , always и debugOnly . |
watchDirectories
Набор каталогов общего кода, изменения которого должны отслеживаться. Гарантирует, что если код в этих каталогах изменится, то эти изменения будут применены вашими функциями.
{
"watchDirectories": [ "Shared" ]
}