Comment utiliser les variables d'environnement d'un shell d'instance Elastic Beanstalk ?

Dernière mise à jour : 06/01/2021

Je veux utiliser des variables d'environnement d'un shell d'instance AWS Elastic Beanstalk.

Brève description

Dans Elastic Beanstalk, les variables d'environnement ne sont pas exposées au système d'exploitation.

Pour utiliser un utilitaire avec des variables d'environnement du système d'exploitation et que les variables d'environnement sont définies en tant que variables d'environnement Elastic Beanstalk, vous devez utiliser une extension .ebextension qui exporte les variables d'environnement vers des variables de système d'exploitation.

La résolution suivante vous montre comment :

1.    Utilisez l'utilitaire get-config pour lire vos variables d'environnement Elastic Beanstalk.

2.    Utilisez l'utilitaire jq (du site Web jq) pour transformer la sortie get-config de JSON en variables shell.

3.    Enregistrez les variables dans le fichier /etc/profile.d/sh.local. Ce fichier est lu par bash pour exporter des variables vers le système d'exploitation.

Résolution

1.    Créez un fichier .ebextension dans votre ensemble source d'application et incluez les éléments suivants :

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
    yum:
        jq: []

Remarque : Le fichier de configuration de l'étape 1 s'appelle setvars.config.

2.    Enregistrez le fichier .ebextension et déployez-le dans votre environnement Elastic Beanstalk.

3.    Pour tester si les variables sont en cours d'exportation, connectez-vous à votre instance à l'aide du protocole SSH, puis exécutez la commande suivante.

env | grep VARIABLE_NAME

Important : Pour l'étape 3, définissez VARIABLE_NAME sur une variable définie dans votre environnement.

La sortie indique si vos variables d'environnement sont définies correctement. Dans l'exemple de sortie suivant, une variable appelée RDS_PORT est définie dans l'environnement Elastic Beanstalk.

$ env|grep RDS_PORT
RDS_PORT=3306

Remarque : étant donné que vous utilisez les commandes de .ebextension, vous ne pouvez mettre à jour le fichier sh.local qu'avec un nouveau déploiement. Si vous ajoutez ou modifiez une nouvelle variable dans l'environnement, vous devez créer un nouveau déploiement avant que la variable ne soit exportée vers le système d'exploitation.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?