Outils de script de plateforme - AWS Elastic Beanstalk

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.

Outils de script de plateforme

Cette rubrique décrit les outils AWS Elastic Beanstalk destinés aux environnements utilisant les plateformes Amazon Linux. Les outils sont situés sur les instances Amazon EC2 des environnements Elastic Beanstalk.

get-config

Utilisez l'outil get-config pour récupérer les valeurs des variables d'environnement et d'autres informations de plateforme et d'instance. Cet outil est disponible dans /opt/elasticbeanstalk/bin/get-config.

Commandes get-config

Chaque commande d'outil get-config renvoie un type spécifique d'informations. Utilisez la syntaxe suivante pour exécuter les commandes de n'importe quel outil.

$ /opt/elasticbeanstalk/bin/get-config command [ options ]

L'exemple suivant exécute uniquement la commande environment.

$ /opt/elasticbeanstalk/bin/get-config environment -k PORT

Selon la commande et les options que vous choisissez, l'outil renvoie un objet (JSON ou YAML) avec des paires clé-valeur, ou une seule valeur.

Vous pouvez tester get-config en utilisant SSH pour vous connecter à une instance EC2 dans votre environnement Elastic Beanstalk.

Note

Lorsque vous exécutez get-config pour des tests, certaines commandes peuvent nécessiter des privilèges utilisateur root pour accéder aux informations sous-jacentes. Si vous obtenez une erreur d'autorisation d'accès, exécutez à nouveau la commande sous sudo.

Vous n'avez pas besoin d'ajouter sudo lorsque vous utilisez l'outil dans les scripts que vous déployez dans votre environnement. Elastic Beanstalk exécute tous vos scripts en tant qu'utilisateur racine.

Les sections suivantes décrivent les commandes des outils.

La commande get-config optionsettings renvoie un objet répertoriant les options de configuration définies sur l'environnement et utilisées par la plateforme sur les instances d'environnement. Elles sont organisées par espace de noms.

$ /opt/elasticbeanstalk/bin/get-config optionsettings {"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}

Pour renvoyer une option de configuration spécifique, utilisez l'option --namespace (-n) pour spécifier un espace de noms, et l'option --option-name (-o) pour spécifier un nom d'option.

$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit 256M

La commande get-config environment renvoie un objet contenant une liste de propriétés d'environnement. Il s'agit à la fois les propriétés configurées par l'utilisateur et des propriétés qui sont fournies par Elastic Beanstalk.

$ /opt/elasticbeanstalk/bin/get-config environment {"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}

Par exemple, Elastic Beanstalk fournit des propriétés d'environnement pour la connexion à une instance de base de données Amazon RDS intégrée (par exemple, RDS_HOSTNAME). Ces propriétés de connexion RDS apparaissent dans la sortie de get-config environment. Cependant, ils n'apparaissent pas dans le rendu final de get-config optionsettings. Cela est dû au fait qu'ils n'étaient pas définis dans les options de configuration.

Pour renvoyer une propriété d'environnement spécifique, utilisez l'option --key (-k) pour spécifier une propriété clé.

$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY testvalue

La commande get-config container renvoie un objet qui répertorie les valeurs de configuration de la plateforme et de l'environnement pour les instances d'environnement.

L'exemple suivant illustre la sortie de la commande dans un environnement Amazon Linux 2 Tomcat.

$ /opt/elasticbeanstalk/bin/get-config container {"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}

Pour renvoyer la valeur d'une clé spécifique, utilisez l'option --key (-k) pour spécifier la clé.

$ /opt/elasticbeanstalk/bin/get-config container -k environment_name myenv-1da84946

La commande get-config addons renvoie un objet qui contient des informations de configuration des modules complémentaires d'environnement. Utilisez-la pour récupérer la configuration d'une base de données Amazon RDS qui est associée à l'environnement.

$ /opt/elasticbeanstalk/bin/get-config addons {"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}

Vous pouvez restreindre le résultat de deux façons. Pour récupérer les valeurs d'un module complémentaire spécifique, utilisez l'option --add-on (-a) pour spécifier le nom du module complémentaire.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds {"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}

Pour renvoyer la valeur d'une clé spécifique dans un module complémentaire, ajoutez l'option --key (-k) pour spécifier la clé.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME ebdb

La commande get-config platformconfig renvoie un objet qui contient des informations de configuration de la plateforme qui sont constantes pour la version de la plateforme. La sortie est la même dans tous les environnements qui s'exécutent la même version de plateforme. L'objet de sortie de la commande comporte deux objets incorporés :

  • GeneralConfig : contient des informations qui sont constantes sur les dernières versions de toutes les branches de plateforme Amazon Linux 2 et Amazon Linux 2023.

  • PlatformSpecificConfig – Contient des informations qui sont constantes pour la version de la plateforme et qui lui sont spécifiques.

L'exemple suivant montre la sortie de la commande sur un environnement qui utilise Tomcat 8.5 exécutant la branche plateforme Corretto 11.

$ /opt/elasticbeanstalk/bin/get-config platformconfig {"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}

Pour renvoyer la valeur d'une clé spécifique, utilisez l'option --key (-k) pour spécifier la clé. Ces clés sont uniques sur les deux objets incorporés. Vous n'avez pas besoin de spécifier l'objet qui contient la clé.

$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir /var/app/staging/

Options de sortie get-config

Utilisez l'option --output pour spécifier le format de l'objet en sortie. Les valeurs valides sont JSON (par défaut) et YAML. Il s'agit d'une option globale. Vous devez le spécifier avant le nom de la commande.

L'exemple suivant renvoie des valeurs d'option de configuration au format YAML.

$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings aws:elasticbeanstalk:application:environment: JDBC_CONNECTION_STRING: "" aws:elasticbeanstalk:container:tomcat:jvmoptions: JVM Options: "" Xms: 256m Xmx: 256m aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx StaticFiles: - "" aws:elasticbeanstalk:healthreporting:system: SystemType: enhanced aws:elasticbeanstalk:hostmanager: LogPublicationControl: "false"

pkg-repo

Note

L'outil pkg-repo n'est pas disponible pour les environnements basés sur les plateformes Amazon Linux 2023. Toutefois, vous pouvez appliquer manuellement des mises à jour de packages et de systèmes d'exploitation à une instance AL2023. Pour plus d'informations, consultez Gestion des packages et des mises à jour du système d'exploitation (français non garanti) dans le Guide de l'utilisateur Amazon Linux 2023

Dans certaines circonstances urgentes, vous devrez peut-être mettre à jour vos instances Amazon EC2 avec un correctif de sécurité Amazon Linux 2 qui n'a pas encore été publié avec les versions requises de la plateforme Elastic Beanstalk. Vous ne pouvez pas effectuer de mise à jour manuelle sur vos environnements Elastic Beanstalk par défaut. En effet, les versions de la plateforme sont verrouillées sur une version spécifique du référentiel Amazon Linux 2. Ce verrou garantit que les instances exécutent des versions logicielles compatibles et prises en charge. Pour les cas urgents, l'outil pkg-repo permet une solution de contournement pour mettre à jour manuellement les packages yum sur Amazon Linux 2 si vous devez les installer sur un environnement avant qu'ils ne soient publiés dans une nouvelle version de la plateforme Elastic Beanstalk.

L'outil pkg-repo sur les plateformes Amazon Linux 2 permet de déverrouiller le référentiels de paquets yum. Vous pouvez ensuite effectuer manuellement une commande yum update pour un correctif de sécurité. Inversement, vous pouvez suivre la mise à jour à l'aide de l'outil pour verrouiller les référentiels de paquets yum afin d'éviter d'autres mises à jour. L'outil pkg-repo est disponible dans le répertoire /opt/elasticbeanstalk/bin/pkg-repo de toutes les instances EC2 dans vos environnements Elastic Beanstalk.

Les modifications apportées à l'aide de l'outil pkg-repo sont effectuées uniquement sur l'instance EC2 sur laquelle l'outil est utilisé. Elles n'affectent pas d'autres instances et n'empêchent pas les futures mises à jour de l'environnement. Les exemples décrits plus loin dans cette rubrique expliquent comment appliquer les changements à toutes les instances en appelant les commandes pkg-repo à partir de scripts et de fichiers de configuration.

Avertissement

Nous vous déconseillons cet outil pour la plupart des utilisateurs. Toute modification manuelle appliquée à une version de plateforme déverrouillée est considérée hors bande. Cette option n'est viable que pour les utilisateurs dans des circonstances urgentes qui peuvent accepter les risques suivants :

  • Il n'est pas possible de garantir la cohérence des versions des packages dans l'ensemble des instances de vos environnements.

  • Le bon fonctionnement des environnements modifiés à l'aide de l'outil pkg-repo n'est pas garanti. Ceux-ci n'ont pas été testés et vérifiés sur les plateformes prises en charge par Elastic Beanstalk.

Nous recommandons vivement d'appliquer les meilleures pratiques, notamment des plans de test et de désinstallation. Pour faciliter les bonnes pratiques, vous pouvez utiliser la console Elastic Beanstalk et l'interface CLI d'EB pour cloner un environnement et échanger les URL d'environnement. Pour en savoir plus sur l'utilisation de ces opérations, veuillez consulter la section Déploiements bleu/vert du chapitre Gestion des environnements de ce guide.

Si vous prévoyez de modifier manuellement les fichiers de configuration du référentiel yum, exécutez d'abord l'outil pkg-repo. L'outil pkg-repo peut ne pas fonctionner comme prévu dans un environnement Amazon Linux 2 avec des fichiers de configuration du référentiel yum modifiés manuellement. Cela est dû au fait que l'outil peut ne pas reconnaître les modifications de configuration.

Pour plus d'informations sur le référentiel de packages Amazon Linux, consultez la rubrique relative au référentiel de packages dans le guide de l'utilisateur Amazon EC2.

Commandes pkg-repo

Utilisez la syntaxe suivante pour exécuter les commandes de l'outil pkg-repo.

$ /opt/elasticbeanstalk/bin/pkg-repo command [options]

Les commandes pkg-repo sont les suivantes :

  • lock – verrouille les référentiels de paquets yum vers une version spécifique

  • unlock – déverrouille les référentiels de paquets yum à partir d'une version spécifique

  • status – répertorie tous les référentiels de packages yum et leur état actuel de verrouillage

  • help – affiche une aide générale ou une aide pour une commande en particulier

Les options s'appliquent aux commandes comme suit :

  • lock, unlock et status  – options : -h, --help ou aucune (par défaut).

  • help – options : lock, unlock, status ou aucune (par défaut).

L'exemple suivant exécute uniquement la commande unlock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock Amazon Linux 2 core package repo successfully unlocked Amazon Linux 2 extras package repo successfully unlocked

L'exemple suivant exécute uniquement la commande lock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock Amazon Linux 2 core package repo successfully locked Amazon Linux 2 extras package repo successfully locked

L'exemple suivant exécute uniquement la commande status.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo status Amazon Linux 2 core package repo is currently UNLOCKED Amazon Linux 2 extras package repo is currently UNLOCKED

L'exemple suivant exécute uniquement la commande help pour la commande lock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock

L'exemple suivant exécute uniquement la commande help pour l'outil pkg-repo.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help

Vous pouvez tester pkg-repo en utilisant SSH pour vous connecter à une instance dans votre environnement Elastic Beanstalk. Une option SSH est la commande eb ssh de l'interface de ligne de commande (CLI) EB.

Note

L'outil pkg-repo nécessite des privilèges d'utilisateur racine pour s'exécuter. Si vous obtenez une erreur d'autorisation d'accès, exécutez à nouveau la commande sous sudo.

Vous n'avez pas besoin d'ajouter sudo lorsque vous utilisez l'outil dans les scripts ou les fichiers de configuration que vous déployez dans votre environnement. Elastic Beanstalk exécute tous vos scripts en tant qu'utilisateur racine.

Exemples pkg-repo

La section précédente fournit des exemples de ligne de commande pour tester une instance EC2 individuelle d'un environnement Elastic Beanstalk. Cette approche peut être utile pour les tests. Cependant, elle ne met à jour qu'une seule instance à la fois, ce qui n'est pas pratique pour appliquer des changements à toutes les instances d'un environnement.

Une approche plus pragmatique consiste à utiliser des scripts de hook de plateforme scripts ou un fichier de configuration .ebextensions pour appliquer les modifications à toutes les instances de manière cohérente.

L'exemple suivant appelle pkg-repo à partir d'un fichier de configuration dans le dossier .ebextensions. Elastic Beanstalk exécute les commandes du fichier update_package.config lorsque vous déployez votre groupe source d'application.

.ebextensions └── update_package.config

Afin de recevoir la dernière version du package docker, cette configuration spécifie le package docker dans la commande yum update.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

Cette configuration ne spécifie aucun package dans la commande yum update. Toutes les mises à jour disponibles sont appliquées en conséquence.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

L'exemple suivant appelle pkg-repo à partir d'un script bash en tant que hook de plateforme. Elastic Beanstalk exécute le fichier de script update_package.sh situé dans le sous-répertoire prebuild.

.platform └── hooks └── prebuild └── update_package.sh

Afin de recevoir la dernière version du package docker, ce script spécifie le package docker dans la commande yum update. Si le nom du package est omis, toutes les mises à jour disponibles sont appliquées. L'exemple précédent du fichier de configuration le démontre.

### update_package.sh ### #!/bin/bash /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

download-source-bundle (AMI Amazon Linux uniquement)

Sur les branches de plateforme de l'AMI Amazon Linux (précédemment Amazon Linux 2), Elastic Beanstalk fournit un outil supplémentaire, qui est download-source-bundle. Utilisez cet outil pour télécharger le code source de votre application lors du déploiement de votre plateforme. Cet outil est disponible dans /opt/elasticbeanstalk/bin/download-source-bundle.

L'exemple de script 00-unzip.sh se trouve dans le dossier appdeploy/pre des instances d'environnement. Il montre la façon d'utiliser download-source-bundle pour télécharger le code source de l'application dans le dossier /opt/elasticbeanstalk/deploy/appsource pendant le déploiement.