web-dev-qa-db-fra.com

Comment accéder à la variable d'environnement Lambda?

Lors de l'exécution d'une fonction AWS Lambda .net core 2.1, il est simple d'extraire une variable d'environnement de la console AWS Lambda en c # à l'aide de: 

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

Toutefois, lors de l'exécution d'ASP.NET Core 2.1 en tant qu'application sans serveur sur AWS Lambda, cela ne fonctionne pas (la procédure ci-dessus renvoie null).

Je peux définir une variable local env dans le fichier launchSettings.json, mais je souhaite utiliser la variable Env de la console AWS Lambda.

Comment puis-je accéder à la variable AWS Lambda Env dans ASP.NET Core 2.1?

5
Pete Lunenfeld

Comment accéder à la variable AWS Lambda Env dans ASP.NET Core 2.1

Vous y accédez de la même manière qu'auparavant.

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

Assurez-vous que la variable d'environnement est définie pour la ressource respective afin qu'elle soit disponible lorsqu'elle est appelée.

Chaque ressource aurait une entrée dans le fichier serverless.template, qui correspond au modèle AWS CloudFormation utilisé pour déployer des fonctions.

Les entrées de variable d’environnement se trouvent sous le chemin JSON Resources:{ResourceName}:Properties:Environment:Variables dans le fichier.

Exemple de déclaration

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

Référence Construire et tester une application sans serveur avec AWS Lambda

Référence Création d'une application sans serveur avec ASP.NET Core, AWS Lambda et AWS API Gateway

13
Nkosi

Essaye ça:

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