C# 如何访问Lambda环境变量?

C# 如何访问Lambda环境变量?,c#,amazon-web-services,asp.net-core,.net-core,aws-lambda,C#,Amazon Web Services,Asp.net Core,.net Core,Aws Lambda,运行.net core 2.1 AWS Lambda函数时,使用以下命令从c#中的AWS Lambda控制台获取环境变量非常简单: 但是,当在AWS Lambda上以无服务器应用程序的形式运行ASP.NET core 2.1时,这不起作用(上面返回null) 我可以在launchSettings.json文件中设置本地env变量,但我希望使用AWS Lambda控制台中的env变量 如何访问ASP.NET Core 2.1中的AWS Lambda Env变量 如何访问ASP.NET Core 2

运行.net core 2.1 AWS Lambda函数时,使用以下命令从c#中的AWS Lambda控制台获取环境变量非常简单:

但是,当在AWS Lambda上以无服务器应用程序的形式运行ASP.NET core 2.1时,这不起作用(上面返回null)

我可以在launchSettings.json文件中设置本地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" : {
  }
}
参考文献

参考

试试这个:

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

public class EnviromentClass : IEnviromentVariables {
    public string getEnVariable(string variable) {
        return System.Environment.GetEnvironmentVariable(variable);
    }
}

是否在
serverless.template
文件中设置了变量?环境变量设置为部署端口。确保已将变量添加为环境的一部分。否。这就是我错过的。非常感谢。不要忘记,您可以将环境变量视为配置源,并且永远不要使用此语法。
public interface IEnviromentVariables {
    string getEnVariable(string variable);
}

public class EnviromentClass : IEnviromentVariables {
    public string getEnVariable(string variable) {
        return System.Environment.GetEnvironmentVariable(variable);
    }
}