Estoy implementando el proyecto Symfony a través de eb deployment a la instancia ec2 (aws linux 2). Los scripts de migración posteriores a la implementación funcionan bien, pero luego trato de ejecutar el comando Symfony con el usuario ec2 y aparece un error sobre las credenciales de la base de datos incorrectas. Es porque presioné el archivo dump .env con valores vacíos. Todas mis variables de entorno se almacenan en eb -> configuración -> Propiedades de entorno. ¿Cómo hacer que estas variables sean visibles para otros usuarios para ejecutar correctamente los comandos?
Puedo ver estas variables como json con:
/opt/elasticbeanstalk/bin/get-config environmentLas variables de entorno de EB en Amazon Linux 1 se almacenan en:
/opt/elasticbeanstalk/support/envvarsPor lo tanto, para cargarlos cuando inicie sesión en la instancia, puede hacer lo siguiente:
source /opt/elasticbeanstalk/support/envvarsPara verificar si se cargaron, simplemente puede ejecutar:
envPD
Para AmazonLinux 2:
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)Algo a tener en cuenta es que la respuesta proporcionada por @Marcin fallará si se implementa en un script de implementación dentro de las carpetas .ebextensions o .platform en implementaciones de instancias nuevas.
Para recuperar correctamente las variables de entorno y enviarlas al shell, AWS tiene un artículo que describe cómo se hace esto:
https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-env-variables-shell/
Para referencia futura, aquí están las instrucciones copiadas de los documentos de AWS:
Resolución
commands: setvars: command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local packages: yum: jq: []Nota: El archivo de configuración del paso 1 se llama setvars.config.
Guarde el archivo .ebextension y luego impleméntelo en su entorno de Elastic Beanstalk.
Para probar si las variables se están exportando, conéctese a su instancia usando SSH y luego ejecute el siguiente comando. Antes de realizar la prueba, cierre las sesiones existentes y luego vuelva a conectarse mediante SSH. env | grep VARIABLE_NAME Importante: para el paso 3, establezca VARIABLE_NAME en una variable definida en su entorno.
El resultado muestra si sus variables de entorno están configuradas correctamente. En el siguiente resultado de ejemplo, se define una variable denominada RDS_PORT en el entorno de Elastic Beanstalk.
$ env|grep RDS_PORT RDS_PORT=3306Nota: Debido a que está usando los comandos en la extensión .eb, puede actualizar el archivo sh.local solo con una nueva implementación. Si agrega o cambia una variable en el entorno, debe crear una nueva implementación antes de exportar la variable al sistema operativo.