4 votes

Peut-on remapper/copier/alias les variables d'environnement vers de nouvelles variables dans AWS elastic beanstalk ?

Actuellement, les variables de ma base de données sont définies comme suit RDS_* mais j'aimerais les adapter aux conventions de mon application.

Cela permettrait d'éviter d'écrire des détections spécifiques à AWS dans mon projet, ce qui est évidemment souhaitable.

2voto

Jonathan C Points 86

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X