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/01/2021

Je veux exécuter manuellement des scripts qui nécessitent l'accès aux propriétés 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 sur les plateformes Amazon Linux 2. Les scripts nécessitent l'accès aux propriétés d'environnement de votre instance Elastic Beanstalk. 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 (.ebextensions).

Remarque : La résolution suivante inclut deux scripts 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 propriétés d'environnement définies dans le fichier /opt/elasticbeanstalk/deployment/env.

Résolution

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

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

2.    Pour autoriser tout utilisateur de l'instance à accéder au fichier de variables d'environnement, utilisez un script bash qui contient la même logique qui copie le fichier /opt/elasticbeanstalk/deployment/env et définit 644 autorisations. Par exemple :

.platform/hooks/postdeploy/01_set_env.sh AND .platform/confighooks/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
-----

3.    Définissez les autorisations d'exécution sur les fichiers .platform/hooks/postdeploy/01_set_env.sh. et .platform/confighooks/postdeploy/01_set_env.sh.

chmod +x .platform/hooks/postdeploy/01_set_env.sh
chmod +x .platform/confighooks/postdeploy/01_set_env.sh

4.    Déployez les scripts de hook .platform.

5.    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 : Les propriétés d'environnement comportant des espaces ou des caractères spéciaux sont interprétées par le shell Bash et peuvent donner lieu à une valeur différente.

Important : Sur Amazon Linux 2, toutes les propriétés 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 propriétés 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 ?