Le texte de présentation d'Amazon Elastic Beanstalk dit:
Elastic Beanstalk vous permet «d'ouvrir le capot» et de conserver un contrôle total ... même de transmettre des variables d'environnement via la console Elastic Beanstalk.
http://aws.amazon.com/elasticbeanstalk/
Comment passer d'autres variables d'environnement en plus de celle de la configuration Elastic Beanstalk?
Réponses:
En guise d'avertissement à tous ceux qui utilisent le
.ebextensions/*.config
chemin: de nos jours, vous pouvez ajouter, modifier et supprimer des variables d'environnement dans l'interface Web d'Elastic Beanstalk.Les variables se trouvent sous Configuration → Configuration logicielle:
Créer les vars
.ebextensions
comme dans la réponse d'Onema fonctionne toujours.Cela peut même être préférable, par exemple si vous déployez plus tard dans un autre environnement et avez peur d'oublier de les définir manuellement, ou si vous êtes d'accord pour valider les valeurs dans le contrôle de code source. J'utilise un mélange des deux.
la source
ENV["CUSTOM_ENV"]
reviendrait"something-something"
.Seules 5 valeurs sont limitées ou vous souhaiterez peut-être avoir un nom de variable d'environnement personnalisé. Vous pouvez le faire en utilisant les fichiers de configuration. Créez un répertoire à la racine de votre projet appelé
.ebextensions /
Ensuite, créez un fichier appelé environment.config (ce fichier peut être appelé n'importe quoi mais il doit avoir l'extension .config) et ajoutez les valeurs suivantes
Après avoir déployé votre application, vous verrez cette nouvelle valeur sous Détails de l'environnement -> Modifier la configuration -> Conteneur
pour plus d'informations, consultez la documentation ici: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options
Mettre à jour
Pour éviter de valider les valeurs de votre référentiel telles que les clés d'API, les secrets, etc., vous pouvez définir une valeur d'espace réservé.
Plus tard, vous pouvez accéder au panneau d'administration AWS (Détails de l'environnement -> Modifier la configuration -> Conteneur) et y mettre à jour les valeurs. D'après mon expérience, ces valeurs ne changent pas après les déploiements ultérieurs.
Mise à jour 2 Comme @Benjamin l'a déclaré dans son commentaire, depuis le déploiement du nouveau look and feel le 18 juillet 2013, il est possible de définir n'importe quel nombre de variables d'environnement directement depuis la console:
Configuration > Software Configuration > Environment Properties
la source
command: "nrsysmond-config --set license_key={$NR_INSTALL_KEY}"
Dans l'AMI Tomcat8 Java8 2016, ElasticBeanstalk ne parvient pas à définir les variables d'environnement à partir de la configuration Web. Ils définissent vraiment les propriétés jvm -D à la place.
- "Les propriétés suivantes sont transmises à l'application en tant que variables d'environnement. En savoir plus."
Cette déclaration est incorrecte pour l'ami Java Tomcat. Amazon ne les définit pas comme variables d'environnement. Ils sont définis comme des propriétés système transmises sur la ligne de commande à Tomcat en tant que propriété -D pour jvm. La méthode en Java pour obtenir des variables d'environnement n'est pas la même pour obtenir une propriété. System.getenv contre System.getProperty
J'ai ssh'd dans la boîte et vérifié que la variable d'environnement n'a jamais été définie. Cependant, dans les journaux tomcat, je peux voir que la propriété -D est définie.
J'ai changé mon code pour vérifier les deux emplacements maintenant comme solution de contournement.
la source
Amazon Linux 2017.03 v2.5.4 with Java8
ne définit pas non plus env.In general, however, environment properties are passed only to the application and can't be viewed by connecting an instance in your environment and running env.
Vos variables ne sont pas définies dans un script de connexion comme.bashrc
. Cependant, vous avez raison Les variables Tomcat sont transmises en tant que propriétés. (Voir le haut de la page liée.)AWS interprétera les chaînes de modèle CloudFormation dans vos variables d'environnement. Vous pouvez l'utiliser pour accéder aux informations sur votre environnement EB dans votre application:
Dans l'interface Web AWS, les éléments suivants seront évalués comme le nom de votre environnement (notez les coches inverses):
Ou, vous pouvez utiliser
.ebextensions/*.config
et encapsuler le modèle CloudFormation dans des graduations inverses (`):la source
Vous pouvez également utiliser l'interface de ligne de commande Elastic Beanstalk pour définir des variables d'environnement.
Pour définir une variable d'environnement:
eb setenv FOO=bar
Pour afficher les variables d'environnement:
eb printenv
la source
Détails de l'environnement -> Modifier la configuration -> Conteneur
la source
Cela semble être le seul moyen de définir des ENV avec des valeurs dynamiques dans beanstalk. J'ai trouvé une solution de contournement qui fonctionne pour ma configuration multi-docker:
1) Ajoutez ceci à votre Dockerfile avant de créer + télécharger dans votre référentiel ECS:
2) Dans votre fichier Dockerrun.aws.json, créez un volume:
3) Montez le volume sur votre conteneur
4) Dans votre fichier .ebextensions / options.config, ajoutez un bloc container_commands comme ceci:
5) eb deploy et votre ENVS devrait être disponible dans votre conteneur docker
Vous pouvez ajouter plus d'ENV en ajoutant plus de container_commands comme:
J'espère que cela t'aides!
la source
X: '
{"Ref": "MyCache"}, la'
valeur n'est pas analysée (la valeur n'est que '{"Ref": "MyCache"}
') par défaut lorsque le conteneur tente d'y accéder. Avec cela, vous pouvez avoir des variables dynamiques comme ça.