Справочник по файлу 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"
    }
}
Свойство По умолчанию Описание
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

Параметры конфигурации для устойчивых функций.

Примечание

Все основные версии Устойчивых функций поддерживаются во всех версиях среды выполнения Функций Azure. При этом схема конфигурации host.json немного отличается в зависимости от версии среды выполнения Функций Azure и используемой версии расширения Устойчивых функций. Следующие примеры предназначены для использования с Функциями Azure 2.0 и 3.0. Если вы используете Функции Azure 1.0, в обоих примерах доступные параметры будут одинаковыми, но раздел durableTask файла host.json должен находиться в корне конфигурации host.json, а не в поле extensions.

Устойчивые функции 2.x

{
 "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,
      "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
  }
 }
}

Устойчивые функции 1.x

{
  "extensions": {
    "durableTask": {
      "hubName": "MyTaskHub",
      "controlQueueBatchSize": 32,
      "partitionCount": 4,
      "controlQueueVisibilityTimeout": "00:05:00",
      "workItemQueueVisibilityTimeout": "00:05:00",
      "maxConcurrentActivityFunctions": 10,
      "maxConcurrentOrchestratorFunctions": 10,
      "maxQueuePollingInterval": "00:00:30",
      "azureStorageConnectionStringName": "AzureWebJobsStorage",
      "trackingStoreConnectionStringName": "TrackingStorage",
      "trackingStoreNamePrefix": "DurableTask",
      "traceInputsAndOutputs": false,
      "logReplayEvents": false,
      "eventGridTopicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
      "eventGridKeySettingName":  "EventGridKey",
      "eventGridPublishRetryCount": 3,
      "eventGridPublishRetryInterval": "00:00:30",
      "eventGridPublishEventTypes": ["Started", "Completed", "Failed", "Terminated"]
    }
  }
}

Имена центров задач должны начинаться с буквы и содержать только буквы и цифры. Если имя не указано, центру задач в приложении-функции назначается имя по умолчанию DurableFunctionsHub. Дополнительные сведения см. в статье о центрах задач.

Свойство По умолчанию Описание
hubName DurableFunctionsHub Альтернативные имена центра задач позволяют изолировать несколько приложений устойчивых функций друг от друга, даже если они используют один и тот же интерфейс хранилища.
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 секунд Максимальный интервал опроса очереди управления и рабочих элементов в формате чч:мм:сс. Высокие значения могут привести к увеличению задержек при обработке сообщений. Низкие значения могут привести к повышению затрат на хранение из-за увеличенного объема транзакций с хранилищем.
connectionStringName (2.x)
azureStorageConnectionStringName (1.x)
AzureWebJobsStorage Имя параметра приложения, в котором хранится строка подключения к службе хранилища Azure для управления базовыми ресурсами этой службы.
trackingStoreConnectionStringName Имя строки подключения, используемой для таблиц журнала и экземпляров. Если значение не указано, используется подключение 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, перед обработкой сообщений центра задач приложениям потребуется получить аренду большого двоичного объекта уровня приложения. Дополнительные сведения см. в документации по аварийному восстановлению и географическом распределению. Доступно, начиная с версии 2.3.0.
useLegacyPartitionManagement false Если задано значение false, используется алгоритм управления секциями, который снижает вероятность дублирования выполнения функций при горизонтальном масштабировании. Доступно, начиная с версии 2.3.0.
useGracefulShutdown false Предварительная версия. Включение корректного завершения работы для снижения вероятности того, что при завершении работы основного приложения произойдет сбой внутрипроцессного выполнения функции.

Многие из этих параметров предназначены для оптимизации производительности. Дополнительные сведения см. в разделе Производительность и масштабируемость.

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
    }
}
Свойство По умолчанию Описание
Включено Да Указывает, включена ли функция.
healthCheckInterval 10 с Интервал времени между периодическими фоновыми проверками работоспособности.
healthCheckWindow 2 минуты Скользящее окно времени, используемое в сочетании с параметром healthCheckThreshold.
healthCheckThreshold 6 Максимальное количество попыток проверки работоспособности, которые могут завершиться сбоем, прежде чем инициируется повторный запуск.
counterThreshold 0,80 Пороговое значение, при достижении которого счетчик производительности будет считаться неработоспособным.

http

Параметры конфигурации для триггеров и привязок http.

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
Свойство По умолчанию Описание
dynamicThrottlesEnabled false Если этот параметр включен, он заставляет конвейер обработки запросов периодически проверять счетчики производительности системы (подключений, потоков, процессов, памяти, ЦП и т. д.). При превышении встроенного порогового высокого значения (80 %) любого из этих счетчиков запросы будут отклоняться с ответом "429 — cлишком много запросов" до тех пор, пока счетчики не вернутся к нормальному уровню.
maxConcurrentRequests не ограничено (-1) Максимальное число HTTP-функций, которые будут выполняться параллельно. Это позволяет регулировать параллелизм, что может помочь в управлении использованием ресурсов. Например, у вас может быть HTTP-функция, использующая много системных ресурсов (памяти, ЦП или сокетов) таким образом, что при слишком высоком параллелизме это вызывает проблемы. Или же функция может выполнять исходящие запросы к сторонней службе, и частоту таких вызовов необходимо ограничить. В таких случаях может помочь применение регулирования.
maxOutstandingRequests не ограничено (-1) Максимальное число невыполненных запросов, которое хранится в любой отдельно взятый момент времени. Это ограничение включает запросы, которые находятся в очереди, но еще не начали выполняться, а также все запросы в процессе выполнения. Все входящие запросы, превышающие это ограничение, отклоняются с ответом 429 "Too Busy" (Перегрузка). Это позволяет вызывающим объектам использовать стратегии повторов на основе времени, а также помогает вам контролировать максимальные задержки запросов. Эта настройка влияет только на очереди, которые создаются по пути выполнения средства обработки скриптов. Она не влияет на другие очереди, такие как очередь запросов ASP.NET.
routePrefix api Префикс маршрута, который применяется ко всем маршрутам. Используйте пустую строку, чтобы удалить префикс по умолчанию.

идентификатор

Уникальный идентификатор для узла заданий. Это может быть глобальный уникальный идентификатор (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"
            }
        }
    }
}
Свойство По умолчанию Описание
categoryFilter Недоступно Указывает параметры фильтрации по категории.
defaultLevel Сведения Для любых категорий, не указанных в массиве categoryLevels, отправляет журналы на этом уровне и выше в Application Insights.
categoryLevels Недоступно Массив категорий, который определяет минимальный уровень ведения журнала для отправки в Application Insights для каждой категории. Указанная здесь категория управляет всеми категориями, которые начинаются с одного значения, при этом более длинные значения имеют приоритет. В предыдущем примере файла host.json все категории, которые начинаются с "Host.Aggregator", записываются в журнал на уровне Information. Все прочие категории, которые начинаются с "Host" (такие как "Host.Executor"), записываются в журнал на уровне Error.

queues

Параметры конфигурации для триггеров и привязок очереди хранилища.

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
Свойство По умолчанию Описание
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>"
    }
}    
Свойство По умолчанию Описание
из Недоступно Адрес электронной почты для всех функций.

serviceBus

Параметр конфигурации для триггеров и привязок служебной шины.

{
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
Свойство По умолчанию Описание
maxConcurrentCalls 16 Максимальное число параллельных вызовов к обратному вызову, которое должен инициировать процесс обработки сообщений. По умолчанию в среде выполнения службы "Функции" одновременно обрабатывается несколько сообщений очереди. Чтобы среда выполнения обрабатывала в любой момент времени только одно сообщение очереди или раздела, для свойства maxConcurrentCalls нужно задать значение 1.
prefetchCount Недоступно Значение PrefetchCount по умолчанию, которое будет использоваться базовым компонентом MessageReceiver.
autoRenewTimeout 00:05:00 Максимальный период времени, в течение которого блокировка сообщения будет продлеваться автоматически.
autoComplete Да Если значение равно 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 Недоступно Интервал между попытками получения блокировки.

tracing

Версия 1.x

Параметры конфигурации для журналов, создаваемых с помощью объекта TraceWriter. Подробнее см. в разделе [Ведение журнала C#].

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
Свойство По умолчанию Описание
consoleLevel сведения Уровень трассировки для ведения журнала консоли. Доступны следующие параметры: off, error, warning, info и verbose.
fileLoggingMode debugOnly Уровень трассировки для ведения журнала файлов. Доступны следующие параметры: never, always и debugOnly.

watchDirectories

Набор каталогов общего кода, изменения которого должны отслеживаться. Гарантирует, что если код в этих каталогах изменится, то эти изменения будут применены вашими функциями.

{
    "watchDirectories": [ "Shared" ]
}

Дальнейшие действия