.netコア2.1 AWS Lambda関数を実行する場合、C#のAWS Lambdaコンソールから次を使用して環境変数を取得するのは簡単です。
var envVariable = Environment.GetEnvironmentVariable("myVariableName");
ただし、AWS LambdaでASP.NETコア2.1をサーバーレスアプリケーションとして実行している場合、これは機能しません(上記はnullを返します)。
LaunchSettings.jsonファイルでlocal env変数を設定できますが、AWS LambdaコンソールからEnv変数を使用したいです。
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" : {
}
}
リファレンス AWS Lambdaを使用したサーバーレスアプリケーションのビルドとテスト
リファレンス ASP.NET Core、AWS Lambda、AWS API Gatewayを使用したサーバーレスアプリケーションの作成
これを試して:
public interface IEnviromentVariables {
string getEnVariable(string variable);
}
public class EnviromentClass : IEnviromentVariables {
public string getEnVariable(string variable) {
return System.Environment.GetEnvironmentVariable(variable);
}
}