#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"
}
}