Il existe plusieurs options différentes, chacune comportant ses propres pièges :
1. Ajout de variables d'environnement à la configuration d'EB
Une fois dans votre environnement, naviguez jusqu'à la section Configuration, puis Configuration du logiciel. Vous y trouverez une liste de variables d'environnement et, en bas, une liste de vos propres variables personnalisées. L'inconvénient est qu'il n'y a pas de moyen de mapper dynamiquement les valeurs des variables d'environnement AWS. Si une valeur change dans AWS, vous devez mettre à jour manuellement la vôtre. Cela se produit le plus souvent dans le cas où vous mettez à niveau ou rétrogradez votre base de données. Vous devrez donc mettre à jour l'hôte de la base de données en fonction du nouveau point de terminaison RDS. (NOTE : Ceci est basé sur les options disponibles pour les environnements PHP. J'ai vu des variantes pour d'autres langages, mais il peut s'agir d'une vieille documentation).
2. Ajout d'un post deploy script
C'est un peu difficile avec beanstalk, mais il est possible d'exécuter des scripts post-déploiement. Je n'entrerai pas dans les détails, mais en gros vous devrez ajouter post deploy scripts comme décrit dans ceci article à un ami par défaut. Ensuite, vous devrez copier l'instance en tant que nouvel ami, et le basculer dans vos instances beanstalk pour l'utiliser par défaut. Dans le post deploy script vous pouvez ajouter le mapping à vos variables d'environnement.
3. Ajouter la cartographie à votre code
Je sais que vous ne voulez pas faire cela, mais je pense que cela vous évitera le plus de maux de tête possible. J'ai inclus un exemple très simple en PHP. Faites attention à interchanger $_ENV et getenv()/putenv()/$_SERVER si vous utilisez PHP car ils proviennent de sources différentes et peuvent être modifiés indépendamment.
<?php
if(getenv('RDS_VAR')) {
putenv('NEW_VAR', getenv('RDS_VAR'))
}
?>
Réflexions finales
J'utilise une combinaison des points 1 et 3 lorsque je déploie une application sur Beanstalk, car c'est ce qui donne le plus de flexibilité lorsque l'on traite des variables d'environnement dynamiques. Je fais d'abord correspondre les valeurs à la configuration de mes applications comme décrit dans le point 3, puis si je veux planifier un éventuel changement de point de terminaison RDS, de mot de passe ou de nom d'utilisateur, je peux ajouter des variables d'environnement comme mentionné dans le point 1 et mettre en place des dérogations à mon mappage d'environnement AWS. Cela me permet de rester synchronisé avec les variables d'environnement AWS, mais aussi de les remplacer manuellement dans la configuration logicielle si je dois remplacer la base de données par une sauvegarde.