tutorial pricing elastic ec2 cloudformation aws amazon-web-services elastic-beanstalk

amazon-web-services - pricing - elastic beanstalk docker



Hacer referencia a las variables env de los archivos de configuraciĆ³n Elastic Beanstalk.ebextensions (5)

Este blog describe en detalle varias opciones sobre cómo puede lograr esto.

https://www.onica.com/blog/how-to-call-and-export-variables-in-elastic-beanstalk/

¿Es posible hacer referencia a las propiedades del entorno del contenedor PARAM1 / PARAM2, etc. a partir de los archivos de configuración de .ebextensions? ¿Si es así, cómo? Intenté $ PARAM1 pero parecía ser un valor vacío.

Quiero configurar el nombre de host en el inicio para que contenga DEV, QA o PROD, que paso a mi contenedor a través de la variable de entorno PARAM1.

commands: 01-set-correct-hostname: command: hostname myappname{$PARAM1}.com


Esto es lo que funcionó para mí. Probé el enfoque aceptado y no produjo el resultado deseado (las llaves se incluyeron en la salida). Los comandos de solución de problemas que se ejecutan desde un archivo .config cuando se cargan en Elastic Beanstalk también son un desafío (o simplemente no sé exactamente dónde buscar).

Entorno AWS:

  • Tipo - Beanstalk elástico
  • Plataforma: 64 bits en Amazon Linux 2015.09 v2.0.4 con PHP 5.6

Propiedades del entorno Elastic Beanstalk (Configuración -> Configuración del software -> Propiedades del entorno):

  • Nombre de propiedad - HELLO_VARIABLE
  • Valor de propiedad - prueba

Ejemplo de archivo .config incluido en la carpeta .ebextensions en el artefacto de implementación:

container_commands: 0_test-variable: cwd: /tmp command: "touch ${HELLO_VARIABLE}_0_.txt" 1_test-variable: cwd: /tmp command: "touch {$HELLO_VARIABLE}_1_.txt" 2_test-variable: cwd: /tmp command: "touch $HELLO_VARIABLE_2_.txt"

Una vez desplegado el artefacto con Elastic Beanstalk, el directorio / tmp dentro de una instancia de EC2 contendrá los siguientes archivos (tenga en cuenta las llaves y la posición de $):

  • touch $ {HELLO_VARIABLE} _0_.txt crea /tmp/test_0_.txt
  • touch {$ HELLO_VARIABLE} _1_.txt crea /tmp/{test}_1_.txt
  • toque $ HELLO_VARIABLE_2_.txt crea /tmp/.txt

La respuesta aceptada está bastante desactualizada.

Ahora puede usar el archivo /opt/elasticbeanstalk/support/envvars que ya es un script de shell listo para ser originado:

commands: 01_update_composer: command: | . /opt/elasticbeanstalk/support/envvars /usr/bin/composer.phar self-update container_commands: 01_run_composer: command: | composer.phar install --no-scripts --no-dev # already has user-specified env variables

Actualizar:

Después de una investigación más profunda resulta que los commands: container_commands: incluyen las variables de tu entorno, pero los commands: no.


Para que las variables de entorno estén disponibles en la etapa de comandos, las analizo en un archivo fuente de bash.

000001.envvars.config

... commands: 000001_envvars_to_bash_source_file: command: | # source our elastic beanstalk environment variables /opt/elasticbeanstalk/bin/get-config --output YAML environment|perl -ne "/^/w/ or next; s/: /=/; print qq|/$_|" > /var/tmp/envvars chmod 400 /var/tmp/envvars ...

Luego uso:

source /var/tmp/envvars

en los comandos posteriores.