web-dev-qa-db-ja.com

Lambda環境変数にアクセスする方法は?

.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変数にアクセスするにはどうすればよいですか?

12
Pete Lunenfeld

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を使用したサーバーレスアプリケーションの作成

21
Nkosi

これを試して:

public interface IEnviromentVariables {
    string getEnVariable(string variable);
}

public class EnviromentClass : IEnviromentVariables {
    public string getEnVariable(string variable) {
        return System.Environment.GetEnvironmentVariable(variable);
    }
}
0
Eduardo Díaz