tutorial sirve que para elasticbeanstalk elastic ec2 aws amazon-web-services app-config elastic-beanstalk

amazon web services - sirve - ¿Cómo se transfiere la variable de entorno personalizada en Amazon Elastic Beanstalk(AWS EBS)?



elasticbeanstalk que es (7)

AWS interpretará cadenas de plantillas de CloudFormation en las variables de su entorno. Puede usar esto para acceder a información sobre su entorno EB dentro de su aplicación:

En la interfaz web de AWS, lo siguiente se evaluará como el nombre de su entorno (tenga en cuenta las marcas de retroceso):

`{ "Ref" : "AWSEBEnvironmentName" }`

O bien, puede usar una .ebextensions/*.config Y ajustar la plantilla de CloudFormation en ticks posteriores (`):

{ "option_settings": [ { "namespace": "aws:elasticbeanstalk:application:environment", "option_name": "ENVIRONMENT_NAME", "value": "`{ /"Ref/" : /"AWSEBEnvironmentName/" }`" } ] }

El anuncio de Amazon Elastic Beanstalk dice:

Elastic Beanstalk le permite "abrir el cofre" y mantener el control total ... incluso pasar variables de entorno a través de la consola 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?


Alternativamente, podría usar Elastic Beanstalk CLI para establecer variables de entorno.

Para establecer una variable de entorno: eb setenv FOO=bar

Para ver las variables de entorno: eb printenv


Detalles del entorno -> Editar configuración -> Contenedor


En el 2016 Java8 Tomcat8 AMI, ElasticBeanstalk no puede establecer variables de entorno desde la configuración web. En realidad, están estableciendo las propiedades jvm -D.

- "Las siguientes propiedades se pasan a la aplicación como variables de entorno. Obtenga más información".

Esta declaración es incorrecta para Java Tomcat ami. Amazon no los establece como variables de entorno. Se establecen como propiedades del sistema pasadas en la línea de comando a Tomcat como una propiedad -D para jvm. El método en Java para obtener variables de entorno no es lo mismo para obtener una propiedad. System.getenv versus System.getProperty

Entré en la caja y verifiqué que la variable de entorno nunca se configuró. Sin embargo, en los registros de Tomcat puedo ver que la propiedad -D está configurada.

Cambié mi código para buscar ambas ubicaciones ahora como una solución alternativa.


Esta parece ser la única forma de establecer 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 archivo Docker antes de construir + cargar en su repositorio ECS:

CMD eval `cat /tmp/envs/env_file$`; <base image CMD goes here>;

2) En su archivo Dockerrun.aws.json, cree un volumen:

{ "name": "env-file", "host": { "sourcePath": "/var/app/current/envs" } }

3) Monte el volumen en su contenedor

{ "sourceVolume": "env-file", "containerPath": "/tmp/envs", "readOnly": true }

4) En su archivo .ebextensions / options.config, agregue un bloque container_commands así:

container_commands: 01_create_mount: command: "mkdir -p envs/" 02_create_env_file: command: { "Fn::Join" : [ "", [ ''echo "'', "export ENVIRONMENT_NAME=" , { "Ref", "RESOURCE" }, '';" > envs/env_file;'' ] ] }

5) eb deploy y tu ENVS debería estar disponible en tu contenedor de docker

Puede agregar más ENV agregando más container_commands como:

02_create_env_file_2: command: { "Fn::Join" : [ "", [ ''echo "'', "export ENVIRONMENT_NAME_2=" , { "Ref", "RESOURCE2" }, '';" >> envs/env_file;'' /] /] }

¡Espero que esto ayude!


Solo 5 valores son limitantes, o es posible que desee tener un nombre de variable de entorno personalizado. Puedes hacer esto usando los archivos de configuración. Crea un directorio en la raíz de tu proyecto llamado

.ebextensions /

A continuación, 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

option_settings: - option_name: CUSTOM_ENV value: staging

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.

option_settings: - option_name: SOME_API_KEY value: placeholder-value-change-me

Luego 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 las implementaciones posteriores.

Actualización 2 Como @Benjamin declaró en su comentario, ya 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


Como una .ebextensions/*.config para cualquiera que use la forma .ebextensions/*.config : 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 los vars en .ebextensions como en la respuesta de Onema todavía funciona.

Incluso puede ser preferible, por ejemplo, si se implementará en otro entorno más tarde y tiene miedo de olvidarse de configurarlos manualmente, o si está bien con la asignación de los valores al control de fuente. Yo uso una mezcla de ambos.