我已经在AWS Lambda Project
中创建了C#
(不是无服务器应用程序)
我在aws-lambda-tools-defaults.json
中定义了一个环境变量,如下所示:
"environment-variables": {
"my-api": "http://myapihost.com/api/attendance-backfill"
}
在Function.cs中,按如下所示获取值
var apiUrl = Environment.GetEnvironmentVariable("my-api").ToString();
但它总是以null
的形式出现。
如何设置和获取环境变量?
谢谢!
根据评论。
答案 0 :(得分:1)
它非常接近,但是经过一番挖掘之后,我发现了如何使用Mock Lambda测试工具为本地运行实际设置这些设置。实际上,它位于launchSettings.json文件中。您要将设置拖放到配置文件节点的“模拟Lambda测试工具”部分,而不是外部。
{
"profiles": {
"Mock Lambda Test Tool": {
"commandName": "Executable",
"commandLineArgs": "--port 5050",
"workingDirectory": ".\\bin\\Debug\\netcoreapp2.1",
"executablePath": "C:\\Users\\%USERNAME%\\.dotnet\\tools\\dotnet-lambda-test-tool-2.1.exe",
"environmentVariables": {
"environment": "test"
}
}
}
}
答案 1 :(得分:0)
您需要在两个地方设置环境变量:开发时间和部署时间。为此,请从解决方案资源管理器中的Properties文件夹下打开launchSettings.json文件。然后添加以下JSON属性:
"environmentVariables": {
"my-api": "something"
}
要在部署时设置环境变量,可以将它们添加到aws-lambda-tools-defaults.json文件中。 (请记住不要使用双引号。)
environment-variables, its format is: "<key1>=<value1>;<key2>=<value2>;".
您应该拥有
"environment-variables" : "\"my-api\"=\"http://myapihost.com/api/attendance-backfill\";"
消费/获取环境变量
使用系统库aws blog,可以在C#代码中直观地将环境变量作为Lambda函数逻辑的一部分来使用:
System.Environment.GetEnvironmentVariable(<key>);
您可以使用以下内容;
var apiUrl = System.Environment.GetEnvironmentVariable("my-api");
在this document中,建议您获取环境变量的方法是正确的。
var variableValue = Environment.GetEnvironmentVariable("nameOfVariable");