La propaganda de Amazon Elastic Beanstalk dice:
Elastic Beanstalk le permite "abrir el capó" y mantener el control total ... incluso pasar variables de entorno a través de la consola de Elastic Beanstalk.
http://aws.amazon.com/elasticbeanstalk/
¿Cómo pasar otras variables de entorno además de la de la configuración de Elastic Beanstalk?
Respuestas:
Como aviso para cualquiera que use el
.ebextensions/*.config
camino: hoy en día puede agregar, editar y eliminar variables de entorno en la interfaz web de Elastic Beanstalk.Las variables están en Configuración → Configuración de software:
Crear las vars
.ebextensions
como en la respuesta de Onema todavía funciona.Incluso puede ser preferible, por ejemplo, si va a implementar en otro entorno más tarde y tiene miedo de olvidarse de configurarlos manualmente, o si está de acuerdo con enviar los valores al control de código fuente. Utilizo una mezcla de ambos.
fuente
ENV["CUSTOM_ENV"]
volvería"something-something"
.Solo 5 valores son limitantes, o es posible que desee tener un nombre de variable de entorno personalizado. Puede hacer esto utilizando los archivos de configuración. Cree un directorio en la raíz de su proyecto llamado
.ebextensions /
Luego cree un archivo llamado environment.config (este archivo se puede llamar de cualquier manera, pero debe tener la extensión .config) y agregue los siguientes valores
Después de implementar su aplicación, verá este nuevo valor en Detalles del entorno -> Editar configuración -> Contenedor
para obtener más información, consulte la documentación aquí: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options
Actualizar
Para evitar comprometerse con los valores de su repositorio, como claves de API, secretos, etc., puede poner un valor de marcador de posición.
Más tarde, puede ir al panel de administración de AWS (Detalles del entorno -> Editar configuración -> Contenedor) y actualizar los valores allí. En mi experiencia, estos valores no cambian después de implementaciones posteriores.
Actualización 2 Como @Benjamin declaró en su comentario, dado que la nueva apariencia se implementó el 18 de julio de 2013, es posible definir cualquier cantidad de variables de entorno directamente desde la consola:
Configuration > Software Configuration > Environment Properties
fuente
command: "nrsysmond-config --set license_key={$NR_INSTALL_KEY}"
En la AMI de 2016 Java8 Tomcat8, ElasticBeanstalk no puede establecer variables de entorno desde la configuración web. En su lugar, están configurando propiedades jvm -D.
- "Las siguientes propiedades se pasan a la aplicación como variables de entorno. Más información".
Esta declaración es incorrecta para Java Tomcat ami. Amazon no establece estos como variables de entorno. Se establecen como propiedades del sistema pasadas en la línea de comandos a Tomcat como una propiedad -D para jvm. El método en Java para obtener variables de entorno no es el mismo para obtener una propiedad. System.getenv frente a System.getProperty
Entré en el cuadro y verifiqué que la variable de entorno nunca se estableció. Sin embargo, en los registros de tomcat puedo ver que la propiedad -D está configurada.
He cambiado mi código para comprobar ambas ubicaciones ahora como solución.
fuente
Amazon Linux 2017.03 v2.5.4 with Java8
tampoco establece 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.
Sus variables no están configuradas en un script de inicio de sesión como.bashrc
. Sin embargo, tiene razón, las variables de Tomcat se pasan como propiedades. (Ver la parte superior de la página vinculada.)AWS interpretará las cadenas de plantillas de CloudFormation en sus variables de entorno. Puede usar esto para acceder a información sobre su entorno EB dentro de su aplicación:
En la interfaz web de AWS, se evaluará lo siguiente como el nombre de su entorno (tenga en cuenta las marcas inversas):
O bien, puede usar
.ebextensions/*.config
y envolver la plantilla de CloudFormation en tics posteriores (`):fuente
Alternativamente, puede usar la CLI de Elastic Beanstalk para establecer variables de entorno.
Para establecer una variable de entorno:
eb setenv FOO=bar
Para ver las variables de entorno:
eb printenv
fuente
Detalles del entorno -> Editar configuración -> Contenedor
fuente
Esta parece ser la única forma de configurar ENV con valores dinámicos en beanstalk. Se me ocurrió una solución alternativa que funciona para mi configuración de multi-docker:
1) Agregue esto a su Dockerfile antes de compilar + subir a su repositorio ECS:
2) En su archivo Dockerrun.aws.json, cree un volumen:
3) Monte el volumen en su contenedor
4) En su archivo .ebextensions / options.config agregue un bloque container_commands así:
5) eb deploy y su ENVS deberían estar disponibles en su contenedor docker
Puede agregar más ENV agregando más container_commands como:
¡Espero que esto ayude!
fuente
X: '
{"Ref": "MyCache"}, el'
valor no se analiza (el valor es solo '{"Ref": "MyCache"}
') de forma predeterminada cuando el contenedor intenta acceder a él. Con esto puedes tener variables dinámicas como esa.