Как получить доступ к переменной среды Lambda?

При запуске функции.net core 2.1 AWS Lambda просто получить переменную среды из консоли AWS Lambda Console в С#, используя:

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

Однако при запуске ASP.NET core 2.1 в качестве сервера без сервера на AWS Lambda это не работает (приведенное выше возвращает null).

Я могу установить локальную переменную env в файле launchSettings.json, но я хочу использовать переменную Env из консоли AWS Lambda.

Как я могу получить доступ к переменной AWS Lambda Env в ASP.NET Core 2.1?

Ответ 1

  Как получить доступ к переменной AWS Lambda Env в ASP.NET Core 2.1

Вы получаете к нему доступ так же, как и раньше.

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

Убедитесь, что для соответствующего ресурса установлена переменная среды, чтобы она была доступна при вызове.

Каждый ресурс будет иметь запись в файле serverless.template, который является шаблоном AWS CloudFormation, используемым для развертывания функций.

Записи переменных среды находятся по пути JSON Resources:{ResourceName}:Properties:Environment:Variables в файле.

Пример объявления

{
  "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

Ответ 2

Попробуй это:

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

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