web-dev-qa-db-de.com

Zugriff auf die Lambda-Umgebungsvariable

Wenn Sie eine .net core 2.1 AWS Lambda-Funktion ausführen, ist es einfach, eine Umgebungsvariable von der AWS Lambda Console in c # abzurufen: 

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

Wenn ASP.NET core 2.1 als Serverless-Anwendung unter AWS Lambda ausgeführt wird, funktioniert dies jedoch nicht (das oben angegebene Ergebnis gibt null zurück).

Ich kann eine local env-Variable in der Datei launchSettings.json festlegen, aber ich möchte die Env-Variable von der AWS Lambda-Konsole verwenden.

Wie kann ich auf die AWS Lambda Env-Variable in ASP.NET Core 2.1 zugreifen?

5
Pete Lunenfeld

Wie kann ich auf die AWS Lambda Env-Variable in ASP.NET Core 2.1 zugreifen?

Sie greifen auf dieselbe Weise wie zuvor zu.

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

Stellen Sie sicher, dass die Umgebungsvariable für die jeweilige Ressource festgelegt ist, sodass sie beim Aufruf verfügbar ist.

Jede Ressource hätte einen Eintrag in der Datei serverless.template, der AWS CloudFormation-Vorlage, die zum Bereitstellen von Funktionen verwendet wird.

Umgebungsvariableneinträge befinden sich unter dem Resources:{ResourceName}:Properties:Environment:Variables-JSON-Pfad in der Datei.

Beispieldeklaration

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

Referenz Erstellen und Testen einer serverlosen Anwendung mit AWS Lambda

Referenz Erstellen einer serverlosen Anwendung mit ASP.NET Core, AWS Lambda und AWS API Gateway

13
Nkosi

Versuche dies:

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

public class EnviromentClass : IEnviromentVariables {
    public string getEnVariable(string variable) {
        return System.Environment.GetEnvironmentVariable(variable);
    }
}
0
Eduardo Díaz