Как установить переменные среды или входные данные в функциях TimerTrigger Azure?

#node.js #azure #azure-functions

#node.js #azure #azure-функции

Вопрос:

Я пытаюсь настроить timerTrigger функцию Azure

Мой function.json :

 {
    "disabled": false,
    "bindings": [
        {
            "type": "timerTrigger",
            "direction": "in",
            "name": "sampleCronTrigger",
            "schedule": "*/5 * * * * *",
        }
    ],
    "entryPoint": "sampleCron",
    "scriptFile": "index.js"
}
  

В этом мне нужно установить переменную окружения, но я не могу этого сделать. Я пытался найти какую-нибудь документацию, но не смог найти ничего, что не требовало бы некоторой настройки на консоли Azure?

Могу ли я определить переменные среды? Или, если есть какой-либо способ, которым я могу передать входные данные в функцию, это тоже работает.

Комментарии:

1. Это в AppSettings.json, а не в function.json

2. В javascript env это function.json в соответствии с learn.microsoft.com/en-us/azure/azure-functions /…

Ответ №1:

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

Файл локальных настроек В файле local.settings.json хранятся настройки приложения, строки подключения и настройки основных инструментов Azure Functions. Настройки в local.settings.json файле используются инструментами функций только при локальном запуске. По умолчанию эти настройки не переносятся автоматически при публикации проекта в Azure. Используйте --publish-local-settings переключатель при публикации, чтобы убедиться, что эти настройки добавлены в приложение function в Azure.

В функциях параметры приложения, такие как строки подключения к службе, отображаются как переменные среды во время выполнения. Вы можете получить доступ к этим настройкам с помощью process.env, как показано здесь, в функции GetEnvironmentVariable:

 module.exports = function (context, myTimer) {
    var timeStamp = new Date().toISOString();

    context.log('Node.js timer trigger function ran!', timeStamp);
    context.log(GetEnvironmentVariable("AzureWebJobsStorage"));
    context.log(GetEnvironmentVariable("WEBSITE_SITE_NAME"));

    context.done();
};

function GetEnvironmentVariable(name)
{
    return name   ": "   process.env[name];
}
  

Существует несколько способов добавления, обновления и удаления параметров приложения-функции:

При локальном запуске настройки приложения считываются из файла проекта local.settings.json.

Ссылки:

Комментарии:

1. возможно ли создание local.settings.json на уровне функции, а не на уровне сервиса?

2. нет, у вас может быть только один local.settings.json для всего приложения.

Ответ №2:

Кроме того, для извлечения значений из local.settings.json другим способом является создание объекта IConfigurationRoot с помощью ExecutionContext executionContext .

ExecutionContext можно добавить в определение функции:

 [FunctionName("FunctionName")]
        public static async Task Run(
            [ServiceBusTrigger(...)]
            SomeMessage msg,
            ILogger log,
            ExecutionContext executionContext)
{
}
  

После этого вы можете создать экземпляр IConfigurationRoot, которому вы указываете при необходимости загрузить local.appsettings.json.

   var configurationRoot = new ConfigurationBuilder()
            .SetBasePath(executionContext.FunctionAppDirectory)
            .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();
  

С помощью объекта configurationRoot можно извлекать значения конфигурации:

  var value = configurationRoot["SomeKey"];
  

Пример local.settings.json:

 {
 "IsEncrypted": false,
 "Values": {
  "AzureWebJobsStorage": "...",
  "FUNCTIONS_WORKER_RUNTIME": "dotnet",
  "SomeKey": "Value",
},
"Host": {
 "LocalHttpPort": "7071"
}
}