Comment exécuter manuellement des scripts qui nécessitent l'accès aux variables d'environnement sur mon instance Elastic Beanstalk sur Amazon Linux 2 ?

Date de la dernière mise à jour : 20/08/2020

Je veux exécuter manuellement des scripts qui nécessitent l'accès aux variables d'environnement sur mon instance AWS Elastic Beanstalk sur Amazon Linux 2.

Brève description

Vous pouvez utiliser des hooks de plateforme pour exécuter manuellement des scripts qui nécessitent l'accès aux variables d'environnement sur votre instance Elastic Beanstalk sur les plateformes Amazon Linux 2. Pour configurer et exécuter du code personnalisé sur vos instances d'environnement pendant l'allocation d'instance, il est recommandé d'utiliser des hooks de plateforme au lieu de fournir des fichiers et des commandes dans des fichiers de configuration .ebextension.

Remarque : La résolution suivante inclut un script que vous pouvez utiliser sur plusieurs plateformes, y compris PHP, Python, Ruby, Amazon Corretto, Tomcat et Node.js. Le script permet aux utilisateurs de localiser la source des variables d'environnement définies dans le fichier /opt/elasticbeanstalk/deployment/env.

Résolution

1.    Dans votre groupe d'applications source, créez un fichier appelé 01_set_env.conf dans le répertoire .platform/hooks/postdeploy. Par exemple :

~/workspace/my-app/
├── .platform
│   ├── hooks
│   │   ├── postdeploy
│   │   │   ├── 01_set_env.sh
|-- helloworld

2.    Créez un script Bash qui copie le fichier /opt/elasticbeanstalk/deployment/env et définit 644 autorisations afin que tout utilisateur de l'instance puisse accéder au fichier. Par exemple :

.platform/hooks/postdeploy/01_set_env.sh
-----
#!/bin/bash

#Create a copy of the environment variable file
cp /opt/elasticbeanstalk/deployment/env /opt/elasticbeanstalk/deployment/custom_env_var

#Set permissions to the custom_env_var file so this file can be accessed by any user on the instance. You can restrict permissions as per your requirements.
chmod 644 /opt/elasticbeanstalk/deployment/custom_env_var

#Remove duplicate files upon deployment
rm -f /opt/elasticbeanstalk/deployment/*.bak
-----

Important : Définissez les autorisations chmod +x pour le fichier .platform/hooks/postdeploy/01_set_env.sh.

3.    Déployez le fichier hook .platform.

4.    Pour éviter la localisation manuelle de la source du fichier, ajoutez le code suivant au profil ~/.bash_profilede votre utilisateur :

source <(sed -E -n 's/[^#]+/export &/ p' /opt/elasticbeanstalk/deployment/custom_env_var)

Remarque : Sur Amazon Linux 2, toutes les variables d'environnement sont centralisées dans un seul fichier appelé /opt/elasticbeanstalk/deployment/env. Vous devez utiliser ce fichier uniquement pendant le processus de déploiement d'applications d'Elastic Beanstalk. Les variables définies dans /opt/elasticbeanstalk/deployment/env ne sont pas disponibles au niveau du système d'exploitation, ce qui provoque des refus d'autorisation si vous y accédez via des scripts manuels exécutés sur l'instance. Le fichier /opt/elasticbeanstalk/deployment/env dispose d'autorisations restreintes, ce qui complique la localisation de sa source pour les utilisateurs non root (par exemple ec2-user). Par exemple :

[root@ip-X-X-X-X deployment]# ls -latr /opt/elasticbeanstalk/deployment/env

-r-------- 1 root root 147 Jun 17 06:23 /opt/elasticbeanstalk/deployment/env

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


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