Я пытаюсь создать супер базовую функцию Azure, но у меня проблемы с переменными среды. После различных уроков онлайн,
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
log.Info(config["AzureWebJobsStorage"]);
Мой local.settings.json выглядит так:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "abc123",
"AzureWebJobsDashboard": "abc123",
"MyBindingConnection": "abc123"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*"
}
}
Когда я запускаю это локально, это
log.Info(config["AzureWebJobsStorage"]);
строка ничего не возвращает... но при развертывании в Azure я вижу "abc123" в консоли.
Однако, если я изменю эту строку на
log.Info(config["Values:AzureWebJobsStorage"]);
Затем, когда я запускаю локально, я вижу "abc123", но при развертывании в Azure я ничего не вижу.
Есть ли что-то, чего мне не хватает, чтобы иметь возможность получить доступ к переменным окружения так же, как локально и развернуто?
EDIT: Для уточнения, эти параметры настраиваются в настройках приложения для функции:
Предполагая, что вы используете таргетинг времени выполнения ~ 2 для ваших функций Azure, вы можете получить доступ к значениям конфигурации через:
log.Info(Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process));
Эти переменные среды работают, когда вы тестируете свою функцию локально. Однако при развертывании на функциональном портале Azure вам необходимо настроить переменные, используя их встроенную систему для обработки переменных среды.
Скопируйте и вставьте значения ключа в разделы, которые я выделил на изображении ниже.
<