首页 > 解决方案 > 如何访问 Lambda 环境变量?

问题描述

在运行 .net core 2.1 AWS Lambda 函数时,使用 c# 从 AWS Lambda 控制台获取环境变量很简单,使用:

var envVariable = Environment.GetEnvironmentVariable("myVariableName");

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

我可以在 launchSettings.json 文件中设置本地环境变量,但我想使用 AWS Lambda 控制台中的环境变量。

如何在 ASP.NET Core 2.1 中访问 AWS Lambda Env 变量?

标签: c#amazon-web-servicesasp.net-core.net-coreaws-lambda

解决方案


如何在 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 创建无服务器应用程序


推荐阅读