Справочник по файлу 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",
          "Pending",
          "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" ]
}

Следующие шаги