如何在C#中的AWS Lambda Project中设置和获取环境变量

Kgn*_*web 1 c# environment-variables amazon-web-services aws-lambda asp.net-core

我已经AWS Lambda Project在C#(NOT Serverless Application)中创建了

在此处输入图片说明

我在aws-lambda-tools-defaults.json下面定义了一个环境变量

"environment-variables": {
 "my-api": "http://myapihost.com/api/attendance-backfill"
 }
Run Code Online (Sandbox Code Playgroud)

在Function.cs中,按如下所示获取值

   var apiUrl = Environment.GetEnvironmentVariable("my-api").ToString();
Run Code Online (Sandbox Code Playgroud)

但是它总是像null。

如何设置和获取环境变量?

谢谢!

根据评论。

launch-settings.json

Function.cs

mar*_*ber 6

  1. 设置使用的环境变量文档

您需要在两个地方设置环境变量:开发时间和部署时间。为此,请从解决方案资源管理器中的 Properties 文件夹下打开 launchSettings.json 文件。然后添加以下 JSON 属性:

    "environmentVariables": {
      "my-api": "something"
    }
Run Code Online (Sandbox Code Playgroud)

要在部署时设置环境变量,您可以将这些添加到 aws-lambda-tools-defaults.json 文件中。(请记住转义双引号。)

    environment-variables, its format is: "<key1>=<value1>;<key2>=<value2>;".
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你应该有

    "environment-variables" : "\"my-api\"=\"http://myapihost.com/api/attendance-backfill\";"
Run Code Online (Sandbox Code Playgroud)
  1. 使用/获取环境变量

    使用环境变量作为 Lambda 函数逻辑的一部分是通过使用系统库aws 博客在 C# 代码中直观地完成的:

    System.Environment.GetEnvironmentVariable(<key>);
    
    Run Code Online (Sandbox Code Playgroud)

    在您的情况下,您可以使用以下内容;

    var apiUrl = System.Environment.GetEnvironmentVariable("my-api");
    
    Run Code Online (Sandbox Code Playgroud)

在本文档中,建议您获取环境变量的方法是正确的。

    var variableValue = Environment.GetEnvironmentVariable("nameOfVariable"); 
Run Code Online (Sandbox Code Playgroud)

  • 对于遇到此问题的任何人,这是 launchSettings.json 中的“environmentVariables”(而不是“environment-variables”) (2认同)

Kne*_*min 6

它非常接近,但是经过一番挖掘之后,我发现了如何使用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"
   }
  }
 }
}
Run Code Online (Sandbox Code Playgroud)