Другой файл host.json для отладки и выпуска функций Azure

#azure #azure-functions

Вопрос:

Для моей функции azure у меня есть файл host.json, в котором я устанавливаю functionTimeout . Я должен изменять значение перед каждым развертыванием (выпуском) и изменять его обратно в целях отладки.

Есть ли способ иметь два разных файла host.json — один для выпуска и один для отладки?

Ответ №1:

Не думайте, что вы можете добавить host.staging.json, host.dev.json или host.prod.json для функции вместо этого попробуйте подход переопределения настроек:

Переопределение значений host.json:

Могут быть случаи, когда вы хотите настроить или изменить определенные параметры в файле host.json для конкретной среды, не изменяя сам файл host.json. Вы можете переопределить определенные значения host.json, создав эквивалентное значение в качестве параметра приложения. Когда среда выполнения находит параметр приложения в формате AzureFunctionsJobHost__путь__к__параметр, он переопределяет эквивалентный параметр host.json, расположенный по адресу путь.к.параметр в JSON. При выражении в качестве параметра приложения точка (.), используемая для обозначения иерархии JSON, заменяется двойным подчеркиванием (__).

Например, скажите, что вы хотели отключить выборку Application Insight при локальном запуске. Если вы изменили файл local host.json, чтобы отключить Application Insights, это изменение может быть перенесено в ваше рабочее приложение во время развертывания. Более безопасный способ сделать это-вместо этого создать параметр приложения как «AzureFunctionsJobHost__ведение журнала__ApplicationInsights__samplingSettings__IsEnabled»:»false» в файле local.settings.json. Вы можете увидеть это в следующем файле local.settings.json, который не публикуется:

 {
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "{storage-account-connection-string}",
        "FUNCTIONS_WORKER_RUNTIME": "{language-runtime}",
        "AzureFunctionsJobHost__logging__applicationInsights__samplingSettings__isEnabled":"false"
    }
}