c# - 如何访问 Lambda 环境变量?
问题描述
在运行 .net core 2.1 AWS Lambda 函数时,使用 c# 从 AWS Lambda 控制台获取环境变量很简单,使用:
var envVariable = Environment.GetEnvironmentVariable("myVariableName");
但是,当在 AWS Lambda 上将 ASP.NET core 2.1 作为无服务器应用程序运行时,这不起作用(上面返回 null)。
我可以在 launchSettings.json 文件中设置本地环境变量,但我想使用 AWS Lambda 控制台中的环境变量。
如何在 ASP.NET Core 2.1 中访问 AWS Lambda Env 变量?
解决方案
如何在 ASP.NET Core 2.1 中访问 AWS Lambda Env 变量
您可以像以前一样访问它。
var envVariable = Environment.GetEnvironmentVariable("myVariableName");
确保为相应资源设置了环境变量,以便在调用时可用。
每个资源在serverless.template文件中都有一个条目,该文件是用于部署函数的 AWS CloudFormation 模板。
环境变量条目Resources:{ResourceName}:Properties:Environment:Variables
位于文件的 JSON 路径下。
示例声明
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Transform" : "AWS::Serverless-2016-10-31",
"Description" : "An AWS Serverless Application that uses the ASP.NET Core framework running in Amazon Lambda.",
"Parameters" : {
},
"Conditions" : {
},
"Resources" : {
"Get" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "TimeZoneService::TimeZoneService.LambdaEntryPoint::FunctionHandlerAsync",
"Runtime": "dotnetcore1.0",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 60,
"Role": null,
"Policies": [ "AWSLambdaFullAccess" ],
"Environment" : {
"Variables" : {
"myVariableName" : "my environment variable value"
}
},
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "/{proxy+}",
"Method": "ANY"
}
}
}
}
}
},
"Outputs" : {
}
}