【问题标题】:How do I set & fetch Environment variable in AWS Lambda Project in C#如何在 C# 中的 AWS Lambda 项目中设置和获取环境变量
【发布时间】:2019-02-23 16:32:00
【问题描述】:

我在C#(不是无服务器应用程序)中创建了AWS Lambda Project

我在aws-lambda-tools-defaults.json 中定义了一个环境变量,如下所示

"environment-variables": {
 "my-api": "http://myapihost.com/api/attendance-backfill"
 }

在 Function.cs 中,取值如下

   var apiUrl = Environment.GetEnvironmentVariable("my-api").ToString();

但它总是以null 的形式出现。

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

谢谢!

根据评论。

【问题讨论】:

    标签: c# amazon-web-services asp.net-core aws-lambda environment-variables


    【解决方案1】:

    它非常接近,但经过一番挖掘后,我发现了如何使用 Mock Lambda 测试工具为本地运行实际设置这些。事实上,它在 launchSettings.json 文件中。您希望将设置放在配置文件节点的 Mock 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"
       }
      }
     }
    }
    

    【讨论】:

      【解决方案2】:
      1. 设置环境变量docs used

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

          "environmentVariables": {
            "my-api": "something"
          }
      

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

          environment-variables, its format is: "<key1>=<value1>;<key2>=<value2>;".
      

      在你的情况下,你应该有

          "environment-variables" : "\"my-api\"=\"http://myapihost.com/api/attendance-backfill\";"
      
      1. 使用/获取环境变量

        使用系统库aws blog,在 C# 代码中直观地使用环境变量作为 Lambda 函数逻辑的一部分:

        System.Environment.GetEnvironmentVariable(<key>);
        

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

        var apiUrl = System.Environment.GetEnvironmentVariable("my-api");
        

      this document 建议您获取环境变量的方法是正确的。

          var variableValue = Environment.GetEnvironmentVariable("nameOfVariable"); 
      

      【讨论】:

      • 您是否仅使用 Environment.GetEnvironmentVariable("my-api") 重试。确保您的环境变量配置正确。我发现两个文件略有不同 aws threadtwenty6 doc on lambda variables
      • System.Environment.GetEnvironmentVariable("my-api") 在 .json 文件中设置值时返回 null
      • 我用一些额外的文档更新了我的答案。您能否确认您已修复您的 aws-lambda-tools-defaults.json 以便正确设置 environment-variables 参数?
      • 我添加了launch-settings.json和Function.cs的截图,仍然得到值为null
      • 对于遇到此问题的任何人,launchSettings.json 中的 environmentVariables(不是 environment-variables
      猜你喜欢
      • 2010-09-16
      • 1970-01-01
      • 2017-10-31
      • 2022-08-19
      • 1970-01-01
      • 2015-10-11
      • 2018-07-07
      • 1970-01-01
      相关资源
      最近更新 更多