我正在尝试设置一个timerTrigger
天蓝色功能
我的function.json
:
{
"disabled": false,
"bindings": [
{
"type": "timerTrigger",
"direction": "in",
"name": "sampleCronTrigger",
"schedule": "*/5 * * * * *",
}
],
"entryPoint": "sampleCron",
"scriptFile": "index.js"
}
在这种情况下,我需要设置一个环境变量,但是我不能这样做。我尝试查找一些文档,但找不到不需要在Azure控制台上进行某些设置的任何内容?
我可以定义环境变量吗?或者,如果可以通过任何方式将输入传递给函数,也可以。
答案 0 :(得分:1)
功能应用程序中的应用程序设置包含全局配置选项,这些选项会影响该功能应用程序的所有功能。在本地运行时,这些设置将以local environment variables访问。
本地设置文件
文件local.settings.json
存储应用程序设置,连接字符串以及Azure Functions核心工具的设置。 local.settings.json
文件中的设置仅在本地运行时由“功能”工具使用。默认情况下,将项目发布到Azure时不会自动迁移这些设置。发布时使用--publish-local-settings
开关以确保将这些设置添加到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 :(得分:0)
另外,为了从local.settings.json中检索值,另一种方法是使用ExecutionContext executionContext
创建IConfigurationRoot对象。
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"
}
}