Utiliser les variables d'environnement Lambda pour configurer les valeurs dans le code - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser les variables d'environnement Lambda pour configurer les valeurs dans le code

Vous pouvez utiliser des variables d’environnement pour ajuster le comportement de votre fonction sans mettre à jour le code. Une variable d’environnement est une paire de chaînes stockées dans la configuration spécifique à la version d’une fonction. L’environnement d’exécution de Lambda met les variables d’environnement à la disposition de votre code et définit les variables d’environnement supplémentaires qui contiennent des informations sur la fonction et la demande d’invocation.

Note

Pour renforcer la sécurité, nous vous recommandons d'utiliser à la AWS Secrets Manager place des variables d'environnement pour stocker les informations d'identification de la base de données et d'autres informations sensibles telles que les clés d'API ou les jetons d'autorisation. Pour plus d'informations, voir Créer et gérer des secrets avec AWS Secrets Manager.

Les variables d’environnement ne sont pas évaluées avant l’invocation de la fonction. Toute valeur que vous définissez est considérée comme une chaîne littérale et non développée. Effectuez l’évaluation de la variable dans le code de votre fonction.

Vous pouvez configurer les variables d'environnement dans Lambda à l'aide de la console Lambda, du AWS Command Line Interface (AWS CLI), AWS Serverless Application Model (AWS SAM) ou d'un SDK. AWS

Console

Vous définissez des variables d’environnement sur la version non publiée de votre fonction. Lorsque vous publiez une version, les variables d'environnement sont verrouillées pour cette version ainsi que pour les autres paramètres de configuration spécifiques à la version.

Vous créez une variable d’environnement pour votre fonction en définissant une clé et une valeur. Votre fonction utilise le nom de la clé pour récupérer la valeur de la variable d’environnement.

Pour définir des variables d’environnement dans la console Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Choisissez Configuration, puis Environment variables (Variables d’environnement).

  4. Sous Variables d’environnement, choisissez Modifier.

  5. Choisissez Ajouter une variable d’environnement.

  6. Entrez une clé et une valeur.

    Prérequis
    • Les clés commencent par une lettre et comportent au moins deux caractères.

    • Les clés contiennent uniquement des lettres, des chiffres et le caractère de soulignement (_).

    • Les clés ne sont pas réservées par Lambda.

    • La taille totale de toutes les variables d’environnement ne dépasse pas 4 Ko.

  7. Choisissez Enregistrer.

Pour générer une liste de variables d’environnement dans l’éditeur de code de la console

Vous pouvez générer une liste de variables d’environnement dans l’éditeur de code Lambda. Il s’agit d’un moyen rapide de référencer vos variables d’environnement pendant que vous codez.

  1. Cliquez sur l’onglet Code.

  2. Choisissez l’onglet Variables d’environnement.

  3. Choisissez Outils, puis Afficher les variables d’environnement.

Les variables d’environnement restent chiffrées lorsqu’elles sont répertoriées dans l’éditeur de code de la console. Si vous avez activé les assistants de chiffrement pour le chiffrement en transit, ces paramètres restent inchangés. Pour plus d’informations, consultez Sécurisation des variables d'environnement Lambda.

La liste des variables d’environnement est en lecture seule et n’est disponible que sur la console Lambda. Ce fichier n’est pas inclus lorsque vous téléchargez l’archive .zip de la fonction et vous ne pouvez pas ajouter de variables d’environnement en chargeant ce fichier.

AWS CLI

L’exemple suivant définit deux variables d’environnement sur une fonction nommée my-function.

aws lambda update-function-configuration \ --function-name my-function \ --environment "Variables={BUCKET=DOC-EXAMPLE-BUCKET,KEY=file.txt}"

Lorsque vous appliquez des variables d’environnement avec la commande update-function-configuration, l’ensemble du contenu de la structure Variables est remplacé. Pour conserver les variables d’environnement existantes lorsque vous en ajoutez une nouvelle, incluez toutes les valeurs existantes dans votre demande.

Pour obtenir la configuration actuelle, utilisez la commande get-function-configuration.

aws lambda get-function-configuration \ --function-name my-function

Vous devriez voir la sortie suivante :

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::111122223333:role/lambda-role", "Environment": { "Variables": { "BUCKET": "DOC-EXAMPLE-BUCKET", "KEY": "file.txt" } }, "RevisionId": "0894d3c1-2a3d-4d48-bf7f-abade99f3c15", ... }

Vous pouvez transmettre l’identifiant de révision depuis la sortie de get-function-configuration en tant que paramètre à update-function-configuration. Cela garantit que les valeurs ne changent pas entre le moment où vous lisez la configuration et celui où vous la mettez à jour.

Pour configurer la clé de chiffrement d’une fonction, définissez l’option KMSKeyARN.

aws lambda update-function-configuration \ --function-name my-function \ --kms-key-arn arn:aws:kms:us-east-2:111122223333:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
AWS SAM

Vous pouvez utiliser le AWS Serverless Application Modelpour configurer les variables d'environnement de votre fonction. Mettez à jour les propriétés de l'environnement et des variables dans votre template.yaml fichier, puis exécutez sam deploy.

Exemple template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Application Model template describing your function. Resources: my-function: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 120 Handler: index.handler Runtime: nodejs18.x Architectures: - x86_64 EphemeralStorage: Size: 10240 Environment: Variables: BUCKET: DOC-EXAMPLE-BUCKET KEY: file.txt # Other function properties...
AWS SDKs

Pour gérer les variables d'environnement à l'aide d'un AWS SDK, utilisez les opérations d'API suivantes.

Pour en savoir plus, consultez la documentation du AWS SDK correspondant à votre langage de programmation préféré.

Variables d’environnement d’exécution définies

Les runtimes Lambda définissent plusieurs variables d’environnement lors de l’initialisation. La plupart des variables d’environnement fournissent des informations sur la fonction ou l’exécution. Les clés de ces variables d’environnement sont réservées et ne peuvent pas être définies dans la configuration de la fonction.

Variables d’environnement réservées
  • _HANDLER – Emplacement de gestionnaire configuré sur la fonction.

  • _X_AMZN_TRACE_IDEn-tête de suivi X-Ray. Cette variable d'environnement change à chaque invocation.

    • Cette variable d'environnement n'est pas définie pour les environnements d'exécution uniquement basés sur le système d'exploitation (famille des environnements d'exécution provided). Vous pouvez définir _X_AMZN_TRACE_ID pour les environnements d’exécution personnalisés à l’aide de l’en-tête de réponse Lambda-Runtime-Trace-Id de l’Invocation suivante.

    • Pour les versions 17 et ultérieures du runtime Java, cette variable d'environnement n'est pas utilisée. Lambda stocke plutôt les informations de suivi dans la propriété du système com.amazonaws.xray.traceHeader.

  • AWS_DEFAULT_REGION— L' Région AWS endroit par défaut où la fonction Lambda est exécutée.

  • AWS_REGION— L' Région AWS endroit où la fonction Lambda est exécutée. Si elle est définie, cette valeur remplace AWS_DEFAULT_REGION.

    • Pour plus d'informations sur l'utilisation des variables d' Région AWS environnement avec AWS les SDK, consultez AWS la section Région du Guide de référence AWS des SDK et des outils.

  • AWS_EXECUTION_ENVIdentifiant d’exécution, doté du préfixe AWS_Lambda_ (par exemple, AWS_Lambda_java8). Cette variable d'environnement n'est pas définie pour les environnements d'exécution uniquement basés sur le système d'exploitation (famille des environnements d'exécution provided).

  • AWS_LAMBDA_FUNCTION_NAME – Nom de la fonction.

  • AWS_LAMBDA_FUNCTION_MEMORY_SIZE – Quantité de mémoire disponible pour la fonction en Mo.

  • AWS_LAMBDA_FUNCTION_VERSION – Version de la fonction en cours d’exécution.

  • AWS_LAMBDA_INITIALIZATION_TYPE – Type d’initialisation de la fonction, à savoir on-demand, provisioned-concurrency ou snap-start. Pour plus d’informations, consultez Configuration de la simultanéité provisionnée ou Améliorer les performances de démarrage avec Lambda SnapStart.

  • AWS_LAMBDA_LOG_GROUP_NAME, AWS_LAMBDA_LOG_STREAM_NAME — Le nom du groupe Amazon CloudWatch Logs et du flux associés à la fonction. Les variables AWS_LAMBDA_LOG_GROUP_NAME d'AWS_LAMBDA_LOG_STREAM_NAMEenvironnement et ne sont pas disponibles dans les fonctions Lambda SnapStart .

  • AWS_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN – Clés d’accès obtenues du rôle d’exécution de la fonction.

  • AWS_LAMBDA_RUNTIME_API – (exécution personnalisée) Hôte et port de l’API d’exécution..

  • LAMBDA_TASK_ROOT – Chemin d’accès du code de la fonction Lambda.

  • LAMBDA_RUNTIME_DIR – Chemin d’accès des bibliothèques de l’environnement d’exécution.

Les variables d’environnement supplémentaires suivantes ne sont pas réservées et peuvent être étendues dans la configuration de la fonction.

Variables d’environnement non réservées
  • LANG – Paramètres régionaux de l’environnement d’exécution (en_US.UTF-8).

  • PATH – Chemin d’exécution (/usr/local/bin:/usr/bin/:/bin:/opt/bin).

  • LD_LIBRARY_PATH – Chemin de la bibliothèque système (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib).

  • NODE_PATH – (Node.js) Chemin d’accès de la bibliothèque Node.js (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules).

  • PYTHONPATH – (Python 2.7, 3.6, 3.8) Chemin d’accès de la bibliothèque Python ($LAMBDA_RUNTIME_DIR).

  • GEM_PATH – (Ruby) Chemin d’accès de la bibliothèque Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0).

  • AWS_XRAY_CONTEXT_MISSING – Pour le suivi X-Ray, Lambda définit cette valeur sur LOG_ERROR pour éviter de générer des erreurs d’environnement d’exécution à partir du kit SDK X-Ray.

  • AWS_XRAY_DAEMON_ADDRESS – Pour le suivi X-Ray, adresse IP et le port du démon X-Ray.

  • AWS_LAMBDA_DOTNET_PREJIT – Pour les exécutions .NET 6 et .NET 7, définissez cette variable pour activer ou désactiver les optimisations d’exécution spécifiques à .NET. Les valeurs incluent always, never et provisioned-concurrency. Pour plus d’informations, consultez Configuration de la simultanéité provisionnée pour une fonction.

  • TZ – Fuseau horaire de l’environnement (:UTC). L’environnement d’exécution utilise NTP pour synchroniser l’horloge système.

Les valeurs d’exemple affichées reflètent les derniers moteurs d’exécution. La présence de variables spécifiques ou leurs valeurs peuvent varier dans les anciens environnements d’exécution.

Exemple de scénario pour les variables d’environnement

Vous pouvez utiliser des variables d’environnement pour personnaliser le comportement des fonctions dans vos environnements de test et de production. Vous pouvez par exemple créer deux fonctions avec le même code mais une configuration différente. Une fonction se connecte à une base de données de test et l’autre à une base de données de production. Dans ce cas, vous utilisez des variables d’environnement pour transmettre à la fonction le nom d’hôte, ainsi que d’autres détails de connexion pour la base de données.

L’exemple suivant montre comment définir l’hôte de la base de données et le nom de base de données en tant que variables d’environnement.

Variables d’environnement dans la console Lambda.

Si vous souhaitez que votre environnement de test génère plus d’informations de débogage que l’environnement de production, vous pouvez définir une variable d’environnement pour configurer votre environnement de test de manière à utiliser une journalisation plus approfondie ou un suivi plus détaillé.