elastic aws amazon-web-services elastic-beanstalk beanstalk

amazon-web-services - aws elastic beanstalk environment variables



Acceso a variables de entorno en AWS Beanstalk ebextensions (1)

Estoy intentando acceder a una variable de entorno que he definido en la configuración de AWS Beanstalk. Necesito acceder a él dentro de un archivo de configuración en .ebextensions o en un archivo que se copia en su lugar en un archivo de configuración. He probado lo siguiente:

container_commands: update_nginx_config: command: "cp .ebextensions/files/nginx/nginx.conf /etc/nginx/nginx.conf"

Y en mi archivo nginx.conf , he intentado acceder a $MYVAR , ${MYVAR} y {$MYVAR} , algunos de los cuales fueron sugeridos here y here (este último está directamente dentro de un archivo de configuración).

files: "/etc/nginx/nginx.conf" : mode: "000644" owner: root group: root content: | $MYVAR ${MYVAR} {$MYVAR}

Esto tampoco funciona. En todos los casos, los nombres de las variables solo se $MYVAR como $MYVAR , por lo que Beanstalk no reconoce mis variables. Encontré lo siguiente en la documentación de AWS sobre container_commands :

También tienen acceso a variables de entorno, como las credenciales de seguridad de AWS.

Esto es genial, pero no dice cómo .

¿Cómo puedo acceder a una variable de entorno con ebextensions, ya sea dentro de un archivo de configuración o en un archivo separado que se copia en su lugar?

¡Gracias de antemano!


Me comuniqué con el servicio técnico de Amazon para obtener una respuesta a esta pregunta, y aquí está su respuesta:

Lamentablemente, las variables no están disponibles en ebextensions directamente. La mejor opción para hacerlo es creando un script que luego se ejecuta desde comandos de contenedor como este:

files: "/home/ec2-user/setup.sh": mode: "000755" owner: root group: root content: | #!/bin/bash # Commands that will be run on containter_commmands # Here the container variables will be visible as environment variables. container_commands: set_up: command: /home/ec2-user/setup.sh

Por lo tanto, si crea una secuencia de comandos de shell e invoca a través de un comando de contenedor, tendrá acceso a las variables de entorno dentro de su script de shell de la siguiente manera: $ENVIRONMENT_VARIABLE . Lo he probado y funciona.

Si tiene problemas para ejecutar una secuencia de comandos como raíz y no poder leer las variables de entorno configuradas, intente agregar lo siguiente a la parte superior de la secuencia de comandos.

. /opt/elasticbeanstalk/support/envvars

Dependiendo de su caso de uso, es posible que tenga que cambiar su enfoque un poco (al menos yo lo hice), pero es una solución de trabajo. ¡Espero que esto ayude a alguien!