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?
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
Versuche dies:
public interface IEnviromentVariables {
string getEnVariable(string variable);
}
public class EnviromentClass : IEnviromentVariables {
public string getEnVariable(string variable) {
return System.Environment.GetEnvironmentVariable(variable);
}
}