Quiero utilizar variables de entorno de un shell de instancias de AWS Elastic Beanstalk.
Descripción breve
En Elastic Beanstalk, las variables de entorno no están expuestas al sistema operativo (SO). Cuando las variables de entorno se establecen como Elastic Beanstalk, puede usar una utilidad con variables de entorno del sistema operativo. Para usar una utilidad con variables de entorno de Elastic Beanstalk, debe usar un .ebextension que exporte las variables de entorno a variables del SO.
Para usar variables de entorno desde un shell de instancia de Elastic Beanstalk, siga estos pasos:
- Utilice la utilidad get-config para leer las variables de entorno de Elastic Beanstalk.
- Para transformar el resultado de get-config de JSON a variables de shell, utilice la utilidad jq del sitio web de jq.
- Guarde las variables en el archivo /etc/profile.d/local.sh. Bash lee este archivo para exportar variables al SO.
Resolución
- Cree un archivo**.ebextension** en el paquete fuente de la aplicación y, a continuación, incluya la siguiente información:
commands:
setvars:
command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/local.sh
packages:
yum:
jq: []
Nota: En el ejemplo anterior, el archivo de configuración se denomina setvars.config.
- Guarde el archivo .ebextension y, a continuación, despliéguelo en el entorno de Elastic Beanstalk.
- Para comprobar si el archivo .ebextension exporta las variables, utilice SSH para conectarse a su instancia. A continuación, ejecute el siguiente comando:
env | grep VARIABLE_NAME
Nota: Establezca VARIABLE_NAME en una variable que esté en su entorno. Antes de hacer la prueba, cierre todas las sesiones existentes. Luego, utilice SSH para volver a conectarse.
Si las variables de entorno están configuradas correctamente, el resultado será similar al del siguiente ejemplo. La variable RDS_PORT está definida en el entorno de Elastic Beanstalk.
$ env|grep RDS_PORTRDS_PORT=3306
Nota: Como utiliza comandos en .ebextension, solo puede actualizar el archivo local.sh con un despliegue nuevo. Si agrega o cambia una variable en el entorno, cree un nuevo despliegue antes de que la variable se exporte al SO.