Documente Academic
Documente Profesional
Documente Cultură
Developer Guide
AWS Elastic Beanstalk Developer Guide
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,
in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not
be affiliated with, connected to, or sponsored by Amazon.
AWS Elastic Beanstalk Developer Guide
Table of Contents
¿Qué es AWS Elastic Beanstalk? ......................................................................................................... 1
Precios ...................................................................................................................................... 1
Pasos siguientes ........................................................................................................................ 2
Introducción ....................................................................................................................................... 3
Paso 1: Inscribirse en el servicio .................................................................................................. 3
Paso 2: Cree una aplicación ........................................................................................................ 3
Paso 3: Consultar información sobre el entorno .............................................................................. 6
Paso 4: Implementar una nueva versión de la aplicación .................................................................. 8
Paso 5: Cambie la configuración .................................................................................................. 9
Paso 6: Eliminación .................................................................................................................. 11
Pasos siguientes ....................................................................................................................... 12
CLI de EB ....................................................................................................................... 12
AWS SDK for Java ........................................................................................................... 12
AWS Toolkit for Eclipse ..................................................................................................... 12
AWS SDK para .NET ........................................................................................................ 13
AWS Toolkit for Visual Studio ............................................................................................. 13
AWS SDK for JavaScript in Node.js ..................................................................................... 13
AWS SDK para PHP ......................................................................................................... 13
AWS SDK for Python (Boto) ............................................................................................... 13
AWS SDK parar Ruby ....................................................................................................... 14
Conceptos ....................................................................................................................................... 15
Aplicación ................................................................................................................................ 15
Application Version .................................................................................................................... 15
Entorno ................................................................................................................................... 15
Capa del entorno ...................................................................................................................... 15
Configuración del entorno .......................................................................................................... 15
Configuración guardada ............................................................................................................. 16
Plataforma ............................................................................................................................... 16
Entornos del servidor web .......................................................................................................... 16
Entornos de trabajo ................................................................................................................... 17
Consideraciones sobre el diseño ................................................................................................. 18
Escalabilidad .................................................................................................................... 18
Seguridad ........................................................................................................................ 19
Almacenamiento persistente ............................................................................................... 19
Tolerancia a errores .......................................................................................................... 20
Entrega de contenido ........................................................................................................ 20
Actualizaciones de software y parches ................................................................................. 20
Conectividad .................................................................................................................... 21
Permisos ......................................................................................................................................... 22
Rol de servicio ......................................................................................................................... 22
Perfil de instancia ..................................................................................................................... 23
Política de usuario de ................................................................................................................ 25
Plataformas de AWS Elastic Beanstalk ................................................................................................ 28
Glosario de plataformas ............................................................................................................. 28
Modelo de responsabilidad compartida ......................................................................................... 29
Política de compatibilidad con plataformas .................................................................................... 30
Programación de versiones de la plataforma retiradas ............................................................ 31
Plataformas compatibles ............................................................................................................ 32
Versiones de la plataforma compatibles ............................................................................... 33
Plataformas personalizadas ........................................................................................................ 33
Creación de una plataforma personalizada ........................................................................... 34
Uso de las plataformas personalizadas de ejemplo ................................................................ 34
Contenido del archivo de definición de la plataforma .............................................................. 39
Enlaces de la plataforma ................................................................................................... 39
iii
AWS Elastic Beanstalk Developer Guide
iv
AWS Elastic Beanstalk Developer Guide
v
AWS Elastic Beanstalk Developer Guide
vi
AWS Elastic Beanstalk Developer Guide
vii
AWS Elastic Beanstalk Developer Guide
viii
AWS Elastic Beanstalk Developer Guide
ix
AWS Elastic Beanstalk Developer Guide
x
AWS Elastic Beanstalk Developer Guide
xi
AWS Elastic Beanstalk Developer Guide
xii
AWS Elastic Beanstalk Developer Guide
xiii
AWS Elastic Beanstalk Developer Guide
xiv
AWS Elastic Beanstalk Developer Guide
Precios
Con Elastic Beanstalk, puede implementar y administrar rápidamente aplicaciones en la nube de AWS
sin tener que aprender a utilizar la infraestructura en la que se ejecutan. Elastic Beanstalk reduce la
complejidad de administración sin restringir la liberad de elección ni el control. Solo tiene que cargar la
aplicación y Elastic Beanstalk gestionará de manera automática los detalles de aprovisionamiento de
capacidad, equilibrio de carga, escalado y monitorización del estado de la aplicación.
Elastic Beanstalk es compatible con aplicaciones desarrolladas en Go, Java, .NET, Node.js, PHP, Python
y Ruby. Cuando implementa su aplicación, Elastic Beanstalk crea la versión de la plataforma seleccionada
compatible y aprovisiona uno o varios recursos de AWS, como instancias de Amazon EC2, para ejecutar la
aplicación.
Puede interactuar con Elastic Beanstalk utilizando la Consola de administración de AWS, la AWS
Command Line Interface (AWS CLI) o eb, una CLI de nivel superior diseñada específicamente para Elastic
Beanstalk.
Para obtener más información acerca de cómo implementar una aplicación web de ejemplo con Elastic
Beanstalk, consulte Introducción a AWS: Implementación de una aplicación web.
También puede realizar la mayoría de las tareas de implementación, como cambiar el tamaño de la flota
de instancias de Amazon EC2 o monitorear la aplicación, directamente desde la interfaz web de Elastic
Beanstalk (consola).
Para utilizar Elastic Beanstalk, debe crear una aplicación, cargar una versión de la aplicación como un
paquete de código fuente (por ejemplo, un archivo Java.war) en Elastic Beanstalk y proporcionar cierta
información sobre la aplicación. Elastic Beanstalk lanza automáticamente un entorno y crea y configura los
recursos de AWS necesarios para ejecutar el código. Una vez que se lanza el entorno, puede administrarlo
e implementar nuevas versiones de la aplicación. En el siguiente diagrama, se ilustra el flujo de trabajo de
Elastic Beanstalk.
Después de crear e implementar la aplicación, puede consultar información sobre ella (por ejemplo,
métricas, eventos y el estado del entorno) a través de la Consola de administración de AWS, las API o las
interfaces de línea de comando, como la AWS CLI unificada.
Precios
No se aplican cargos adicionales por Elastic Beanstalk. Solo tiene que pagar por los recursos subyacentes
de AWS que consume la aplicación. Para obtener información sobre los precios, consulte la página de
destalles del servicio Elastic Beanstalk.
1
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Esta guía contiene información conceptual sobre el servicio web de Elastic Beanstalk, así como
información acerca de cómo utilizar el servicio para implementar aplicaciones web. En las diferentes
secciones, se explica cómo se utiliza la Consola de administración de AWS, las herramientas de la interfaz
de línea de comandos (CLI) y la API para implementar y administrar los entornos de Elastic Beanstalk. En
esta guía, también se explica cómo se integra Elastic Beanstalk con otros servicios proporcionados por
Amazon Web Services.
Le recomendamos que lea primero Introducción al uso de Elastic Beanstalk (p. 3) para obtener
información sobre cómo empezar a utilizar Elastic Beanstalk. En esta Introducción, aprenderá paso a paso
a crear, consultar y actualizar la aplicación de Elastic Beanstalk, así como a editar y terminar el entorno de
Elastic Beanstalk. En la Introducción se explican también diferentes mecanismos para obtener acceso a
Elastic Beanstalk.
Para obtener más información sobre la aplicación de Elastic Beanstalk y sus componentes, consulte las
páginas siguientes.
2
AWS Elastic Beanstalk Developer Guide
Paso 1: Inscribirse en el servicio
Secciones
• Paso 1: Inscribirse en el servicio (p. 3)
• Paso 2: Cree una aplicación (p. 3)
• Paso 3: Consultar información sobre el entorno (p. 6)
• Paso 4: Implementar una nueva versión de la aplicación (p. 8)
• Paso 5: Cambie la configuración (p. 9)
• Paso 6: Eliminación (p. 11)
• Pasos siguientes (p. 12)
Elastic Beanstalk es gratuito, pero los recursos de AWS que proporciona se ejecutan en un entorno real
(y no en un entorno de pruebas). Se le facturan las tarifas de uso estándar por estos recursos hasta que
los termine en la última tarea de este tutorial. Los costos totales son mínimos (por lo general, menos de un
dólar). Para obtener información sobre cómo puede minimizar los cargos, consulte Capa gratuita de AWS.
3
AWS Elastic Beanstalk Developer Guide
Paso 2: Cree una aplicación
Para ejecutar una aplicación de muestra en recursos de AWS, Elastic Beanstalk realiza las siguientes
acciones. Tarda aproximadamente cinco minutos en completarse:
4
AWS Elastic Beanstalk Developer Guide
Paso 2: Cree una aplicación
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Durante el proceso de creación del entorno, la consola hace un seguimiento del progreso y muestra los
eventos, como se indica.
5
AWS Elastic Beanstalk Developer Guide
Paso 3: Consultar información sobre el entorno
Cuando termine el lanzamiento de todos los recursos y las instancias EC2 que ejecutan la aplicación
superen las comprobaciones de estado, los cambios de estado del entorno tendrán el valor Ok y el sitio
web estará listo para usarse.
Mientras Elastic Beanstalk crea los recursos de AWS y lanza la aplicación, el entorno se encuentra en
el estado Pending. En el panel del entorno, aparecerán mensajes de estado sobre el lanzamiento de
eventos.
6
AWS Elastic Beanstalk Developer Guide
Paso 3: Consultar información sobre el entorno
El panel muestra un subconjunto de información útil sobre su entorno. Esto incluye su dirección URL, su
estado actual, el nombre de la versión de la aplicación implementada actualmente, los cinco eventos más
recientes y la versión de la plataforma en la que se ejecuta la aplicación.
7
AWS Elastic Beanstalk Developer Guide
Paso 4: Implementar una nueva versión de la aplicación
En la esquina superior derecha del panel, junto al menú Acciones, encontrará la dirección URL del entorno.
Se trata de la dirección URL de la aplicación web que el entorno ejecuta. Elija esta dirección URL para ir a
la página Congratulations (Enhorabuena) de la aplicación.
En la parte izquierda de la consola, se encuentra el panel de navegación. Este panel contiene enlaces
a otras páginas, que incluyen información más detallada sobre el entorno y proporcionan acceso a otras
características. Explore las páginas siguientes para ver el estado actual del entorno:
• En la página Configuration (Configuración), se muestran los recursos aprovisionados para este entorno,
como las instancias Amazon EC2 que alojan la aplicación. Esta página también le permite configurar
algunos de los recursos aprovisionados.
• En la página Health (Estado), se muestra el estado y otros detalles de las instancias EC2 que ejecutan la
aplicación.
• En la página Monitorización, se muestran las estadísticas del entorno, como la latencia media o el uso
de CPU. También puede usar esta página para crear alarmas para las métricas que está monitorizando.
• En la página Eventos, se muestran mensajes informativos o de error emitidos por los servicios que se
utilizan en este entorno.
• La página Etiquetas muestra etiquetas: pares clave-valor que se aplican a los recursos en el entorno.
Puede utilizar esta página para administrar las etiquetas de su entorno.
La versión de la aplicación que está ejecutando ahora tiene la etiqueta Sample Application (Aplicación de
ejemplo).
8
AWS Elastic Beanstalk Developer Guide
Paso 5: Cambie la configuración
4. En la sección Overview (Información general), seleccione Upload and Deploy (Cargar e implementar).
5. Seleccione Choose File (Elija un archivo) y cargue el paquete de código de muestra que descargó.
Elastic Beanstalk implementa ahora el archivo en las instancias Amazon EC2. Puede ver el estado de la
implementación en el panel del entorno. El estado de Environment Health (Estado del entorno) aparece
atenuado mientras se actualiza la versión de la aplicación. Una vez completada la implementación, Elastic
Beanstalk realiza una comprobación de estado. El estado cambia a verde cuando la aplicación responde a
la comprobación de estado. En el panel del entorno, en Running Version (Versión en ejecución) aparecerá
la nueva versión en ejecución como Sample Application Second Version (Versión segunda de aplicación
de muestra) o la versión que se especificó en Version label [Etiqueta de versión]).
Hay cambios de configuración que puede realizar fácilmente y que se aplican con rapidez. Algunos
cambios requieren que Elastic Beanstalk elimine recursos de AWS y vuelva a crearlos, lo que puede tardar
unos minutos. Cuando cambie las opciones de configuración, Elastic Beanstalk le avisará de que puede
producirse un período de inactividad en la aplicación.
En esta tarea, debe editar la configuración de capacidad del entorno. Puede configurar un entorno de
escalado con balance de carga automáticamente que tiene entre dos y cuatro instancias en su grupo de
9
AWS Elastic Beanstalk Developer Guide
Paso 5: Cambie la configuración
Auto Scaling y, a continuación, comprobar que el cambio se ha producido. Se han creado dos instancias
Amazon EC2 y están asociadas al balanceador de carga del entorno. Estas instancias sustituyen a la
instancia única que Elastic Beanstalk ha creado inicialmente.
5. En la sección Auto Scaling Group (Grupo de Auto Scaling), cambie Environment type (Tipo de
entorno) a Load balanced (Con balanceo de carga).
6. En la fila Instances (Instancias), cambie Max (Máx.) a 4 y, a continuación, cambie Min (Mín.) a 2.
7. En la parte inferior de la página Modify capacity (Modificar capacidad), elija Save (Guardar.
8. En la parte inferior de la página Configuration overview (Información general de configuración), elija
Apply (Aplicar).
9. Aparece una advertencia. Le indica que la migración sustituye a todas las instancias actuales. Elija
Confirm.
El entorno puede tardar unos minutos en actualizarse. Cuando esté listo, continúe en la siguiente tarea
para comprobar los cambios.
10
AWS Elastic Beanstalk Developer Guide
Paso 6: Eliminación
La información indica que hay dos instancias asociadas con este balanceador de carga, lo que
coincide con el aumento del número de instancias EC2.
Paso 6: Eliminación
¡Enhorabuena! Acaba de implementar correctamente una aplicación de ejemplo en la nube, ha cargado
una nueva versión y ha modificado la configuración para agregar una segunda instancia de Auto Scaling.
Para asegurarse de que no se le cobra por servicios que no necesita, elimine de Elastic Beanstalk y de los
servicios de AWS las aplicaciones y entornos que no quiera utilizar.
a. Para volver al panel de entorno, haga clic en getting-started-app y y, a continuación, haga clic en
GettingStartedApp-env.
b. Elija Actions y, a continuación, Terminate Environment.
c. Confirme que desea terminar GettingStartedApp-env y seleccione Terminate (Terminar).
3. Elimine la aplicación de Elastic Beanstalk getting-started-app.
a. Seleccione Elastic Beanstalk en la parte superior izquierda para volver al panel principal.
11
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Ahora que ha obtenido información acerca de Elastic Beanstalk y cómo acceder al mismo, le
recomendamos que lea Conceptos de AWS Elastic Beanstalk (p. 15). Este tema ofrece información
acerca de los componentes de Elastic Beanstalk, la arquitectura y las consideraciones de diseño
importantes para su aplicación de Elastic Beanstalk.
Además de la Consola de administración de AWS, también puede utilizar las siguientes herramientas para
crear y administrar entornos de Elastic Beanstalk.
Secciones
• CLI de EB (p. 12)
• AWS SDK for Java (p. 12)
• AWS Toolkit for Eclipse (p. 12)
• AWS SDK para .NET (p. 13)
• AWS Toolkit for Visual Studio (p. 13)
• AWS SDK for JavaScript in Node.js (p. 13)
• AWS SDK para PHP (p. 13)
• AWS SDK for Python (Boto) (p. 13)
• AWS SDK parar Ruby (p. 14)
CLI de EB
La CLI de EB es una herramienta de línea de comando para crear y administrar entornos. Para obtener
más información, consulte Interfaz de línea de comando de Elastic Beanstalk (CLI de EB) (p. 578).
El AWS SDK for Java requiere J2SE Development Kit 5.0 o una versión posterior. Puede descargar el
software de Java más reciente de http://developers.sun.com/downloads/. El SDK también requiere Apache
Commons (Codec, HTTPClient y Logging), así como paquetes de terceros de Saxon-HE, que se incluyen
el directorio de herramientas de terceros del SDK.
12
AWS Elastic Beanstalk Developer Guide
AWS SDK para .NET
Para asegurarse de que cuenta con todas las dependencias de WTP, le recomendamos que empiece con
la distribución de Java EE de Eclipse, que puede descargar en http://eclipse.org/downloads/.
Para obtener más información sobre el uso del complemento de Elastic Beanstalk para Eclipse, consulte
AWS Toolkit for Eclipse. Para empezar a crear una aplicación de Elastic Beanstalk con Eclipse, consulte
Creación e implementación de aplicaciones Java en AWS Elastic Beanstalk (p. 714).
Para obtener más información, consulte AWS SDK para .NET. Para ver las versiones de .NET Framework
y Visual studio admitidas, consulte AWS SDK para .NET Developer Guide.
Para obtener más información, consulte AWS SDK para JavaScript en Node.js.
El AWS SDK para PHP requiere PHP 5.2 o posterior. Para obtener más información sobre la descarga,
consulte http://php.net/.
13
AWS Elastic Beanstalk Developer Guide
AWS SDK parar Ruby
14
AWS Elastic Beanstalk Developer Guide
Aplicación
Aplicación
Una aplicación de Elastic Beanstalk es una colección lógica de componentes de Elastic Beanstalk;
por ejemplo, entornos, versiones y configuraciones de entornos. En Elastic Beanstalk, el concepto de
aplicación es muy parecido al de carpeta.
Application Version
En Elastic Beanstalk, una versión de la aplicación es una iteración específica y designada de un código
implementable de una aplicación web. Las versiones de la aplicación apuntan a un objeto de Amazon
Simple Storage Service (Amazon S3) que contiene el código implementable, como un archivo de
Java WAR. Las versiones de la aplicación forman parte de una aplicación. Las aplicaciones pueden
tener muchas versiones y cada versión de la aplicación es única. En un entorno en ejecución, puede
implementar cualquier versión que ya se haya cargado en la aplicación o puede cargar e instalar
inmediatamente una nueva versión de la aplicación. También puede cargar varias versiones de la
aplicación para ver las diferencias entre una y otra versión de la aplicación web.
Entorno
Un entorno es un conjunto de recursos de AWS que ejecutan una versión de la aplicación. Cada entorno
ejecuta una versión de la aplicación al mismo tiempo; sin embargo, puede haber varios entornos que
ejecuten simultáneamente la misma versión de la aplicación o versiones de la aplicación diferentes.
Cuando se crea un entorno, Elastic Beanstalk aprovisiona los recursos necesarios para ejecutar la versión
de la aplicación especificada.
15
AWS Elastic Beanstalk Developer Guide
Configuración guardada
configuración del entorno, Elastic Beanstalk aplica automáticamente los cambios a los recursos existentes
o elimina e implementa nuevos recursos (en función del tipo de cambio).
Configuración guardada
Una configuración guardada es una plantilla que puede utilizar como punto de partida para crear
configuraciones de entorno únicas. Puede crear y modificar configuraciones guardadas y aplicarlas a los
entornos mediante la Consola de Elastic Beanstalk, la CLI de EB, la AWS CLI o la API. La API y la AWS
CLI hacen referencia a las configuraciones guardadas como plantillas de configuración.
Plataforma
Una plataforma es una combinación de un sistema operativo, el tiempo de ejecución de un lenguaje
de programación, un servidor web, un servidor de aplicaciones y componentes de Elastic Beanstalk.
Su aplicación web estará diseñada para y dirigida a una plataforma. Elastic Beanstalk ofrece varias
plataformas sobre las que puede crear sus aplicaciones.
Para obtener más información, consulte Plataformas de AWS Elastic Beanstalk (p. 28).
Todos los entornos tienen un CNAME (URL) que apunta a un balanceador de carga. El entorno tiene
una URL; por ejemplo, myapp.us-west-2.elasticbeanstalk.com. Esta URL se asocia en
16
AWS Elastic Beanstalk Developer Guide
Entornos de trabajo
Amazon Route 53 con una URL de Elastic Load Balancing (algo así como abcdef-123456.us-
west-2.elb.amazonaws.com) utilizando un registro CNAME. Amazon Route 53 es un servicio web DNS
(sistema de nombres de dominio) escalable y de alta disponibilidad. Se encarga de direccionar el tráfico
a la infraestructura de forma segura y fiable. El nombre de dominio registrado con el proveedor de DNS
reenviará las solicitudes a CNAME.
El balanceador de carga se encuentra delante de las instancias de Amazon EC2, que forman parte de un
grupo de Auto Scaling. Amazon EC2 Auto Scaling inicia automáticamente las instancias de Amazon EC2
adicionales para acomodar el aumento de la carga de su aplicación. Si la carga de la aplicación se reduce,
Amazon EC2 Auto Scaling detiene las instancias, aunque siempre deja en ejecución al menos una.
El conjunto de software que se ejecuta en las instancias de Amazon EC2 depende del tipo de contenedor.
Un tipo de contenedor define la topología de la infraestructura y el conjunto de software que se va a utilizar
en ese entorno. Por ejemplo, un entorno de Elastic Beanstalk con un contenedor de Apache Tomcat
utilizará el sistema operativo Amazon Linux, un servidor web Apache y software de Apache Tomcat. Para
ver una lista de los tipos de contenedores admitidos, consulte Plataformas compatibles con AWS Elastic
Beanstalk (p. 32). Cada instancia de Amazon EC2 que ejecuta la aplicación utiliza uno de estos tipos
de contenedores. Además, en cada instancia de Amazon EC2, se ejecuta un componente de software
llamado administrador del host (HM). El administrador de host es responsable de lo siguiente:
• Implementar la aplicación
• Agregar eventos y métricas para recuperar información a través de la consola, la API o la línea de
comando
• Generar eventos de nivel de instancia
• Monitorizar los archivos log de la aplicación en busca de errores críticos
• Monitorizar el servidor de aplicaciones
• Instalar parches en los componentes de la instancia
• Rotar los archivos de registro de la aplicación y publicarlos en Amazon S3
El gestor del host notifica métricas, errores, eventos y el estado de las instancias del servidor, que están
disponibles a través de la Consola de administración de AWS, las API y las CLI.
Las instancias de Amazon EC2 que se muestran en el diagrama forman parte de un grupo de seguridad.
Los grupos de seguridad definen las reglas del firewall de las instancias. De forma predeterminada,
Elastic Beanstalk define un grupo de seguridad, lo que permite a todos los usuarios conectarse a través
del puerto 80 (HTTP). Puede definir varios grupos de seguridad. Por ejemplo, puede definir un grupo
de seguridad para el servidor de base de datos. Si desea obtener más información sobre los grupos de
seguridad de Amazon EC2 y cómo configurarlos para la aplicación de Elastic Beanstalk, consulte Grupos
de seguridad (p. 182).
Entornos de trabajo
Entre los recursos de AWS que se crean para una capa de entorno de trabajo se incluye un grupo de Auto
Scaling, una o varias instancias Amazon EC2 y un rol de IAM. En el nivel de entorno de trabajo, Elastic
Beanstalk también crea y aprovisiona una cola de Amazon SQS, si aún no hay ninguna. Cuando se lanza
un entorno de trabajo, Elastic Beanstalk instala los archivos auxiliares necesarios para el lenguaje de
programación elegido y un demonio en cada instancia EC2 del grupo de Auto Scaling. El demonio lee
los mensajes de una cola de Amazon SQS. El demonio envía los datos de cada mensaje que lee a la
aplicación web que se ejecuta en el entorno de trabajo para su procesamiento. Si hay varias instancias en
el entorno de trabajo, cada instancia tendrá su propio demonio, pero consultarán la misma cola de Amazon
SQS.
En el siguiente diagrama se muestran los diferentes componentes y sus interacciones entre diferentes y
servicios de AWS.
17
AWS Elastic Beanstalk Developer Guide
Consideraciones sobre el diseño
Amazon CloudWatch se utiliza para las alarmas y para monitorear el estado. Para obtener más
información, consulte Informes de estado básicos (p. 413).
Para obtener más información acerca de cómo funciona el nivel de entorno de trabajo, consulte Entornos
de trabajo de AWS Elastic Beanstalk (p. 165).
Escalabilidad
Cuando trabaja en un entorno con hardware físico, a diferencia del entorno en la nube, puede enfocar
la escalabilidad de dos formas: con un escalado vertical o con un escalado horizontal. En el escalado
vertical, es necesario invertir en un hardware potente a medida que aumenta la demanda en la compañía,
18
AWS Elastic Beanstalk Developer Guide
Seguridad
Al migrar a la nube, gracias a la elasticidad de esta tecnología, la infraestructura se puede ajustar mejor
a la demanda. La elasticidad es la optimización de la adquisición y el lanzamiento de recursos, de forma
que la infraestructura pueda escalar de inmediato vertical y horizontalmente a medida que fluctúa la
demanda. Para implementar la elasticidad, configure los ajustes de Auto Scaling de forma que aumente
o reduzca el escalado en función de las métricas de los recursos del entorno (por ejemplo, el uso de los
servidores o las entradas y salidas de la red). Puede utilizar Auto Scaling para que se añada capacidad de
cómputo automáticamente cuando aumente el uso y se elimine cuando descienda. Publique las métricas
del sistema (CPU, memoria, E/S de disco, E/S de red) en Amazon CloudWatch y configure alarmas
para que activen acciones de Auto Scaling o envíen notificaciones. Para obtener más instrucciones
sobre la configuración de Auto Scaling, consulte Grupo de Auto Scaling para el entorno de AWS Elastic
Beanstalk (p. 183).
En la medida de lo posible, las aplicaciones de Elastic Beanstalk deberían ser aplicaciones sin estado
que utilicen componentes tolerantes a errores acoplados de manera laxa y que puedan escalarse
horizontalmente en función de las necesidades. Para obtener más información sobre el diseño de
arquitecturas de aplicaciones escalables en AWS, consulte el documento técnico Arquitectura para la
nube: prácticas recomendadas.
Seguridad
La seguridad en AWS es una responsabilidad compartida. AWS protege los recursos físicos del entorno
y se asegura de que la nube sea un lugar seguro para que puedan ejecutarse las aplicaciones. Usted
es responsable de la seguridad de los datos de entrada y salida del entorno de Elastic Beanstalk y de la
seguridad de la aplicación.
Para proteger el flujo de información entre la aplicación y los clientes, configure SSL. Para ello, necesita
un certificado gratuito de AWS Certificate Manager (ACM). Si ya tiene un certificado de una entidad de
certificación (CA) externa, puede utilizar ACM para importarlo mediante programación o a través de la CLI
de AWS.
Si ACM no está disponible en su región, puede adquirir un certificado de una CA externo, como VeriSign
o Entrust. A continuación, use la CLI de AWS para cargar un certificado de terceros o autofirmado y
una clave privada en AWS Identity and Access Management (IAM). La clave pública del certificado
autentica el servidor en el navegador. También sirve de base para crear la clave de sesión compartida
que cifra los datos en ambas direcciones. Para obtener instrucciones acerca de cómo crear, cargar y
asignar un certificado SSL para el entorno, consulte Configuración de HTTPS para su entorno de Elastic
Beanstalk (p. 374).
Cuando configura un certificado SSL para el entorno, los datos se cifran entre el cliente y el balanceador
de carga de Elastic Load Balancing del entorno. De forma predeterminada, el cifrado termina en el
balanceador de carga, por lo que el tráfico entre el balanceador de carga y las instancias Amazon EC2
permanece sin cifrar.
Almacenamiento persistente
Las aplicaciones de Elastic Beanstalk se ejecutan en instancias de Amazon EC2 que no cuentan con
un almacenamiento local persistente. Cuando las instancias de Amazon EC2 terminan, el sistema de
archivos local no se guarda y las nuevas instancias de Amazon EC2 se inician con un sistema de archivos
predeterminado. Debe diseñar la aplicación para que la información se guarde en una fuente de datos
19
AWS Elastic Beanstalk Developer Guide
Tolerancia a errores
persistente. Amazon Web Services cuenta con distintos servicios de almacenamiento persistente que
puede utilizar con su aplicación. En la siguiente tabla se enumeran.
Tolerancia a errores
Por lo general, conviene adoptar una actitud pesimista al diseñar la arquitectura de la nube. Planee
siempre el diseño y la implementación como si hubiera que recuperarse automáticamente de un error.
Utilice varias zonas de disponibilidad para las instancias de Amazon EC2 y Amazon RDS. El concepto
de las zonas de disponibilidad es similar al de los centros de datos lógicos. Utilice Amazon CloudWatch
para obtener más información sobre el estado de la aplicación de Elastic Beanstalk y poder emprender las
acciones adecuadas en caso de que se produzca un problema en el hardware o disminuya el desempeño.
Establezca la configuración de Auto Scaling para mantener la flota de instancias de Amazon EC2 en un
tamaño fijo, de modo que las instancias de Amazon EC2 en mal estado se sustituyan por otras nuevas.
Si utiliza Amazon RDS, defina el período de retención de las copias de seguridad para que Amazon RDS
pueda realizar copias de seguridad automatizadas.
Entrega de contenido
Cuando los usuarios se conectan al sitio web, las solicitudes pueden direccionarse a través de una serie
de redes diferentes. Como resultado, los usuarios pueden experimentar un desempeño deficiente debido a
una elevada latencia. Amazon CloudFront puede ayudar a solucionar problemas de latencia distribuyendo
el contenido web (imágenes, vídeo, etc.) por una red de ubicaciones de borde repartidas por todo el
mundo. Los usuarios finales se direccionan a la ubicación de borde más cercana para que el contenido
se entregue con el desempeño más óptimo posible. CloudFront funciona perfectamente con Amazon S3,
que almacena de forma duradera las versiones originales y definitivas de sus archivos. Para obtener más
información sobre Amazon CloudFront, consulte https://aws.amazon.com/cloudfront.
20
AWS Elastic Beanstalk Developer Guide
Conectividad
Conectividad
Elastic Beanstalk necesita conectarse a las instancias del entorno para poder completar las
implementaciones. Cuando se implementa una aplicación de Elastic Beanstalk dentro de una Amazon
VPC, la configuración necesaria para habilitar la conectividad depende del tipo de entorno de Amazon VPC
que se ha creado:
• En el caso de los entornos de una sola instancia, no se requiere configuración adicional, ya que Elastic
Beanstalk asigna a cada instancia Amazon EC2 una dirección IP elástica que permite a la instancia
comunicarse directamente con Internet.
• En el caso de los entornos de Auto Scaling con balanceo de carga de una Amazon VPC donde hay
subredes públicas y privadas, debe hacer lo siguiente:
• Crear un balanceador de carga en la subred pública que direccione el tráfico procedente de Internet a
las instancias Amazon EC2.
• Crear un dispositivo de conversión de direcciones de red (NAT) para direccionar el tráfico procedente
de las instancias Amazon EC2 en subredes privadas a Internet.
• Crear reglas de direccionamiento entrantes y salientes para las instancias Amazon EC2 en la subred
privada.
• Si se utiliza una instancia NAT, configurar los grupos de seguridad de la instancia NAT y las instancias
Amazon EC2 para habilitar la comunicación con Internet.
• En el caso de los entornos de Auto Scaling con balanceo de carga que están en una Amazon VPC y solo
tienen una subred pública, no se necesita configuración adicional, ya que las instancias Amazon EC2
están configuradas con una dirección IP pública que permite a las instancias comunicarse con Internet.
Para obtener más información sobre el uso de Elastic Beanstalk con Amazon VPC, consulte Uso de Elastic
Beanstalk con Amazon Virtual Private Cloud (p. 562).
21
AWS Elastic Beanstalk Developer Guide
Rol de servicio
La mejor manera de conseguir que un rol de servicio y un perfil de instancia estén correctamente
configurados es crear un entorno que ejecute una aplicación de ejemplo (p. 88) en la consola de
Consola de Elastic Beanstalk o mediante la interfaz de línea de comandos de Elastic Beanstalk (CLI
de EB). Cuando crea un entorno, los clientes deben crear los roles necesarios y asignarles políticas
administradas (p. 502) que incluyan todos los permisos necesarios.
Además de los dos roles que asigna a su entorno, también puede crear políticas de usuario (p. 25) y
aplicarlas a los usuarios y grupos de IAM de su cuenta para permitir que creen y administren aplicaciones
y entornos de Elastic Beanstalk. Elastic Beanstalk proporciona políticas administradas para el acceso
completo y el acceso de solo lectura.
Puede crear sus propios perfiles de instancia y políticas de usuario para escenarios avanzados. Si las
instancias necesitan tener acceso a servicios que no están incluidos en las políticas predeterminadas,
puede añadir políticas adicionales a las políticas predeterminadas o crear una nueva política. También
puede crear políticas de usuario más restrictivas si la política administrada es demasiado permisiva.
Consulte la Guía del usuario de AWS Identity and Access Management para obtener información detallada
sobre los permisos de AWS.
Temas
• Rol de servicio de Elastic Beanstalk (p. 22)
• Perfil de instancia Elastic Beanstalk (p. 23)
• Política de usuario de Elastic Beanstalk (p. 25)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
22
AWS Elastic Beanstalk Developer Guide
Perfil de instancia
"Action": [
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetHealth",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:GetConsoleOutput",
"ec2:AssociateAddress",
"ec2:DescribeAddresses",
"ec2:DescribeSecurityGroups",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeNotificationConfigurations",
"sns:Publish"
],
"Resource": [
"*"
]
}
]
}
Esta política también incluye acciones de Amazon SQS que permiten a Elastic Beanstalk monitorizar la
actividad de la cola de los entornos de trabajo.
Cuando crea un entorno mediante la consola de Consola de Elastic Beanstalk, Elastic Beanstalk le
pide que cree un rol de servicio llamado aws-elasticbeanstalk-service-role con el conjunto
predeterminado de permisos y una política de confianza que permita a Elastic Beanstalk asumir el rol de
servicio. Si habilita las actualizaciones de plataforma administradas (p. 154), Elastic Beanstalk asocia
otra política con permisos que habilitan esta característica.
Del mismo modo, al crear un entorno mediante el comando the section called “eb create” (p. 622) de
la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB) y no especificar un rol de servicio a
través de la opción --service-role, Elastic Beanstalk crea el rol de servicio predeterminado aws-
elasticbeanstalk-service-role. Si el rol de servicio predeterminado ya existe, Elastic Beanstalk lo
utiliza para el entorno nuevo.
Para obtener más información acerca de los roles de servicio, consulte Administración de roles de servicio
de Elastic Beanstalk (p. 491).
23
AWS Elastic Beanstalk Developer Guide
Perfil de instancia
• Recuperan versiones de la aplicación (p. 15) de Amazon Simple Storage Service (Amazon S3).
• Escriben registros en Amazon S3.
• En entornos integrados de AWS X-Ray (p. 240), cargan datos de depuración en X-Ray.
• En entornos Multicontainer Docker, coordinan implementaciones de contenedor con Amazon Elastic
Container Service
• En entornos de trabajo, leen los datos de una cola de Amazon Simple Queue Service (Amazon SQS).
• En entornos de trabajo, realizan la elección del líder con Amazon DynamoDB
• En entornos de trabajo, publican métricas de estado de las instancias en Amazon CloudWatch
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
},
{
"Sid": "XRayAccess",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "CloudWatchLogsAccess",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:DescribeLogStreams",
"logs:DescribeLogGroups"
],
"Effect": "Allow",
"Resource": [
"arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
]
}
]
}
Si la aplicación web requiere acceso a otros servicios de AWS, añada instrucciones o políticas
administradas al perfil de instancia que permitan el acceso a dichos servicios.
24
AWS Elastic Beanstalk Developer Guide
Política de usuario de
Para obtener más información sobre los perfiles de instancia, consulte Administración de perfiles de
instancias de Elastic Beanstalk (p. 486).
Elastic Beanstalk requiere permisos no solo para sus propias acciones de API, sino también para otros
servicios de AWS. Elastic Beanstalk usa los permisos de usuario para lanzar todos los recursos de un
entorno, incluidas las instancias EC2, un balanceador de carga de Elastic Load Balancing y un grupo de
Auto Scaling. Elastic Beanstalk también utiliza los permisos de usuario para guardar los registros y las
plantillas en Amazon Simple Storage Service (Amazon S3), enviar notificaciones a Amazon SNS, asignar
perfiles de instancia y publicar métricas en CloudWatch. Elastic Beanstalk requiere permisos de AWS
CloudFormation para organizar las implementaciones de recursos y las actualizaciones. También requiere
permisos de Amazon RDS para crear bases de datos cuando sea necesario y permisos de Amazon SQS
para crear colas para entornos de trabajo.
La siguiente política permite el acceso a las acciones que se utilizan para crear y administrar entornos
de Elastic Beanstalk. Esta política está disponible en la consola de IAM como una política administrada
denominada AWSElasticBeanstalkFullAccess. Puede aplicar la política administrada a un usuario o
grupo de IAM para conceder permiso para utilizar Elastic Beanstalk o crear su propia política que excluya
los permisos que no necesiten sus usuarios.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticbeanstalk:*",
"ec2:*",
"ecs:*",
"ecr:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"dynamodb:*",
"rds:*",
"sqs:*",
"logs:*",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:PassRole",
"iam:ListRolePolicies",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListServerCertificates",
"acm:DescribeCertificate",
"acm:ListCertificates",
"codebuild:CreateProject",
"codebuild:DeleteProject",
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
],
25
AWS Elastic Beanstalk Developer Guide
Política de usuario de
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:CreateRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-elasticbeanstalk*",
"arn:aws:iam::*:instance-profile/aws-elasticbeanstalk*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/
AWSServiceRoleForAutoScaling*"
],
"Condition": {
"StringLike": {
"iam:AWSServiceName": "autoscaling.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/
AWSServiceRoleForElasticBeanstalk*"
],
"Condition": {
"StringLike": {
"iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy"
],
"Resource": "*",
"Condition": {
"StringLike": {
"iam:PolicyArn": [
"arn:aws:iam::aws:policy/AWSElasticBeanstalk*",
"arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*"
]
}
}
}
]
}
Elastic Beanstalk también proporciona una política administrada de solo lectura denominada
AWSElasticBeanstalkReadOnlyAccess. Esta política permite a un usuario ver, pero no modificar ni
crear, entornos de Elastic Beanstalk.
26
AWS Elastic Beanstalk Developer Guide
Política de usuario de
Para obtener más información sobre las políticas de usuario, consulte Control del acceso a Elastic
Beanstalk (p. 502).
27
AWS Elastic Beanstalk Developer Guide
Glosario de plataformas
Elastic Beanstalk también admite plataformas personalizadas que pueden estar basadas en una AMI
creada por usted y que pueden incluir otras personalizaciones.
Temas
• Glosario de plataformas de AWS Elastic Beanstalk (p. 28)
• Modelo de responsabilidad compartida para el mantenimiento de plataformas de AWS Elastic
Beanstalk (p. 29)
• Política de compatibilidad con plataformas de AWS Elastic Beanstalk (p. 30)
• Plataformas compatibles con AWS Elastic Beanstalk (p. 32)
• Plataformas personalizadas de AWS Elastic Beanstalk (p. 33)
Tiempo de ejecución
Los componentes de software que Elastic Beanstalk agrega una plataforma para habilitar la
funcionalidad de Elastic Beanstalk. Por ejemplo, el agente de estado avanzado es necesario para
recopilar información sanitaria y generar informes sobre ella.
Plataforma
Una combinación de un sistema operativo (SO), un tiempo de ejecución, un servidor web, un servidor
de aplicaciones y componentes de Elastic Beanstalk. Las plataformas proporcionan componentes que
están disponibles para ejecutar la aplicación.
Versión de la plataforma
Una versión de la plataforma tiene un número de versión semántica con la forma X.Y.Z, donde X es la
versión principal, Y es la versión secundaria y Z es la versión del parche.
28
AWS Elastic Beanstalk Developer Guide
Modelo de responsabilidad compartida
Actualización de plataforma
La publicación de una nueva versión de la plataforma que contiene actualizaciones para algunos
componentes de la plataforma: SO, tiempo de ejecución, servidor web, servidor de aplicaciones y
componentes de Elastic Beanstalk. Las actualizaciones de la plataforma siguen una taxonomía de
control de versiones semántica y pueden tener varios niveles:
• Actualización principal: una actualización que contiene cambios incompatibles con las versiones
de la plataforma existentes. Es posible que tenga que modificar su aplicación para que se ejecute
correctamente en una nueva versión principal. Una actualización principal tiene un nuevo número de
versión principal de la plataforma.
• Actualización secundaria: una actualización que añade una funcionalidad que es compatible con
una versión anterior de la plataforma. No tendrá que modificar su aplicación para que se ejecute
correctamente en una nueva versión secundaria. Una actualización secundaria tiene un nuevo
número de versión secundaria de la plataforma.
• Actualización de parche: una actualización que consta de versiones de mantenimiento (solución
de errores, actualizaciones de seguridad y mejoras de rendimiento) compatibles con versiones
anteriores de la plataforma. Una actualización de parche tiene un nuevo número de versión de
parche de la plataforma.
Versión de la plataforma compatible
Una versión de la plataforma que tenga versiones del sistema operativo (SO), el tiempo de ejecución,
el servidor de aplicaciones, y el servidor web que aún reciban soporte de sus respectivos proveedores
(los propietarios o comunidades). Elastic Beanstalk hace que las versiones de la plataforma
compatibles estén disponibles para la creación del entorno.
Versión de la plataforma retirada
Una versión de la plataforma que contiene una versión del sistema operativo (SO), el tiempo de
ejecución, el servidor de aplicaciones o el servidor web que haya alcanzado el final de su vida útil
(EOL), según lo haya determinado su proveedor (propietario o comunidad). Las versiones de la
plataforma retiradas no están disponibles para su uso en entornos de Elastic Beanstalk para los
clientes nuevos o existentes.
Para obtener más información acerca de la retirada de la versión de la plataforma, consulte Política de
compatibilidad con plataformas de AWS Elastic Beanstalk (p. 30).
Managed Updates
Una característica de Elastic Beanstalk que aplica automáticamente las actualizaciones secundarias
y parches para el sistema operativo (SO), el tiempo de ejecución, el servidor web, el servidor de
aplicaciones y componentes de Elastic Beanstalk para una versión de la plataforma compatible con
Elastic Beanstalk. Puede configurar las actualizaciones de plataforma administradas para aplicar solo
las actualizaciones de parches o para las actualizaciones secundarias y de parches. También puede
deshabilitar las actualizaciones administradas por completo.
Para obtener más información, consulte Actualizaciones de plataforma administradas (p. 154).
29
AWS Elastic Beanstalk Developer Guide
Política de compatibilidad con plataformas
Para obtener más información, consulte Actualizaciones de plataforma administradas (p. 154).
• Publica su política de compatibilidad con plataformas (p. 30) y la programación de retiradas para los
siguientes 12 meses.
• Publica actualizaciones principales, secundarias y de parches para componentes de sistemas operativos
(SO), tiempo de ejecución, servidor de aplicaciones y servidor web, normalmente en el plazo de 30 días
tras estar disponibles. Elastic Beanstalk es el responsable de crear actualizaciones para componentes
de Elastic Beanstalk que estén presentes en sus versiones de plataforma compatibles. Todas las demás
actualizaciones vienen directamente de sus proveedores (los propietarios o la comunidad).
• Actualizar todos los componentes que estén bajo su control (identificados como Customer (Cliente) en
el modelo de responsabilidad compartida de AWS). Esto incluye garantizar la seguridad de la aplicación,
los datos y los componentes que necesite la aplicación y que haya descargado.
• Asegurarse de que sus entornos de Elastic Beanstalk se ejecuten en una versión de plataforma
compatible, y migre cualquier entorno que se ejecute en una versión de la plataforma retirada a una
versión compatible.
• Resolver todos los problemas que surgen en intentos fallidos de actualización administrada y volver a
intentar la actualización.
• Aplique usted mismo parches al SO, el tiempo de ejecución, el servidor de aplicaciones y el servidor web
si ha decidido no optar por las actualizaciones administradas de Elastic Beanstalk. Puede hacer esto
aplicando manualmente actualizaciones de plataforma (p. 149) o aplicando parches directamente a los
componentes en todos los recursos del entorno pertinentes.
• Administrar la seguridad y la conformidad de cualquier servicio de AWS que utilizara fuera de Elastic
Beanstalk de acuerdo con el modelo de responsabilidad compartida de AWS.
Cuando el proveedor identifica un componente (sistema operativo [SO], tiempo de ejecución, servidor
de aplicación o servidor web) de una versión de plataforma como al final de su vida útil (EOL), Elastic
Beanstalk marca la versión de la plataforma como retirada. Cuando una versión de la plataforma se marca
como retirada, Elastic Beanstalk ya no la pone a disposición de los clientes nuevos y existentes de Elastic
Beanstalk para las implementaciones en nuevos entornos. Las versiones de plataformas retiradas están
disponibles para entornos de clientes existentes durante un periodo de 90 días a partir de la fecha de
retirada publicada.
30
AWS Elastic Beanstalk Developer Guide
Programación de versiones de la plataforma retiradas
como al final de su vida útil. Para los clientes existentes que ejecutan un entorno de Elastic Beanstalk
en una versión de la plataforma retirada después del periodo de 90 días, puede que Elastic Beanstalk
tenga que eliminar automáticamente los componentes de Elastic Beanstalk y transferir al cliente la
responsabilidad continua de administración y soporte de la aplicación en ejecución y los recursos de
AWS asociados. Para que pueda seguir beneficiándose de las mejoras importantes de seguridad,
rendimiento y funcionalidad ofrecidas por los proveedores de componentes en las versiones más recientes,
le recomendamos encarecidamente que actualice todos los entornos de Elastic Beanstalk a una versión
más reciente de la plataforma.
[1]
Anteriormente, publicamos la fecha de retirada de Windows Server 2008 R2 para el 1 de marzo de 2020.
Debido a los cambios en la política de licencias de Microsoft, ahora contamos con una fecha de retirada de
la plataforma programada para el 16 de octubre de 2019. Si tiene alguna duda acerca de la licencia o los
derechos del software de Microsoft, consulte con el equipo legal, Microsoft o su revendedor de Microsoft.
31
AWS Elastic Beanstalk Developer Guide
Plataformas compatibles
Elastic Beanstalk proporciona plataformas para la lenguajes de programación (Go, Java, Node.js, PHP,
Python y Ruby), servidores de aplicaciones (Tomcat, Passenger y Puma) y contenedores de Docker.
Algunas plataformas disponen de varias versiones compatibles a la vez.
Elastic Beanstalk aprovisiona los recursos necesarios para ejecutar la aplicación, incluida una o varias
instancias Amazon EC2. La pila de software que se ejecuta en las instancias de Amazon EC2 depende de
la versión de la plataforma específica que ha seleccionado para su entorno.
Puede usar el nombre de la pila de soluciones que se muestra en el nombre de la versión de la plataforma
para lanzar un entorno con la CLI de EB (p. 578), la API de Elastic Beanstalk o la CLI de AWS. También
puede recuperar los nombres de pila de soluciones del servicio con la API ListAvailableSolutionStacks
(aws elasticbeanstalk list-available-solution-stacks en la CLI de AWS). Esta operación devuelve todas las
pilas de soluciones que puede utilizar para crear un entorno.
Note
Cada plataforma tiene versiones de plataforma compatibles y retiradas. Siempre puede crear
un entorno basado en una versión de la plataforma compatible. Las versiones de plataformas
retiradas solo están disponibles para entornos de clientes existentes durante un periodo de 90
días a partir de la fecha de retirada publicada. Para obtener una lista de fechas de retirada de
las versiones de plataforma publicadas, consulte Programación de versiones de la plataforma
retiradas (p. 31).
Cuando Elastic Beanstalk actualiza una plataforma, las versiones anteriores de la plataforma
siguen siendo compatibles, pero carecen de los componentes más actualizados y no se
recomienda su uso. Recomendamos que realice una transición a la versión de la plataforma más
reciente. Aun así, puede crear un entorno basado en una versión de la plataforma anterior si la
ha utilizado en un entorno durante los últimos 30 días (utilizando la misma cuenta en la misma
región).
Puede personalizar y configurar el software del que depende la aplicación en la plataforma. Puede obtener
más información en Personalización de software en servidores Linux (p. 323) y Personalización de
software en servidores Windows (p. 335).Las notas de la versión detalladas de los últimos lanzamientos
están disponibles en Notas de la versión de AWS Elastic Beanstalk.
32
AWS Elastic Beanstalk Developer Guide
Versiones de la plataforma compatibles
• Packer Builder
• Single Container Docker
• Multicontainer Docker
• Preconfigured Docker
• Go
• Java SE
• Java con Tomcat
• .NET en Windows Server con IIS
• Node.js
• PHP
• Python
• Ruby
Para crear una plataforma personalizada, crea una AMI de uno de los sistemas operativos
admitidos — Ubuntu, RHEL o Amazon Linux (consulte la entrada flavor de Formato del archivo
platform.yaml. (p. 41) para conocer los números de versión exactos) — y añade personalizaciones.
Crea su propia plataforma de Elastic Beanstalk con Packer, que es una herramienta de código abierto
que permite crear imágenes para numerosas plataformas, como las AMI que se usan con Amazon Elastic
Compute Cloud (Amazon EC2). Las plataformas de Elastic Beanstalk se componen de una AMI que está
configurada para ejecutar el conjunto de software que respalda a una aplicación y metadatos que pueden
contener opciones de configuración personalizadas y valores predeterminados.
Elastic Beanstalk administra Packer como una plataforma integrada independiente y, por tanto, no tendrá
que preocuparse por la configuración y las versiones de Packer.
Para crear una plataforma, proporcione a Elastic Beanstalk una plantilla de Packer y los scripts y archivos
que la plantilla invoca para crear las AMI. Estos componentes se empaquetan con un platform definition
file (p. 34), que especifica la plantilla y los metadatos en un archivo ZIP, conocido como platform
definition archive (p. 39).
33
AWS Elastic Beanstalk Developer Guide
Creación de una plataforma personalizada
Cuando crea una plataforma personalizada, lanza un entorno de una sola instancia sin una dirección IP
elástica que ejecuta Packer. A continuación, Packer lanza otra instancia para crear una imagen. Puede
reutilizar este entorno con diferentes plataformas y diferentes versiones de cada plataforma.
Note
Las plataformas personalizadas son específicas de la región de AWS. Si utiliza Elastic Beanstalk
en varias regiones, debe crear las plataformas por separado en cada región.
En determinadas circunstancias, las instancias lanzadas por Packer no se han limpiado y se
deben terminar manualmente. Para obtener información sobre cómo limpiar manualmente estas
instancias, consulte Limpieza de instancias de Packer (p. 41).
Los usuarios de la cuenta pueden usar sus plataformas personalizadas. Para ello, deben especificar
un ARN de plataforma (p. 509) durante la creación del entorno. Estos ARN se devuelven mediante el
comando eb platform create que utilizó para crear la plataforma personalizada.
Cada vez que cree una plataforma personalizada, Elastic Beanstalk creará una nueva versión de la
plataforma. Los usuarios pueden especificar una plataforma por su nombre para obtener únicamente la
última versión de la plataforma o incluir un número de versión para obtener una versión específica.
Por ejemplo, para implementar la última versión de la plataforma personalizada con el ARN
MyCustomPlatformARN, que podría ser la 3.0, la línea de comando de la CLI de EB sería esta:
eb create -p MyCustomPlatformARN
Puede aplicar etiquetas a una versión de la plataforma personalizada cuando la cree y editar etiquetas
de las versiones de la plataforma personalizada existentes. Para obtener más información, consulte
Etiquetado de versiones de la plataforma personalizada (p. 44).
No utilice una plataforma personalizada de ejemplo sin modificar en producción. El objetivo de los
ejemplos es mostrar algunas de las funcionalidades disponibles en una plataforma personalizada,
pero no están preparados para producción.
NodePlatform_Ubuntu.zip
Esta plataforma se basa en Ubuntu 16.04 y es compatible con Node.js 4.4.4. Utilizaremos esta
plataforma personalizada para los ejemplos de esta sección.
34
AWS Elastic Beanstalk Developer Guide
Uso de las plataformas personalizadas de ejemplo
NodePlatform_RHEL.zip
Esta plataforma se basa en Amazon Linux 2016.09.1 y es compatible con Node.js 4.4.4.
TomcatPlatform_Ubuntu.zip
Ejemplo de Node.js que utiliza express y ejs para mostrar una página web estática.
CustomPlatform_TomcatSampleApp.zip
Ejemplo de Tomcat que muestra una página web estática cuando se implementa.
Example NodePlatform_Ubuntu.zip
|-- builder Contains files used by Packer to create the custom platform
|-- custom_platform.json Packer template
|-- platform.yaml Platform definition file
|-- ReadMe.txt Briefly describes the sample
version: "1.0"
provisioner:
type: packer
template: custom_platform.json
flavor: ubuntu1604
La plantilla de Packer le indica a Packer cómo debe generar las AMI de la plataforma mediante una AMI
de Ubuntu que sirve de base para la imagen de plataforma en los tipos de instancia HVM. La sección
provisioners le indica a Packer que copie todo el contenido de la carpeta builder del archivo en la
instancia y que ejecute el script builder.sh en la instancia. Cuando los scripts se completan, Packer
crea una imagen de la instancia modificada.
Elastic Beanstalk crea tres variables de entorno que se pueden utilizar para etiquetar las AMI de Packer:
AWS_EB_PLATFORM_ARN
35
AWS Elastic Beanstalk Developer Guide
Uso de las plataformas personalizadas de ejemplo
El archivo custom_platform.json de ejemplo utiliza estas variables para definir los que se utilizan en
los scripts:
El archivo custom_platform.json contiene dos propiedades para las que tiene que proporcionar
valores: source_ami y region. Para obtener más información acerca de la elección de los valores de
región y AMI correctos, consulte Updating Packer template (Actualización de plantilla de Packer) en el
repositorio eb-custom-platforms-samples de GitHub.
Example custom_platform.json
{
"variables": {
"platform_name": "{{env `AWS_EB_PLATFORM_NAME`}}",
"platform_version": "{{env `AWS_EB_PLATFORM_VERSION`}}",
"platform_arn": "{{env `AWS_EB_PLATFORM_ARN`}}"
},
"builders": [
{
...
"region": "",
"source_ami": "",
...
}
],
"provisioners": [
{...},
{
"type": "shell",
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo {{ .Path }}",
"scripts": [
"builder/builder.sh"
]
}
]
}
Los scripts y otros archivos que incluya en su platform definition archive variarán considerablemente en
función de las modificaciones que quiera realizar en la instancia. La plataforma de ejemplo contiene los
siguientes scripts:
36
AWS Elastic Beanstalk Developer Guide
Uso de las plataformas personalizadas de ejemplo
Utilice la CLI de EB para crear la primera plataforma personalizada con el platform definition archive de
ejemplo.
~$ mkdir ~/custom-platform
~$ cd ~/custom-platform
~/custom-platform$ unzip ~/NodePlatform_Ubuntu.zip
~/custom-platform$ cd NodePlatform_Ubuntu
Windows PowerShell utiliza ebp como alias del comando. Si está ejecutando la CLI de EB en
Windows PowerShell, utilice el formato largo de este comando: eb platform.
De forma predeterminada, eb platform init utiliza el nombre de la carpeta actual como el nombre de la
plataforma personalizada, que, en este ejemplo, sería custom-platform.
6. Ejecute eb platform create (p. 645) para lanzar un entorno de Packer y obtener el ARN de la
plataforma personalizada. Necesitará este valor más tarde, cuando cree un entorno desde la
plataforma personalizada.
37
AWS Elastic Beanstalk Developer Guide
Uso de las plataformas personalizadas de ejemplo
Note
En la CLI de EB se muestra la salida de eventos del entorno de Packer hasta que se completa el
proceso de creación. Si desea salir de la vista de eventos, presione Ctrl+C.
7. Puede comprobar los errores de los registros con el comando eb platform logs (p. 648).
8. Puede comprobar el proceso en otro momento con eb platform events (p. 646).
Una vez que se complete la operación, tendrá a su disposición una plataforma que puede utilizar para
lanzar un entorno de Elastic Beanstalk.
Puede utilizar la plataforma personalizada cuando cree un entorno desde la consola. Consulte El asistente
de creación de nuevo entorno (p. 90).
~$ mkdir custom-platform-app
~$ cd ~/custom-platform-app
~/custom-platform-app$ eb init
...
38
AWS Elastic Beanstalk Developer Guide
Contenido del archivo de definición de la plataforma
Cuando se utiliza la CLI de EB para crear una plataforma personalizada, esta crea un platform
definition archive a partir de los archivos y carpetas del repositorio de la plataforma, por lo que no
es necesario crear el archivo manualmente.
El platform definition file es un archivo con formato YAML cuyo nombre debe ser platform.yaml
y que debe estar en la raíz del platform definition archive. Consulte Creación de una plataforma
personalizada (p. 34) para ver una lista de las claves obligatorias y opcionales que se admiten en un
platform definition file.
No es necesario que asigne el nombre a la plantilla de Packer de una forma determinada, pero el nombre
del archivo debe coincidir con la plantilla del aprovisionador especificada en el platform definition file.
Consulte en la documentación oficial de Packer las instrucciones para crear plantillas de Packer.
Los demás archivos del platform definition archive son scripts y archivos que utiliza la plantilla para
personalizar una instancia antes de crear una AMI.
Enlaces de la plataforma
Elastic Beanstalk utiliza una estructura de directorios estandarizada para los enlaces. Son scripts que se
ejecutan durante los eventos del ciclo de vida en respuesta a las operaciones de administración (cuando
se lanzan instancias en el entorno o cuando un usuario inicia una implementación o utiliza la característica
de reinicio del servidor de aplicaciones).
Coloque los scripts que desea que disparen los enlaces en una de las subcarpetas de la carpeta /opt/
elasticbeanstalk/hooks/.
Warning
• appdeploy: scripts que se ejecutan durante la implementación de una aplicación. Elastic Beanstalk
ejecuta la implementación de una aplicación cuando se lanzan nuevas instancias y cuando un cliente
inicia la implementación de una nueva versión.
• configdeploy: scripts que se ejecutan cuando un cliente realiza una actualización de la configuración
que afecta a la configuración del software de la instancia; por ejemplo, cuando se configuran
propiedades de entorno o se habilita la rotación de registros en Amazon S3.
• restartappserver: scripts que se ejecutan cuando un cliente realiza una operación de reinicio del
servidor de aplicaciones.
• preinit: scripts que se ejecutan durante el proceso de arranque de las instancias.
• postinit: scripts que se ejecutan después del proceso de arranque de las instancias.
39
AWS Elastic Beanstalk Developer Guide
Scripts de la plataforma
Cuando se lanza una instancia, Elastic Beanstalk ejecuta preinit, appdeploy y postinit, en este
orden. En las siguientes implementaciones de las instancias en ejecución, Elastic Beanstalk ejecuta
los enlaces appdeploy. Los enlaces de configdeploy se ejecutan cuando un usuario actualiza las
opciones de configuración del software de la instancia. . Los enlaces de restartappserver solo se
ejecutan cuando el usuario inicia un reinicio del servidor de aplicaciones.
Cuando los scripts experimentan errores, pueden salir con un estado cero y escribir en stderr el error de
la operación. El mensaje que escriba en stderr aparecerá en el evento que se genera cuando se produce
un error en la operación. Elastic Beanstalk también captura esta información en el archivo de registro /
var/log/eb-activity.log Si no desea que la operación muestre errores, devuelva 0 (cero). Los
mensajes que se escriben en stderr o stdout aparecen en los registros de implementación (p. 457),
pero no en la secuencia de eventos, a no ser que se produzca un error en la operación.
Scripts de la plataforma
Elastic Beanstalk instala el script de shell get-config, que se puede utilizar para obtener las variables de
entorno y otra información de los enlaces que se ejecutan en las instancias de los entornos lanzados con la
plataforma personalizada.
• get-config optionsettings: devuelve un objeto JSON que muestra las opciones de configuración
establecidas en el entorno ordenadas en función del espacio de nombres.
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:container:php:phpini":
{"memory_limit":"256M","max_execution_time":"60","display_errors":"Off","composer_options":"","allow_
{"LogPublicationControl":"false"},"aws:elasticbeanstalk:application:environment":
{"TESTPROPERTY":"testvalue"}}
Para devolver una opción de configuración específica, utilice la opción -n para especificar un espacio de
nombres y la opción -o para especificar el nombre de la opción.
$ /opt/elasticbeanstalk/bin/get-config optionsettings -
n aws:elasticbeanstalk:container:php:phpini -o memory_limit
256M
• get-config environment: devuelve un objeto JSON que contiene una lista de propiedades
de entorno, incluidas las propiedades configuradas por el usuario y las proporcionadas por Elastic
Beanstalk.
$ /opt/elasticbeanstalk/bin/get-config environment
{"TESTPROPERTY":"testvalue","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-
west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpass
Por ejemplo, Elastic Beanstalk proporciona propiedades de entorno que permiten conectarse a una
instancia de base de datos de RDS integrada (RDS_HOSTNAME, etc.). Estas propiedades aparecen en
la salida de get-config environment, pero no en la de get-config optionsettings, ya que no
las establece el usuario.
Para devolver una propiedad específica del entorno, utilice la opción -k para especificar la clave de una
propiedad.
40
AWS Elastic Beanstalk Developer Guide
Limpieza de instancias de Packer
Puede probar los comandos anteriores a través de SSH para conectarse a una instancia de un entorno de
Elastic Beanstalk que ejecute una plataforma basada en Linux.
Consulte los siguientes archivos del platform definition archive de muestra (p. 34) para ver un ejemplo
sobre el uso de get-config:
• builder/platform-uploads/opt/elasticbeanstalk/hooks/configdeploy/enact/02-
gen-envvars.sh: obtiene las propiedades de entorno.
• builder/platform-uploads/opt/SampleNodePlatform/bin/createPM2ProcessFile.js:
analiza la salida.
Elastic Beanstalk instala el script de shell download-source-bundle, que se puede utilizar para
descargar el código fuente de la aplicación durante la implementación de la plataforma personalizada. Esta
herramienta está disponible en /opt/elasticbeanstalk/bin/download-source-bundle. Consulte
el script de ejemplo 00-unzip.sh, que se encuentra en la carpeta appdeploy/pre, por ver un ejemplo
acerca de cómo se utiliza download-source-bundle para descargar el código fuente de la aplicación
en la carpeta /opt/elasticbeanstalk/deploy/appsource durante la implementación.
1. Abra https://console.aws.amazon.com/ec2/.
2. Asegúrese de que se encuentra en la misma región de AWS en la que creó la instancia con Packer.
3. En Resources (Recursos), elija N Running Instances (Ejecutando instancias), donde N indica el
número de instancias en ejecución.
4. Haga clic en el cuadro de texto de consulta.
5. Seleccione la etiqueta Name (Nombre).
6. Introduzca packer.
version: "version-number"
provisioner:
41
AWS Elastic Beanstalk Developer Guide
Formato de Platform.yaml
type: provisioner-type
template: provisioner-template
flavor: provisioner-flavor
metadata:
maintainer: metadata-maintainer
description: metadata-description
operating_system_name: metadata-operating_system_name
operating_system_version: metadata-operating_system_version
programming_language_name: metadata-programming_language_name
programming_language_version: metadata-programming_language_version
framework_name: metadata-framework_name
framework_version: metadata-framework_version
option_definitions:
- namespace: option-def-namespace
option_name: option-def-option_name
description: option-def-description
default_value: option-def-default_value
option_settings:
- namespace: "option-setting-namespace"
option_name: "option-setting-option_name"
value: "option-setting-value"
version-number
Obligatorio. Tipo de constructor utilizado para crear la plataforma personalizada. Debe ser packer.
provisioner-template
Opcional. Sistema operativo base que se utiliza con la AMI. Uno de los siguientes:
amazon (predeterminado)
RHEL 7
rhel6
RHEL 6
metadata-maintainer
42
AWS Elastic Beanstalk Developer Guide
Formato de Platform.yaml
metadata-operating_system_name
Opcional. Nombre del sistema operativo de la plataforma (50 caracteres). Este valor está disponible al
filtrar la salida de la API ListPlatformVersions.
metadata-operating_system_version
Opcional. Nombre del marco web utilizado por la plataforma (50 caracteres).
metadata-framework_version
Opcional. Nombre de la opción (100 caracteres). Puede definir hasta 50 opciones de configuración
personalizadas para que la plataforma las ofrezca a los usuarios.
option-def-description
Opcional. Valor predeterminado que se utiliza cuando el usuario no especifica ningún valor.
options_definitions:
- namespace: "aws:elasticbeanstalk:container:custom:application"
option_name: "NPM_START"
description: "Default application startup command"
default_value: "node application.js"
option-setting-namespace
Opcional. Nombre de la opción. Puede especificar hasta 50 opciones proporcionadas por Elastic
Beanstalk (p. 271).
option-setting-value
option_settings:
- namespace: "aws:elasticbeanstalk:application:environment"
43
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la plataforma personalizada
option_name: "TEST"
value: "This is a test"
Puede especificar etiquetas cuando cree una versión de la plataforma personalizada. En una versión
de la plataforma personalizada, puede añadir o eliminar etiquetas, y actualizar los valores de etiquetas
existentes. Puede añadir hasta 50 etiquetas a cada versión de la versión de la plataforma personalizada.
Con la AWS CLI u otros clientes basados en la API, añada etiquetas mediante el parámetro --tags en el
comando create-platform-version.
Si utiliza la CLI de EB para actualizar su versión de la plataforma personalizada, utilice eb tags (p. 658)
para añadir, actualizar, eliminar o enumerar etiquetas.
Por ejemplo, el siguiente comando muestra las etiquetas en una versión de la plataforma personalizada.
44
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la plataforma personalizada
Para obtener una lista de las opciones y más ejemplos, consulte eb tags (p. 658).
Con la AWS CLI u otros clientes basados en API, utilice el comando list-tags-for-resource para enumerar
las etiquetas de una versión de la plataforma personalizada.
Utilice el comando update-tags-for-resource para añadir, actualizar o eliminar etiquetas en una versión de
la plataforma personalizada.
Especifique las etiquetas que desea añadir y las que desea actualizar en el parámetro --tags-to-add
de update-tags-for-resource. Se añade una etiqueta no existente y se actualiza el valor de una etiqueta
existente.
Note
Para utilizar algunas de las CLI de EB y comandos de la AWS CLI con una versión de la
plataforma personalizada Elastic Beanstalk, necesita el ARN de la versión de la plataforma
personalizada. Puede recuperar el ARN mediante el siguiente comando.
Utilice la opción --filters para filtrar la salida por el nombre de la plataforma personalizada.
45
AWS Elastic Beanstalk Developer Guide
Tutoriales y ejemplos
La guía para desarrolladores de AWS Elastic Beanstalk contiene tutoriales para idiomas y marcos de
trabajo específicos. A medida que se publiquen, se irán agregando a esta lista tutoriales nuevos o
actualizados. Las actualizaciones más recientes aparecen en primer lugar.
Estos tutoriales están dirigidos a usuarios con un nivel intermedio y es posible que no contengan
instrucciones básicas, como el proceso de inscripción en AWS. Si es la primera vez que utiliza AWS
o Elastic Beanstalk, consulte el tutorial de introducción (p. 3) para crear el primer entorno de Elastic
Beanstalk.
• Ruby on Rails: Implementación de una aplicación de Rails en Elastic Beanstalk (p. 945)
• Ruby y Sinatra: Implementación de una aplicación de Sinatra en AWS Elastic Beanstalk (p. 951)
• Configuración de PHP 7 y MySQL HA: Implementación de una aplicación PHP de alta disponibilidad con
una base de datos externa de Amazon RDS en Elastic Beanstalk (p. 879)
• PHP 7 y Laravel: Implementación de una aplicación de Laravel en Elastic Beanstalk (p. 860)
• PHP 7 y CakePHP 3.2: Implementación de una aplicación de CakePHP en Elastic Beanstalk (p. 867)
• Configuración de PHP 7 y Drupal HA: Implementación de un sitio web de Drupal de alta disponibilidad
con una base de datos externa de Amazon RDS en Elastic Beanstalk (p. 899)
• Configuración de PHP 7 y WordPress HA: Implementación de un sitio web de WordPress de alta
disponibilidad con una base de datos externa de Amazon RDS en Elastic Beanstalk (p. 888)
• Configuración de Node.js con DynamoDB HA: Implementación de una aplicación Node.js con
DynamoDB en Elastic Beanstalk (p. 841)
• ASP.NET Core: Implementación de una aplicación de ASP.NET Core con AWS Elastic
Beanstalk (p. 778)
• Python y Flask 0.10: Implementación de una aplicación de Flask en AWS Elastic Beanstalk (p. 921)
• Python y Django 1.9: Implementación de una aplicación de Django en Elastic Beanstalk (p. 927)
• Node.js y Express 4: Implementación de una aplicación de Express en Elastic Beanstalk (p. 828)
• Docker, PHP y nginx: Entornos de Multicontainer Docker con la Consola de administración de
AWS (p. 685)
• .NET Framework (IIS y ASP.NET): Tutorial: Cómo implementar una aplicación de ejemplo .NET
mediante AWS Elastic Beanstalk (p. 770)
Puede descargar las aplicaciones de ejemplo que se utilizan en Elastic Beanstalk para crear un entorno sin
necesidad de proporcionar un paquete de código fuente a través de los siguientes enlaces:
46
AWS Elastic Beanstalk Developer Guide
Para consultar aplicaciones de ejemplo más complejas en las que se muestra el uso de otros marcos de
trabajo, bibliotecas y herramientas web que están disponibles como proyectos de código fuente en GitHub:
• Load Balanced WordPress (tutorial (p. 888)): archivos de configuración para instalar WordPress de
forma segura y ejecutarlo en un entorno de AWS Elastic Beanstalk con balanceo de carga.
• Load Balanced Drupal (tutorial (p. 899)): archivos de configuración e instrucciones para instalar Drupal
de forma segura y ejecutarlo en un entorno de AWS Elastic Beanstalk con balanceo de carga.
• Scorekeep: es una API web RESTful que utiliza el marco de Spring y &Javalong; a fin de ofrecer una
interfaz para la creación y administración de usuarios, sesiones y juegos. La API está empaquetada
con una aplicación web de Angular 1.5 que utiliza la API a través de HTTP. Incluye ramificaciones que
muestran la integración con Amazon Cognito, AWS X-Ray y Amazon Relational Database Service.
47
AWS Elastic Beanstalk Developer Guide
Administración y configuración
de aplicaciones de AWS Elastic
Beanstalk
El primer paso para usar Elastic Beanstalk es crear una aplicación que represente a la aplicación web de
AWS. En Elastic Beanstalk, una aplicación actúa como si fuera un contenedor del entorno que ejecuta la
aplicación web, así como las versiones del código fuente, las configuraciones guardadas, los registros y
otros artefactos de la aplicación web que se crean con Elastic Beanstalk.
48
AWS Elastic Beanstalk Developer Guide
Después de crear la aplicación, la consola le pedirá que cree un entorno para ella. Para obtener
información detallada sobre todas las opciones disponibles, consulte Creación de un entorno de AWS
Elastic Beanstalk (p. 88).
Cuando se elimina una aplicación, se terminan todos los entornos asociados, así como todas las
versiones y las configuraciones guardadas que pertenecen a la aplicación.
49
AWS Elastic Beanstalk Developer Guide
Consola de administración de la aplicación
Temas
• Consola de administración de la aplicación de AWS Elastic Beanstalk (p. 50)
• Administración de versiones de la aplicación (p. 54)
• Configuración del ciclo de vida de las versiones de la aplicación (p. 62)
• Creación del paquete de código fuente de una aplicación (p. 64)
• Etiquetado de recursos de aplicaciones de AWS Elastic Beanstalk (p. 72)
50
AWS Elastic Beanstalk Developer Guide
Consola de administración de la aplicación
Note
En la página Environments (Entornos), se muestra información general sobre todos los entornos
asociados con la aplicación.
51
AWS Elastic Beanstalk Developer Guide
Consola de administración de la aplicación
3. Elija un entorno por nombre para ir a la consola de administración del entorno (p. 78) que desea
configurar, monitorizar o administrar.
Seleccione Application Versions (Versiones de la aplicación) para ver una lista de versiones de la
aplicación.
52
AWS Elastic Beanstalk Developer Guide
Consola de administración de la aplicación
Aquí puede cargar nuevas versiones, implementar una versión existente en cualquiera de los
entornos de la aplicación o eliminar versiones antiguas. Consulte Administración de versiones de la
aplicación (p. 54) para obtener más información sobre las opciones de esta página.
4. Seleccione Saved Configurations (Configuraciones guardadas) para ver una lista de las
configuraciones guardadas en los entornos en ejecución. Una configuración guardada es una
colección de ajustes que se puede utilizar para restaurar la configuración de un entorno a un estado
anterior o crear un entorno con la misma configuración.
53
AWS Elastic Beanstalk Developer Guide
Administración de versiones de la aplicación
También puede cargar un paquete de código fuente sin implementarlo desde la consola de administración
de la aplicación (p. 50). Elastic Beanstalk almacena paquetes de código fuente en Amazon Simple
Storage Service (Amazon S3) y no los elimina automáticamente.
Puede aplicar etiquetas a una versión de la aplicación cuando la cree y editar etiquetas de las versiones
de la aplicación existentes. Para obtener más información, consulte Etiquetado de versiones de la
aplicación (p. 58).
54
AWS Elastic Beanstalk Developer Guide
Administración de versiones de la aplicación
5. Introduzca una etiqueta para esta versión en el campo Version label (Etiqueta de versión).
6. Elija Browse para especificar la ubicación del paquete de código fuente (p. 64).
Note
55
AWS Elastic Beanstalk Developer Guide
Administración de versiones de la aplicación
El archivo especificado está vinculado con la aplicación. Puede implementar la versión de la aplicación en
un entorno nuevo o existente.
Con el paso del tiempo, la aplicación puede acumular muchas versiones de la aplicación. Para ahorrar
espacio de almacenamiento y evitar que se alcance el límite de versiones de aplicación, puede configurar
Elastic Beanstalk para que las versiones antiguas se eliminen de forma automática.
Note
La eliminación de una versión de la aplicación no afecta a los entornos que ejecutan actualmente
esa versión.
56
AWS Elastic Beanstalk Developer Guide
Administración de versiones de la aplicación
5. (Opcional) Para dejar el paquete de código fuente de esta versión de la aplicación en el bucket de
Amazon Simple Storage Service (Amazon S3), desactive la casilla Delete versions from Amazon S3
(Eliminar versiones de S3).
57
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la aplicación
Si configura las opciones del ciclo de vida de la aplicación, estas se aplican cuando se crean nuevas
versiones de la aplicación. Por ejemplo, si establece un máximo de 25 versiones de la aplicación, Elastic
Beanstalk elimina la versión más antigua cuando se carga la versión número 26. Si configura una
antigüedad máxima de 90 días, las versiones con más de 90 días se eliminarán cuando se cargue una
nueva versión. Para obtener más información, consulte Configuración del ciclo de vida de las versiones de
la aplicación (p. 62).
Si decide no eliminar el paquete de código fuente de Amazon S3, Elastic Beanstalk elimina la versión de
sus registros. Sin embargo, el paquete de código fuente permanece en el bucket de almacenamiento de
Elastic Beanstalk (p. 559). El límite de versiones de la aplicación solo se aplica a las versiones cuyo
seguimiento realiza Elastic Beanstalk. Por lo tanto, puede eliminar versiones para no sobrepasar el límite,
pero mantener todos los paquetes de código fuente de Amazon S3.
Note
El límite de versiones de la aplicación no se aplica a los paquetes de código fuente, pero podría
seguir generando cargos de Amazon S3 y retener información personal más allá el momento
en que la necesite. Elastic Beanstalk nunca elimina los paquetes de código fuente de forma
automática. Debe eliminar los paquetes de código fuente cuando ya no los necesite.
Puede especificar etiquetas al crear una versión de la aplicación. En una versión de la aplicación, puede
añadir o eliminar etiquetas, y actualizar los valores de etiquetas existentes. Puede añadir hasta 50
etiquetas a cada versión de la versión de la aplicación.
58
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la aplicación
También puede utilizar la Consola de Elastic Beanstalk para cargar una versión de la aplicación (p. 54)
sin usarla inmediatamente en un entorno. Puede especificar las claves y los valores de las etiquetas en el
cuadro de diálogo Upload Application Version (Cargar versión de la aplicación).
59
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la aplicación
Con la AWS CLI u otros clientes basados en API, añada etiquetas con el parámetro --tags en el
comando create-application-version.
Cuando se utiliza la CLI de EB para crear o actualizar un entorno, se crea una versión de la aplicación a
partir del código que implemente. No hay un modo directo de etiquetar una versión de la aplicación durante
su creación a través de la CLI de EB. Consulte la siguiente sección para obtener más información acerca
de la adición de etiquetas a una versión de la aplicación existente.
60
AWS Elastic Beanstalk Developer Guide
Etiquetado de versiones de la aplicación
Para administrar las etiquetas de una versión de la aplicación mediante la Consola de Elastic
Beanstalk
El cuadro de diálogo Manage Tags (Administrar etiquetas) muestra la lista de etiquetas que se aplican
actualmente a la versión de la aplicación.
• Para añadir una etiqueta, escríbala en las casillas vacías de la parte inferior de la lista.
• Para actualizar la clave o el valor de una etiqueta, edite la casilla correspondiente en la fila de la
etiqueta.
• Para eliminar una etiqueta, elija junto a la casilla de valor de la etiqueta.
61
AWS Elastic Beanstalk Developer Guide
Ciclo de vida de las versiones
Si utiliza la CLI de EB para actualizar su versión de la aplicación, utilice eb tags (p. 658) para añadir,
actualizar, eliminar o enumerar etiquetas.
Por ejemplo, el siguiente comando muestra las etiquetas en una versión de la aplicación.
Para obtener una lista de las opciones y más ejemplos, consulte eb tags (p. 658).
Con la AWS CLI u otros clientes basados en API, utilice el comando list-tags-for-resource para enumerar
las etiquetas de una versión de la aplicación.
Utilice el comando update-tags-for-resource para añadir, actualizar o eliminar etiquetas en una versión de
la aplicación.
Especifique las etiquetas que desea añadir y las que desea actualizar en el parámetro --tags-to-add
de update-tags-for-resource. Se añade una etiqueta no existente y se actualiza el valor de una etiqueta
existente.
Note
Para utilizar algunas de las CLI de EB y comandos de la AWS CLI con una versión de la
aplicación de Elastic Beanstalk, necesita el ARN de la versión de la aplicación. Puede recuperar el
ARN mediante el siguiente comando.
62
AWS Elastic Beanstalk Developer Guide
Configuración de las opciones del ciclo
de vida de la aplicación en la consola
utiliza, acabará superando el límite de versiones de aplicación y no podrá crear nuevas versiones de dicha
aplicación.
Puede evitar que esto ocurra aplicando una política de ciclo de vida de versiones de la aplicación a sus
aplicaciones. Una política de ciclo de vida indica a Elastic Beanstalk que elimine las versiones de la
aplicación que sean antiguas o cuando el número total de versiones de una aplicación supere un número
especificado.
Elastic Beanstalk aplica la política de ciclo de vida de una aplicación cada vez que se crea una nueva
versión de la aplicación y elimina hasta 100 versiones cada vez que se aplica la política de ciclo de vida.
Elastic Beanstalk elimina las versiones anteriores después de crear la nueva versión, y la nueva versión no
computa para el número máximo de versiones definidas en la política.
Elastic Beanstalk no elimina las versiones de la aplicación que se están usando actualmente en un entorno
ni las versiones de la aplicación implementadas en entornos que se terminaron menos de diez semanas
antes de que se activara la política.
El límite de versiones de la aplicación se aplica a todas las aplicaciones de una región. Si tiene varias
aplicaciones, configure cada aplicación con la política de ciclo de vida correspondiente para evitar llegar al
límite. Por ejemplo, si tiene 10 aplicaciones en una región y el límite es de 1000 versiones de la aplicación,
considere la posibilidad de establecer una política de ciclo de vida con un límite de 99 versiones de la
aplicación para todas las aplicaciones, o establezca otros valores en cada aplicación, siempre y cuando
el total sea inferior a 1000 versiones de la aplicación. Elastic Beanstalk solo aplica la política si la versión
de la aplicación se crea correctamente, por lo que si ya ha alcanzado el límite, debe eliminar algunas
versiones manualmente antes de crear una nueva versión.
De forma predeterminada, Elastic Beanstalk deja el paquete de código fuente (p. 64) de la versión de
la aplicación en Amazon S3 para evitar que se pierdan datos. Puede eliminar el paquete de código fuente
para ahorrar espacio.
Puede definir la configuración del ciclo de vida a través de la CLI de Elastic Beanstalk y las API. Consulte
eb appversion (p. 613), CreateApplication (con el parámetro ResourceLifecycleConfig) y
UpdateApplicationResourceLifecycle para obtener información detallada.
63
AWS Elastic Beanstalk Developer Guide
Creación de un paquete de código fuente
5. Seleccione Enable en Lifecycle policy para habilitar la configuración del ciclo de vida.
6. Seleccione Set the application versions limit by total count o Set the application versions limit by age.
7. Si ha seleccionado Set the application versions limit by total count, escriba un valor de 1 en 1000 para
Application Versions para especificar el número máximo de versiones de la aplicación que se deben
conservar antes de eliminar las versiones anteriores.
8. Si ha seleccionado Set the application versions limit by age, especifique la antigüedad máxima en días
(de 1 a 180) de las versiones de la aplicación que se van a conservar.
9. En Retention, especifique si desea eliminar el paquete de código fuente de S3 cuando se elimine la
versión de la aplicación.
10. En Service rol, especifique el rol en el que se elimina la versión de la aplicación. Para incluir todos
los permisos necesarios para la eliminación de la versión, elija el rol de servicio de Elastic Beanstalk
predeterminado, denominada aws-elasticbeanstalk-service-role u otro rol de servicio
mediante las políticas de servicios administrados de Elastic Beanstalk. Para obtener más información,
consulte Administración de roles de servicio de Elastic Beanstalk (p. 491).
11. Seleccione Save para guardar la configuración del ciclo de vida de la aplicación.
64
AWS Elastic Beanstalk Developer Guide
Creación de un paquete de código
fuente desde la línea de comando
• Debe constar de un único archivo ZIP o WAR (puede incluir varios archivos WAR dentro del archivo ZIP).
• No puede superar los 512 MB.
• No puede incluir una carpeta principal o un directorio de nivel superior (sí puede incluir subdirectorios).
Si desea implementar una aplicación de trabajo que procese tareas periódicas en segundo plano, el
paquete de código fuente de la aplicación también debe incluir un archivo cron.yaml. Para obtener más
información, consulte Tareas periódicas (p. 168).
Secciones
• Creación de un paquete de código fuente desde la línea de comando (p. 65)
• Creación de un paquete de código fuente con Git (p. 65)
• Comprimir archivos en Mac OS X Finder o el Explorador de Windows (p. 66)
• Creación de un paquete de código fuente para una aplicación .NET (p. 70)
• Comprobación del paquete de código fuente (p. 71)
De este modo se garantiza que los archivos de configuración (p. 320) de Elastic Beanstalk y otros
archivos y carpetas que comiencen con un punto se incluyan en el archivo.
Para aplicaciones web de Tomcat, utilice jar para crear un archivo web.
Los comandos anteriores incluyen archivos ocultos que pueden aumentar el tamaño del paquete de
código fuente innecesariamente. Si desea más control, use un patrón de archivos más detallado o cree su
paquete de código fuente con Git (p. 65).
65
AWS Elastic Beanstalk Developer Guide
Comprimir archivos en Mac OS X
Finder o el Explorador de Windows
git archive solo incluye los archivos que se almacenan en git y excluye los archivos ignorados y los
archivos de git. Esto ayuda a mantener el tamaño más pequeño posible del paquete de código fuente. Para
obtener más información, vaya a la página del manual de git-archive.
La interfaz gráfica de usuario (GUI) de Mac OS X y los sistemas operativos basados en Linux
no muestran los archivos y carpetas cuyos nombres empiezan por punto (.). Utilice la línea
de comando en lugar de la GUI para comprimir la aplicación si el archivo ZIP debe incluir
una carpeta oculta; por ejemplo, .ebextensions. Si desea obtener información sobre los
procedimientos de línea de comando para crear un archivo ZIP en Mac OS X o un sistema
operativo basado en Linux, consulte Creación de un paquete de código fuente desde la línea de
comando (p. 65).
Example
Supongamos que tiene una carpeta de proyectos de Python llamada myapp que contiene los siguientes
archivos y subcarpetas:
myapplication.py
README.md
static/
static/css
static/css/styles.css
static/img
static/img/favicon.ico
static/img/logo.png
templates/
templates/base.html
templates/index.html
Tal y como se indicó anteriormente en la lista de requisitos, el paquete de código fuente no puede
comprimirse sin una carpeta principal, ya que su estructura al descomprimirse no incluye un directorio
de nivel superior adicional. En este ejemplo, no debería crearse ninguna carpeta myapp al descomprimir
los archivos (o, en la línea de comando, no debería agregarse ningún segmento myapp en las rutas de
archivo).
La estructura de este archivo de ejemplo se va a utilizar en todo el tema para ilustrar la compresión de
archivos.
1. Abra la carpeta de proyecto de nivel superior y seleccione todos los archivos y subcarpetas que
contiene. No seleccione la carpeta de nivel superior.
66
AWS Elastic Beanstalk Developer Guide
Comprimir archivos en Mac OS X
Finder o el Explorador de Windows
2. Haga clic con el botón derecho en los archivos seleccionados y seleccione Compress (Comprimir) X
items (elementos), donde X es el número de archivos y subcarpetas que se han seleccionado.
67
AWS Elastic Beanstalk Developer Guide
Comprimir archivos en Mac OS X
Finder o el Explorador de Windows
1. Abra la carpeta de proyecto de nivel superior y seleccione todos los archivos y subcarpetas que
contiene. No seleccione la carpeta de nivel superior.
68
AWS Elastic Beanstalk Developer Guide
Comprimir archivos en Mac OS X
Finder o el Explorador de Windows
2. Haga clic con el botón derecho en los archivos seleccionados, seleccione Enviar a y haga clic en
Carpeta comprimida (en zip).
69
AWS Elastic Beanstalk Developer Guide
Creación de un paquete de código
fuente para una aplicación .NET
Si necesita crear manualmente un paquete de código fuente para la aplicación .NET, no basta con crear un
archivo ZIP que contenga el directorio del proyecto. Debe crear un paquete de implementación web para
el proyecto que sea adecuado para implementarlo en Elastic Beanstalk. Existen varios métodos que puede
utilizar para crear un paquete de implementación:
• Puede crear el paquete de implementación utilizando el asistente de Publicación web de Visual Studio.
Para obtener más información, consulte Cómo: Crear un paquete de implementación web en Visual
Studio.
70
AWS Elastic Beanstalk Developer Guide
Comprobación del paquete de código fuente
Important
Al crear el paquete de implementación web, debe iniciar el nombre del sitio con Default Web
Site.
• Se tiene un proyecto .NET, puede crear el paquete de implementación utilizando el comando msbuild, tal
y como se muestra en el siguiente ejemplo.
Important
• Si tiene un proyecto de sitio web, puede utilizar la herramienta IIS Web Deploy para crear el paquete de
implementación. Para obtener más información, consulte Packaging and Restoring a Web site.
Important
~/workspace/source-bundle/
|-- .ebextensions
| |-- environmentvariables.config
| `-- healthcheckurl.config
|-- AspNetCore101HelloWorld.zip
|-- AspNetCoreHelloWorld.zip
|-- aws-windows-deployment-manifest.json
`-- VS2015AspNetWebApiApp.zip
1. Abra una ventana del terminal (Mac OS X) o conéctese al servidor de Linux. Vaya al directorio que
contiene el paquete de código fuente.
2. Utilice el comando unzip o tar xf para descomprimir el archivo.
3. Asegúrese de que los archivos descomprimidos están en la misma carpeta que el propio archivo y no
en una nueva carpeta o directorio de nivel superior.
Note
Si utiliza Mac OS X Finder para descomprimir el archivo, se creará una nueva carpeta de
nivel superior sin importar cómo esté estructurado el propio archivo. Para obtener mejores
resultados, utilice la línea de comandos.
71
AWS Elastic Beanstalk Developer Guide
Etiquetado de recursos
1. Descargue o instale un programa que permita extraer archivos comprimidos a través de la línea de
comandos. Por ejemplo, puede descargar el programa gratuito unzip.exe de http://stahlforce.com/dev/
index.php?tool=zipunzip.
2. Si es necesario, copie el archivo ejecutable en el directorio que contiene el paquete de código fuente.
Si ha instalado una herramienta para todo el sistema, puede omitir este paso.
3. Descomprima el archivo utilizando el comando apropiado. Si ha descargado unzip.exe con el enlace
del paso 1, el comando será unzip <archive-name>.
4. Asegúrese de que los archivos descomprimidos están en la misma carpeta que el propio archivo y no
en una nueva carpeta o directorio de nivel superior.
A continuación se muestran algunas formas de uso de etiquetas con recursos de Elastic Beanstalk:
• Etapas de implementación: identifique los recursos asociados con diferentes etapas de su aplicación,
como la de desarrollo, beta y producción.
• Asignación de costos: utilice los informes de asignación de costos para realizar un seguimiento del
uso de los recursos de AWS asociados con varias cuentas de gastos. Los informes incluyen recursos
etiquetados y sin etiquetar, y agrupan los costos en función de las etiquetas. Para obtener información
sobre cómo utilizar los informes de asignación de costos, consulte Uso de etiquetas de asignación de
costos para informes de facturación personalizados en la Guía del usuario de Administración de costos y
facturación de AWS.
• Control de acceso: utilice las etiquetas para administrar los permisos a las solicitudes y los recursos.
Por ejemplo, un usuario que solo puede crear y administrar entornos beta solo debe tener acceso a los
recursos de la etapa beta. Para obtener más información, consulte Uso de etiquetas para controlar el
acceso a recursos de Elastic Beanstalk (p. 535).
Puede añadir hasta 50 etiquetas a cada recurso. Los entornos son ligeramente diferentes: Elastic
Beanstalk añade tres etiquetas del sistema predeterminadas a los entornos, y no puede editar o eliminar
esas etiquetas. Además de las etiquetas predeterminadas, puede agregar hasta 47 etiquetas adicionales a
cada entorno.
• Las claves y los valores pueden contener letras, números, espacios en blanco y los siguientes símbolos:
_ . : / = + - @
• Las claves pueden contener un máximo de 127 caracteres. Los valores pueden contener un máximo de
255 caracteres.
Note
Estos límites de longitud son para los caracteres Unicode en UTF-8. Para otras codificaciones
multibyte, los límites podrían ser inferiores.
• Las claves distinguen entre mayúsculas y minúsculas.
72
AWS Elastic Beanstalk Developer Guide
Recursos que se pueden etiquetar
Etiquetado de aplicaciones
Puede aplicar etiquetas a sus aplicaciones de AWS Elastic Beanstalk. Las etiquetas son pares de clave-
valor asociadas a los recursos de AWS. Para obtener información acerca del etiquetado de recursos
de Elastic Beanstalk, casos de uso, limitaciones en las claves y valores de las etiquetas y los tipos de
recursos admitidos, consulte Etiquetado de recursos de aplicaciones de AWS Elastic Beanstalk (p. 72).
Puede especificar etiquetas al crear una aplicación. En una aplicación existente, puede añadir o eliminar
etiquetas, y actualizar los valores de etiquetas existentes. Puede añadir hasta 50 etiquetas a cada
aplicación.
73
AWS Elastic Beanstalk Developer Guide
Etiquetado de aplicaciones
Si utiliza la CLI de EB para crear una aplicación, use la opción --tags con eb init (p. 633) para añadir
etiquetas.
Con la AWS CLI u otros clientes basados en API, añada etiquetas con el parámetro --tags en el
comando create-application.
74
AWS Elastic Beanstalk Developer Guide
Etiquetado de aplicaciones
El cuadro de diálogo Manage Tags (Administrar etiquetas) muestra la lista de etiquetas que se aplican
actualmente a la aplicación.
• Para añadir una etiqueta, escríbala en las casillas vacías de la parte inferior de la lista.
• Para actualizar la clave o el valor de una etiqueta, edite la casilla correspondiente en la fila de la
etiqueta.
• Para eliminar una etiqueta, elija junto a la casilla de valor de la etiqueta.
5. Seleccione Apply (Aplicar).
75
AWS Elastic Beanstalk Developer Guide
Etiquetado de aplicaciones
Si utiliza la CLI de EB para actualizar su aplicación, utilice eb tags (p. 658) para añadir, actualizar,
eliminar o enumerar etiquetas.
Para obtener una lista de las opciones y más ejemplos, consulte eb tags (p. 658).
Con la AWS CLI u otros clientes basados en API, utilice el comando list-tags-for-resource para enumerar
las etiquetas de una aplicación.
Utilice el comando update-tags-for-resource para añadir, actualizar o eliminar etiquetas en una aplicación.
Especifique las etiquetas que desea añadir y las que desea actualizar en el parámetro --tags-to-add
de update-tags-for-resource. Se añade una etiqueta no existente y se actualiza el valor de una etiqueta
existente.
Note
Para utilizar algunas de las CLI de EB y comandos de la AWS CLI con una aplicación de Elastic
Beanstalk, necesita el ARN de la aplicación. Puede recuperar el ARN mediante el siguiente
comando.
76
AWS Elastic Beanstalk Developer Guide
Administración de entornos
AWS Elastic Beanstalk permite crear fácilmente nuevos entornos para su aplicación. Puede crear y
administrar entornos distintos para desarrollo, pruebas y uso en producción, y puede implementar cualquier
versión (p. 130) de la aplicación en cualquier entorno. Los entornos pueden mantenerse durante mucho
tiempo o temporalmente. Cuando termine de usar un entorno, puede guardar su configuración para volver
a crearlo más adelante.
Cuando desarrolle su aplicación, posiblemente la implementará en varios entornos diferentes para fines
distintos. Elastic Beanstalk le permite configurar cómo se realizan las implementaciones (p. 132). Puede
implementarla en todas las instancias de su entorno simultáneamente o dividir una implementación en
lotes con implementaciones continuas.
Los cambios de configuración (p. 140) se procesan por separado de las implementaciones y tienen su
propio alcance. Por ejemplo, si cambia el tipo de las instancias EC2 que ejecutan su aplicación, deben
reemplazarse todas las instancias. Por otra parte, si modifica la configuración del balanceador de carga del
entorno, ese cambio se puede realizar in situ sin que se interrumpa el servicio ni se reduzca la capacidad.
También puede aplicar cambios de configuración que modifiquen las instancias de su entorno en lotes con
actualizaciones de configuración continuas (p. 141).
Note
Modifique los recursos de su entorno solo mediante Elastic Beanstalk. Si modifica los recursos
mediante la consola de otro servicio, los comandos de la CLI o los SDK, Elastic Beanstalk
no podrá controlar de forma precisa el estado de los recursos y usted no podrá guardar la
configuración ni volver a crear de forma fiable el entorno. Los cambios fuera de banda también
causan problemas cuando se termina un entorno.
Cuando lanza un entorno, elige una versión de plataforma. Actualizamos las plataformas de forma
periódica con nuevas versiones para ofrecer mejoras de rendimiento y nuevas características. Puede
actualizar su entorno a la última versión de la plataforma (p. 149) en cualquier momento.
A medida que su aplicación se vaya haciendo más compleja, puede dividirla en varios componentes que
se ejecuten en un entorno distinto. Para las cargas de trabajo de larga ejecución, puede lanzar entornos de
trabajo (p. 165) que procesen los trabajos de una cola de Amazon Simple Queue Service (Amazon SQS).
Temas
• La consola de administración del entorno de AWS Elastic Beanstalk (p. 78)
• Creación de un entorno de AWS Elastic Beanstalk (p. 88)
• Implementación de aplicaciones en entornos de AWS Elastic Beanstalk (p. 130)
• Cambios de configuración (p. 140)
• Actualización de la versión de la plataforma del entorno de Elastic Beanstalk (p. 149)
• Cancelación de actualizaciones de configuración del entorno e implementaciones de
aplicaciones (p. 160)
• Volver a crear entornos de AWS Elastic Beanstalk (p. 161)
• Tipos de entornos (p. 163)
• Entornos de trabajo de AWS Elastic Beanstalk (p. 165)
• Creación de enlaces entre entornos de AWS Elastic Beanstalk (p. 172)
77
AWS Elastic Beanstalk Developer Guide
Consola de administración del entorno
Temas
• Panel del entorno (p. 79)
• Acciones de administración del entorno (p. 80)
• Configuración (p. 82)
• Registros (p. 83)
• Estado (p. 84)
• Monitorización (p. 85)
• Alarmas (p. 85)
• Managed Updates (p. 86)
• Eventos (p. 86)
• Etiquetas (p. 87)
78
AWS Elastic Beanstalk Developer Guide
Panel del entorno
Para tener acceso a la consola de administración del entorno, abra la Consola de Elastic Beanstalk en
su región y haga clic en el nombre de un entorno en ejecución. Los entornos se muestran con iconos de
colores bajo su aplicación asociada. El color (verde, gris o rojo) indica el estado del entorno.
En la parte superior de la consola de entorno, se muestra el nombre de la aplicación, seguido del nombre
del entorno y del nombre DNS público de la aplicación en ejecución.
En el panel de administración del entorno se incluye información general, que muestra el estado del
entorno, la versión de la aplicación, información sobre la plataforma en uso y como una lista de los últimos
eventos generados por el entorno.
Elija Refresh (Actualizar) para actualizar la información que se muestra. La descripción general contiene la
siguiente información y opciones.
Estado
El estado general del entorno. Con Informes y monitorización de estado mejorados (p. 416) habilitado,
el estado del entorno se muestra con un botón Causes (Causas) en el que puede hacer clic para ver más
información sobre el estado actual.
Para los entornos Informes de estado básicos (p. 413), se muestra un enlace a la consola de
monitorización (p. 409).
Running Version
El nombre de la versión de la aplicación que se ejecuta en su entorno. Elija Upload and Deploy (Cargar e
implementar) para cargar un paquete de código fuente (p. 64) e implementarlo en el entorno. Esta opción
crea una nueva versión de la aplicación.
Configuración
Muestra la arquitectura, la versión del sistema operativo y la plataforma que se ejecuta en el entorno. Elija
Change (Cambiar) para seleccionar una configuración diferente. Esta opción solo está disponible si existe
otra versión compatible de la plataforma. Para que se considere compatible, la arquitectura, el sistema
operativo, la plataforma y el nombre deben ser los mismos.
Cuando se actualiza la versión de la plataforma con esta opción se reemplazan las instancias que se
ejecutan en su entorno por nuevas instancias.
79
AWS Elastic Beanstalk Developer Guide
Acciones de administración del entorno
Note
La primera vez que se utiliza Elastic Beanstalk, solo está disponible la última versión de cada
plataforma. El botón Change (Cambiar) está disponible por primera vez cuando se publica una
nueva versión del sistema operativo o la plataforma. Después de actualizar, tiene la opción de
cambiar a la versión anterior.
Recent Events
La sección Recent Events del panel de administración del entorno muestra los últimos eventos emitidos
por su entorno. Esta lista se actualiza en tiempo real cuando se actualiza el entorno.
Elija Show All (Mostrar todo) para abrir el menú Events (Eventos).
80
AWS Elastic Beanstalk Developer Guide
Acciones de administración del entorno
Load Configuration
Cargue una configuración guardada con anterioridad. Las configuraciones se guardan en su aplicación y
cualquier entorno asociado puede cargarlas. Si ha realizado cambios en la configuración de su entorno,
puede cargar una configuración guardada para deshacer los cambios. También puede cargar una
configuración que haya guardado desde otro entorno en el que se ejecuta la misma aplicación para
propagar los cambios de configuración entre ellos.
Save Configuration
Guarde la configuración actual del entorno en su aplicación. Antes de realizar cambios en la configuración
del entorno, guarde la configuración actual para que pueda restaurarla más adelante si es necesario.
También puede aplicar una configuración guardada cuando lanza un nuevo entorno.
Clone Environment
Lance un nuevo entorno con la misma configuración que el entorno que se está ejecutando actualmente.
Rebuild Environment
Termina todos los recursos del entorno de ejecución y crea un nuevo entorno con la misma configuración.
Esta operación tarda varios minutos, como cuando se implementa un nuevo entorno desde el principio.
Todas las instancias de Amazon RDS que se ejecutan en la capa de datos del entorno se eliminan durante
la reconstrucción de un entorno. Si necesita los datos, cree una instantánea. Puede crear una instantánea
manualmente en la consola de RDS o configurar la política de eliminación de la capa de datos para crear
automáticamente una instantánea antes de eliminar la instancia (esta es la configuración predeterminada
cuando se crea una capa de datos).
81
AWS Elastic Beanstalk Developer Guide
Configuración
Terminate Environment
Termina todos los recursos del entorno de ejecución y elimina el entorno de la aplicación. Si tiene una
instancia de RDS ejecutándose en una capa de datos y necesita conservar los datos, asegúrese de
crear una instantánea antes de terminar el entorno. Puede crear una instantánea manualmente en la
consola de RDS o configurar la política de eliminación de la capa de datos para crear automáticamente
una instantánea antes de eliminar la instancia (esta es la configuración predeterminada cuando se crea
una capa de datos).
Restore Environment
Si el entorno se ha terminado en la última hora, puede restablecerlo desde esta página. Al cabo de una
hora, puede restaurarlo desde la página de información general de la aplicación (p. 162).
Configuración
La página Configuration overview (Información general de configuración) muestra la configuración actual
del entorno y sus recursos, incluida la configuración de las instancias Amazon EC2, el balanceador
de carga, las notificaciones y la monitorización de estado. Utilice la configuración de esta página para
personalizar el comportamiento de su entorno durante las implementaciones, habilitar características
adicionales y modificar el tipo de instancia y otros ajustes que eligió durante la creación del entorno.
82
AWS Elastic Beanstalk Developer Guide
Registros
Para obtener más información, consulte Configuración del entorno de AWS Elastic Beanstalk (p. 174).
Registros
La página Logs (Registros) le permite recuperar los registros de las instancias EC2 en su entorno. Cuando
solicita registros, Elastic Beanstalk envía un comando a las instancias, que cargan los registros en su
bucket de almacenamiento de Elastic Beanstalk en Amazon S3. Cuando solicita registros en esta página,
Elastic Beanstalk los elimina automáticamente de Amazon S3 después de 15 minutos.
También puede configurar las instancias de su entorno para que carguen los logs en Amazon S3 para su
almacenamiento permanente una vez que hayan sido rotados localmente.
83
AWS Elastic Beanstalk Developer Guide
Estado
Para obtener más información, consulte Consulta de los registros desde las instancias de Amazon EC2 en
su entorno de Elastic Beanstalk (p. 457).
Estado
Si se ha habilitado la monitorización de estado mejorada, la página Enhanced Health Overview
(Información general sobre estado mejorado) muestra información de estado en directo de cada instancia
del entorno. La monitorización de estado mejorada permite a Elastic Beanstalk monitorizar de cerca los
recursos del entorno para que pueda evaluar el estado de la aplicación con mayor precisión.
Cuando se habilita la monitorización de estado mejorada, esta página muestra información sobre las
solicitudes atendidas por las instancias del entorno y las métricas del sistema operativo, incluida la
latencia, la carga y el uso de la CPU.
Para obtener más información, consulte Informes y monitorización de estado mejorados (p. 416).
84
AWS Elastic Beanstalk Developer Guide
Monitorización
Monitorización
La página Monitoring (Monitorización) muestra información general sobre el estado del entorno. Esta
información incluye el conjunto predeterminado de métricas que proporcionan Elastic Load Balancing y
Amazon EC2, así como gráficos que muestran cómo ha cambiado el estado del entorno a lo largo del
tiempo. Puede utilizar las opciones de esta página para configurar gráficos adicionales para las métricas
específicas de recursos y añadir alarmas para cualquier métrica admitida en el sistema de informes de
estado en uso.
Para obtener más información, consulte Monitorización del estado del entorno en la consola de
administración de AWS (p. 409).
Alarmas
La página Existing Alarms (Alarmas existentes) muestra información sobre las alarmas que ha configurado
en el entorno. Puede utilizar las opciones de esta página para modificar o eliminar alarmas.
85
AWS Elastic Beanstalk Developer Guide
Managed Updates
Managed Updates
La página Managed Updates (Actualizaciones administradas) muestra información sobre las
actualizaciones de plataforma administradas próximas y completadas, así como sobre la sustitución de
instancias. Estas características le permiten configurar su entorno para actualizar automáticamente a la
última versión de la plataforma durante el período de mantenimiento semanal que usted elija.
Entre las versiones de la plataforma, puede elegir que su entorno reemplace todas sus instancias Amazon
EC2 durante el periodo de mantenimiento. Esto puede ayudar a aliviar los problemas que se producen
cuando su aplicación se ejecuta durante periodos de tiempo prolongados.
Para obtener más información, consulte Actualizaciones de plataforma administradas (p. 154).
Eventos
La página Events (Eventos) muestra la secuencia de eventos de su entorno. Elastic Beanstalk muestra
mensajes de eventos siempre que interactúa con el entorno y cuando se crea o modifica algún recurso del
entorno.
86
AWS Elastic Beanstalk Developer Guide
Etiquetas
Para obtener más información, consulte Consultar la secuencia de eventos de un entorno de Elastic
Beanstalk (p. 454).
Etiquetas
La página Tags muestra las etiquetas que aplicó al entorno cuando lo creó. Estas etiquetas se aplican a
todos los recursos que Elastic Beanstalk crea para respaldar su aplicación.
87
AWS Elastic Beanstalk Developer Guide
Creación de entornos
Para obtener más información, consulte Etiquetado de los recursos del entorno de Elastic
Beanstalk (p. 233).
Para obtener instrucciones sobre cómo crear y administrar entornos con la CLI de EB, consulte
Administración de entornos de Elastic Beanstalk con la CLI de EB (p. 590).
El asistente Create New Environment (Crear nuevo entorno) de la Consola de administración de AWS le
guía paso a paso por el proceso de creación de un entorno con una serie de opciones para configurar los
recursos que Elastic Beanstalk implementa en su nombre. Si no cuenta con experiencia, puede utilizar los
valores predeterminados para muchas de estas opciones sin problema.
Note
Siga este procedimiento para lanzar un nuevo entorno en el que se ejecute la aplicación predeterminada.
Estos pasos se han simplificado para poner en marcha rápidamente su entorno. Consulte El asistente de
creación de nuevo entorno (p. 90) para obtener instrucciones más detalladas con descripciones de
todas las opciones disponibles.
4. Elija la capa del entorno (p. 15) Web server environment (Entorno de servidor web) o Worker
environment (Entorno de trabajo). Una vez creado, no se puede cambiar la capa del entorno.
Note
La plataforma .NET en Windows Server (p. 758) no admite la capa del entorno de trabajo.
88
AWS Elastic Beanstalk Developer Guide
Creación de entornos
5. Elija un valor en Platform (Plataforma) que se corresponda con el lenguaje utilizado en la aplicación.
Note
Elastic Beanstalk admite varias versiones (p. 32) para la mayoría de las plataformas que
se indican. De forma predeterminada, la consola selecciona la última versión del lenguaje,
el contenedor web o el marco compatible con Elastic Beanstalk (p. 32). Si su aplicación
necesita una versión anterior, elija Configure more options (Configurar más opciones), como
se describe en el paso 7.
6. En App code (Código de aplicación), seleccione Sample application (Aplicación de muestra).
7. Para personalizar aún más el entorno, elija Configure more options (Configurar más opciones). Solo
puede establecer las siguientes opciones durante la creación del entorno:
• Environment name
• Nombre de dominio
• Versión de la plataforma (configuración)
• VPC
• datos y búsqueda
Puede modificar los siguientes ajustes después de crear el entorno, pero requieren que se
aprovisionen nuevas instancias u otros recursos, lo que puede llevar algún tiempo:
• Tipo de instancia, volumen raíz, par de claves y rol de AWS Identity and Access Management (IAM)
• Base de datos interna de Amazon RDS
• Balanceador de carga
Para obtener más información sobre los ajustes disponibles, consulte El asistente de creación de
nuevo entorno (p. 90).
8. Seleccione Create environment (Crear entorno).
Mientras Elastic Beanstalk crea su entorno, se le redirigirá a La consola de administración del entorno de
AWS Elastic Beanstalk (p. 78). Una vez que el estado del entorno pase a verde, haga clic en la URL
junto al nombre del entorno para ver la aplicación en ejecución. Esta URL es, por lo general, accesible
desde Internet, a menos que configure su entorno para utilizar una VPC personalizada con un balanceador
de carga interno (p. 108).
89
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Temas
• El asistente de creación de nuevo entorno (p. 90)
• Clonación de un entorno de Elastic Beanstalk (p. 114)
• Terminación de un entorno de Elastic Beanstalk (p. 118)
• Creación de entornos de Elastic Beanstalk con la CLI de AWS (p. 120)
• Creación de entornos de Elastic Beanstalk con la API (p. 121)
• Construcción de una URL de lanzamiento inmediato (p. 124)
• Creación y actualización de grupos de entornos de AWS Elastic Beanstalk (p. 128)
En este tema se describe el asistente Create New Environment (Crear nuevo entorno) y las formas en las
que puede utilizarlo para configurar el entorno que desea crear.
90
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Plataformas admitidas
• Plataformas personalizadas
Plataforma compatible
En la mayoría de los casos utilizará una plataforma Elastic Beanstalk admitida para su nuevo entorno.
Cuando se inicie el asistente de nuevo entorno, seleccione la opción Preconfigured platform de forma
predeterminada, tal y como se muestra en la siguiente captura de pantalla.
Desplácese por la lista, seleccione la plataforma admitida en la que se basa su entorno y, a continuación,
elija Create environment (Crear entorno).
Plataforma personalizada
Si una plataforma estándar no satisface sus necesidades, puede crear un nuevo entorno a partir de una
plataforma personalizada. Para especificar una plataforma personalizada, elija la opción Custom platform
(Plataforma personalizada). Si no hay plataformas personalizadas disponibles, esta opción aparece
atenuada.
91
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Una vez que haya seleccionado la plataforma desde la que va a crear el nuevo entorno, también
puede cambiar la versión de la plataforma. Elija Configure more options (Configurar más opciones) y, a
continuación, Change platform version (Cambiar versión de la plataforma). Cuando aparezca la página
Choose a platform version (Elegir una versión de plataforma), seleccione la versión que va a usar para su
nuevo entorno y, a continuación, elija Save (Guardar).
92
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Puede utilizar la aplicación de ejemplo que Elastic Beanstalk proporciona para cada plataforma.
• Puede utilizar el código que ya implementó en Elastic Beanstalk. Elija Existing version (Versión
existente) y la aplicación en la sección Application code (Código de aplicación).
• Puede cargar código nuevo. Seleccione Upload your code (Cargar el código) y, a continuación, elija
Upload (Cargar). Puede cargar código de aplicación nuevo de un archivo local, o puede especificar la
URL del bucket de Amazon S3 que contiene el código de la aplicación.
Note
Cuando elige cargar nuevo código, también puede proporcionar etiquetas que asociar con el código.
Para obtener más información acerca del etiquetado, consulte Etiquetado de los recursos del entorno de
Elastic Beanstalk (p. 233).
93
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Ahora elija Create environment (Crear entorno) para crear el nuevo entorno. Elija Configure more options
(Configurar más opciones) para tener acceso a cambios de configuración adicionales, que se describen en
las secciones siguientes.
94
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
El modelo preestablecido High availability (Alta disponibilidad) incluye un balanceador de carga, que no
incluye el modelo preestablecido Low cost (Bajo costo). Seleccione esta opción si desea disponer de un
entorno con balanceo de carga que pueda ejecutar varias instancias a fin de ofrecer una alta disponibilidad
y capacidad de ampliación en respuesta a la carga.
El tercer modelo preestablecido Custom configuration, elimina todos los valores recomendados, excepto
la configuración del rol, y utiliza los valores predeterminados de la API. Seleccione esta opción si va
a implementar un paquete de código fuente con archivos de configuración (p. 320) que establecen
opciones de configuración. El modelo Custom configuration (Configuración personalizada) también se
selecciona automáticamente si modifica los modelo de configuración preestablecidos Low cost (Bajo costo)
o High availability (Alta disponibilidad).
Personalización de la configuración
Además de (o en lugar de) elegir un modelo de configuración preestablecido, puede ajustar las opciones
de configuración (p. 252) del entorno. Si elige Configure more options (Configurar más opciones),
el asistente muestra varias categorías de configuración. Cada categoría de configuración muestra un
resumen de valores para un grupo de opciones de configuración. Elija Modify (Modificar) para editar este
grupo de opciones. En el siguiente ejemplo se muestra la categoría de configuración Capacity (Capacidad).
95
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Categorías de configuración
• Configuración del software (p. 96)
• Instancias (p. 98)
• Capacidad (p. 99)
• Balanceador de carga (p. 102)
• Actualizaciones e implementaciones continuas (p. 102)
• Seguridad (p. 105)
• Monitorización (p. 106)
• Notificaciones (p. 107)
• Red (p. 108)
• Base de datos (p. 111)
• Etiquetas (p. 113)
• Detalles del entorno de trabajo (p. 113)
96
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
97
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• AWS X-Ray: habilite X-Ray daemon (Demonio de X-Ray) para ejecutar el demonio de AWS X-
Ray (p. 240) para la depuración.
• S3 log storage (Almacenamiento de registros de S3): habilite Rotate registros (Rotar registros) para
cargar los registros rotados de las instancias del entorno en el bucket de almacenamiento de Elastic
Beanstalk en Amazon S3.
• Instance log streaming to CloudWatch Logs (Streaming de registros de instancia a CloudWatch Logs):
habilite Log streaming (Streaming de registros) para realizar el streaming de registros desde las
instancias del entorno a Amazon CloudWatch Logs (p. 468).
• Environment properties (Propiedades de entorno): establezca propiedades de entorno (p. 236) que se
pasan a la aplicación en la instancia como variables de entorno.
La forma en que se pasan las propiedades a las aplicaciones varía en función de la plataforma. En general,
las propiedades no están visibles si se conecta a una instancia y ejecuta env.
Instancias
Configure las instancias Amazon EC2 que sirven las solicitudes de su entorno.
• Instance type (Tipo de instancia): seleccione un servidor con las características más adecuadas para su
aplicación (entre ellas, el tamaño de la memoria y la potencia de la CPU).
98
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Para obtener más información sobre los tipos de instancias Amazon EC2 que están disponibles para el
entorno de Elastic Beanstalk, consulte Familias y tipos de instancias en la Guía del usuario de Amazon
EC2 para instancias de Linux.
• AMI ID (ID de AMI): si ha creado una AMI personalizada (p. 370), especifique el ID de AMI
personalizado que va a usar en las instancias.
• Root volume (Volumen raíz): especifique el tipo, el tamaño y las operaciones de entrada/salida por
segundo (IOPS) de su volumen raíz.
• Root volume type (Tipo de volumen raíz): en la lista de tipos de volúmenes de almacenamiento
proporcionados por Amazon EBS, elija el tipo que va a asociar a las instancias Amazon EC2 de su
entorno de Elastic Beanstalk. Seleccione un tipo de volumen que se ajuste a sus necesidades de
desempeño y precio. Para obtener más información, consulte Tipos de volumen de Amazon EBS y
Detalles del producto Amazon EBS.
• Size (Tamaño): defina el tamaño del volumen de almacenamiento. Los volúmenes magnéticos pueden
tener un tamaño de entre 8 GiB y 1024 GiB, mientras que los volúmenes SSD puede tener entre
10 GiB y 16 384 GiB. Si selecciona Provisioned IOPS (SSD) como el tipo de volumen raíz para sus
instancias, debe especificar el valor que desee para el tamaño del volumen raíz. En el caso de otros
volúmenes raíz, si no especifica su propio valor, Elastic Beanstalk utilizará el valor predeterminado
para el tipo de volumen de almacenamiento.
• IOPS: especifique las operaciones de entrada/salida por segundo que desee. Si ha seleccionado
Provisioned IOPS (SSD) como el tipo de volumen raíz, debe especificar un valor de IOPS. El valor
mínimo es 100 y el máximo, 4000. La relación máxima de IOPS para el tamaño de volumen es de 30 a
1. Por ejemplo, un volumen con 3000 IOPS debe tener al menos 100 GiB.
Capacidad
Configure la capacidad de cómputo de su entorno y las opciones del grupo de Auto Scaling para optimizar
el número de instancias que se van a usar.
99
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Environment type: elija Load balanced para ejecutar las instancias Amazon EC2 de su entorno detrás
de un balanceador de carga, o Single instance (Instancia única) para ejecutar una instancia sin un
balanceador de carga.
Warning
Un entorno de una sola instancia no está preparado para producción. Si la instancia se vuelve
inestable durante la implementación o Elastic Beanstalk termina y reinicia la instancia durante
una actualización de la configuración, es posible que la aplicación no esté disponible durante
algún tiempo. Utilice entornos de una sola instancia para desarrollo, pruebas o ensayos. Utilice
entornos con balanceo de carga para producción.
• Availability Zones (Zonas de disponibilidad): restrinja el número de zonas de disponibilidad que se usan
para las instancias.
• Instances (Instancias): defina el número mínimo y máximo de instancias que se van a ejecutar.
• Placement (Ubicación): elija zonas de disponibilidad que deban tener instancias en todo momento. Si
asigna zonas de disponibilidad aquí, el número mínimo de instancias debe ser al menos el número de
zonas de disponibilidad que elija.
Un entorno con balanceo de carga puede ejecutar varias instancias a fin de ofrecer un alto nivel de
disponibilidad y evitar el tiempo de inactividad durante las actualizaciones de configuración y las
implementaciones. En un entorno con balanceo de carga, el nombre de dominio se asigna al balanceador
de carga. En un entorno de una sola instancia, se asigna a una dirección IP elástica de la instancia.
Un desencadenador de escalado es una alarma de Amazon CloudWatch que permite a Amazon EC2 Auto
Scaling saber cuándo escalar el número de instancias del entorno. De forma predeterminada, su entorno
incluye dos disparadores: uno para ampliar el número de instancias y otro para reducirlo.
100
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Metric (Métrica): elija la métrica que la alarma monitoriza para identificar las ocasiones en las que haya
un número demasiado reducido o demasiado elevado de instancias en ejecución para la cantidad de
tráfico que recibe la aplicación.
• Statistic (Estadística): elija cómo se interpreta la métrica. Las métricas se pueden medir como un
promedio de todas las instancias, el valor máximo o mínimo detectado o un valor de suma de las cifras
emitidas por todas las instancias.
• Unit (Unidad): especifique la unidad de medida de los valores de los umbrales superior e inferior.
• Period (Periodo): especifique la cantidad de tiempo entre cada evaluación de la métrica.
• Breach duration (Duración de la interrupción): especifique la cantidad de tiempo que una métrica puede
alcanzar o superar un umbral antes de que se active la alarma. Este valor debe ser un múltiplo del valor
de Period (periodo). Por ejemplo, con un periodo de 1 minuto y una duración de la interrupción de 10
minutos, el umbral debe superar 10 evaluaciones consecutivas para que se active una operación de
escalado.
• Upper threshold (Umbral superior): especifique el valor mínimo que una estadística debe tener para que
se considere una infracción.
101
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Lower threshold (Umbral inferior): especifique el valor máximo que una estadística debe tener para que
se considere una infracción.
Para obtener más información sobre las métricas y alarmas de CloudWatch, consulte Conceptos de
Amazon CloudWatchen la Guía del usuario de Amazon CloudWatch.
Balanceador de carga
En un entorno con balanceo de carga, el balanceador de carga del entorno es el punto de entrada de todo
el tráfico dirigido a la aplicación. Elastic Beanstalk admite varios tipos de balanceadores de carga. Utilice
la página de configuración Modify load balancer (Modificar balanceador de carga) para seleccionar un
tipo de balanceador de carga y configurar sus opciones. De forma predeterminada, la Consola de Elastic
Beanstalk crea un Balanceador de carga de aplicaciones y lo configura para atender el tráfico HTTP en el
puerto 80.
Para obtener más información sobre los tipos de balanceador de carga y sus opciones, consulte
Balanceador de carga del entorno de AWS Elastic Beanstalk (p. 193) y Configuración de HTTPS para su
entorno de Elastic Beanstalk (p. 374).
102
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Para los entornos con balanceo de carga, elija una política de implementación para determinar cómo se
van a implementar las nuevas versiones de la aplicación y los cambios en la configuración del software
de las instancias. La opción All at once completa las implementaciones lo más rápido posible, pero puede
generar tiempos de inactividad. Las implementaciones continuas garantizan que algunas instancias
permanecen operativas durante todo el proceso de implementación. Para obtener más información,
consulte Políticas y ajustes de implementación (p. 132).
• Deployment policy (Política de implementación): las implementaciones de tipo Rolling (Continua) dejan
un lote de instancias fuera de servicio cuando se implementa una nueva versión. La opción Rolling
with additional batch (Continua con lote adicional) lanza primero un nuevo lote para garantizar que la
capacidad no resulte afectada durante la implementación. La opción Immutable (Inmutable) realiza una
actualización inmutable (p. 146) durante la implementación.
• Batch size (Tamaño del lote): el número o porcentaje de instancias que se actualizan en cada lote.
Las actualizaciones continuas (p. 141) se producen cuando cambia los ajustes de configuración de
lanzamiento de instancias o los ajustes de la Amazon Virtual Private Cloud (Amazon VPC), que requieren
terminar y sustituir las instancias de su entorno. Otros cambios de configuración se realizan sin que ello
afecte a la capacidad. Para obtener más información, consulte Cambios de configuración (p. 140).
103
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Rolling update type (Tipo de actualización continua): basado en el tiempo, donde AWS CloudFormation
espera la cantidad de tiempo especificada una vez registradas las nuevas instancias antes de continuar
con el siguiente lote, o basado en el estado, donde AWS CloudFormation espera a que las instancias
superen las comprobaciones de estado. La opción Immutable (Inmutable) realiza una actualización
inmutable (p. 146) en la que un cambio en la configuración activa normalmente una actualización
continua.
• Batch size (Tamaño del lote): el número o porcentaje de instancias que se reemplazan en cada lote.
• Minimum capacity (Capacidad mínima): el número mínimo de instancias que se mantienen en servicio en
un momento dado.
• Pause time (Tiempo de pausa): para las actualizaciones continuas basadas en el tiempo, la cantidad de
tiempo que debe esperarse a que las nuevas instancias se pongan en marcha una vez registradas en el
balanceador de carga.
Los demás opciones personalizan las comprobaciones de estado y los tiempos de espera.
104
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Ignore health check (Omitir comprobación de estado): impide que se revierta una implementación
cuando un lote no es capaz de adquirir un estado correcto durante el –periodo de tiempo especificado en
Command timeout (Tiempo de espera del comando).
• Healthy threshold (Umbral de estado): reduce el umbral en el que una instancia se considera que está en
buen estado durante las implementaciones continuas, las actualizaciones continuas y las actualizaciones
inmutables.
• Command timeout (Tiempo de espera del comando): número de segundos que debe esperarse a que
una instancia adquiera un estado correcto antes de cancelar la implementación o, si se ha establecido
Ignore health check (Omitir comprobación de estado), antes de continuar con el lote siguiente.
Seguridad
Seleccione un par de claves de Amazon EC2 para habilitar el acceso SSH o RDP a las instancias del
entorno. Si ha creado un perfil de instancia y un rol de servicio personalizados, selecciónelos en las
listas. De lo contrario, use los roles predeterminados aws-elasticbeanstalk-service-role y aws-
elasticbeanstalk-ec2-role.
105
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Service role (Rol de servicio): un rol de servicio (p. 22) concede a Elastic Beanstalk permiso para
monitorizar los recursos de su entorno.
• EC2 key pair: (Par de claves EC2): asigne una clave SSH a las instancias de su entorno para poder
conectarse a ellas de forma remota para la depuración. Para obtener más información acerca de los
pares de claves de Amazon EC2, consulte Uso de credenciales en la Guía del usuario de Amazon EC2
para instancias de Linux.
Note
Al crear un par de claves, Amazon EC2 almacena una copia de la clave pública. Si ya no la
necesita para conectarse a cualquier instancia Amazon EC2, puede eliminarla de Amazon EC2.
Para obtener detalles, consulte Eliminar el par de claves en Guía del usuario de Amazon EC2
para instancias de Linux.
• IAM instance profile (Perfil de instancia de IAM): un perfil de instancia (p. 23) concede a las instancias
Amazon EC2 del entorno permisos para obtener acceso a los recursos de AWS.
Monitorización
Configure comprobaciones de estado para el entorno con balanceo de carga.
106
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Health check (Comprobación de estado): la ruta a la que se envían las solicitudes de comprobación de
estado. Si no se establece, el balanceador de carga intenta realizar una conexión TCP en el puerto 80
para comprobar el estado. Utilice otra ruta para enviar una solicitud HTTP GET a esa ruta. La ruta debe
empezar por / y es relativa a la raíz de la aplicación. También puede incluir un protocolo (HTTP, HTTPS,
TCP o SSL) y un puerto delante de la ruta para comprobar la conectividad HTTPS o utilizar otro puerto
diferente al predeterminado. Por ejemplo, HTTPS:443/health.
• Health reporting (Informes de estado): los informes de estado mejorados (p. 416) proporcionan
información de estado adicional sobre los recursos del entorno. Seleccione Enhanced (Mejorados) para
activar los informes de estado mejorados. El sistema proporciona la métrica EnvironmentHealth de forma
gratuita. Se aplican cargos adicionales si selecciona más métricas en la lista.
• Health event streaming to CloudWatch Logs (Streaming de eventos de estado a CloudWatch Logs):
habilite Log streaming (Streaming de registros) para realizar el streaming de eventos de registro sobre el
estado del entorno a Amazon CloudWatch Logs (p. 476).
Notificaciones
Especifique una dirección de correo electrónico para recibir notificaciones por correo electrónico (p. 245)
de eventos importantes de su entorno.
107
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Email (Correo electrónico): una dirección de correo electrónico para las notificaciones.
Red
Si ha creado una VPC personalizada (p. 249), utilice estos ajustes para configurar su entorno para que la
utilice. Si no elige una VPC, Elastic Beanstalk utiliza la VPC y las subredes predeterminadas.
108
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
109
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Public IP address (Dirección IP pública): elija esta opción si ejecuta las instancias y el balanceador de
carga en las mismas subredes públicas.
• Instance subnets (Subredes de instancias): elija subredes privadas para sus instancias.
• Instance security groups (Grupos de seguridad de instancias): elija los grupos de seguridad que desea
asignar a sus instancias, además de los grupos de seguridad estándar que crea Elastic Beanstalk.
Para obtener más información acerca de Amazon VPC, consulte Amazon Virtual Private Cloud (Amazon
VPC).
110
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
Base de datos
Añada una base de datos SQL de Amazon RDS a su entorno para realizar tareas de desarrollo y pruebas.
Elastic Beanstalk proporciona los datos de conexión a las instancias configurando propiedades de entorno
para la base de datos, el nombre de host, el puerto, el nombre de usuario, la contraseña, el nombre de la
tabla y el puerto.
Puede restaurar una instantánea de base de datos que haya tomado antes en un entorno en ejecución, o
bien puede crear una nueva base de datos de Amazon RDS.
Cuando se añade una base de datos al entorno mediante esta página de configuración, su ciclo de vida se
asocia al ciclo de vida del entorno. Si se termina el entorno, la base de datos se eliminará y se perderán
los datos. En los entornos de producción, considere la posibilidad de configurar las instancias para que se
conecten a una base de datos creada fuera de Elastic Beanstalk.
111
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
112
AWS Elastic Beanstalk Developer Guide
El asistente de creación de nuevo entorno
• Snapshot (Instantánea): elija una instantánea de base de datos existente. Elastic Beanstalk restaura
la instantánea y la añade a su entorno. El valor predeterminado es None (Ninguno), que le permite
configurar una base de datos nueva utilizando el resto de la configuración de esta página.
• Engine (Motor): elija el motor de base de datos que utiliza la aplicación.
• Engine version (Versión del motor): elija la versión del motor de base de datos.
• Instance class (Clase de instancia): elija una clase de instancia de base de datos. Para obtener
información sobre las clases de instancias de base de datos, consulte https://aws.amazon.com/rds/.
• Storage (Almacenamiento):: especifique la cantidad de espacio de almacenamiento, en gigabytes, que
desea asignar a la base de datos. Para obtener información acerca de la asignación de almacenamiento,
consulte las características.
• Username (Nombre de usuario): el nombre de usuario del administrador de base de datos. Los requisitos
de nombre de usuario varían en función del motor de base de datos.
• Password (Contraseña): la contraseña del administrador de base de datos. Los requisitos de contraseña
varían en función del motor de base de datos.
• Retention (Retención): pude usar una instantánea para restaurar los datos lanzando una nueva
instancia de base de datos. Elija Create snapshot para guardar una instantánea de la base de datos
automáticamente al terminar su entorno.
• Availability (Disponibilidad): elija High (Multi-AZ) (Alta [Multi-AZ]) para ejecutar una segunda instancia de
base de datos en una zona de disponibilidad diferente para proporcionar alta disponibilidad.
Para obtener más información acerca de Amazon RDS, consulte Amazon Relational Database Service
(Amazon RDS).
Etiquetas
Añada etiquetas a los recursos de su entorno. Para obtener más información sobre el etiquetado del
entorno, consulte Etiquetado de los recursos del entorno de Elastic Beanstalk (p. 233).
113
AWS Elastic Beanstalk Developer Guide
Clonación de un entorno
• Worker queue (Cola de trabajo): elija la cola desde la que la capa de entorno de trabajo lee los mensajes
que procesa. Si no se proporciona ningún valor, Elastic Beanstalk crea uno automáticamente.
• HTTP path (Ruta HTTP): especifica la ruta relativa del host local a la que se reenvían los mensajes de la
cola con el formato de solicitudes HTTP POST.
• MIME type (Tipo de MIME): elija el tipo MIME del mensaje enviado en la solicitud HTTP POST.
• HTTP connections (Conexiones HTTP): el número máximo de conexiones simultáneas a la aplicación.
Establezca esta opción en el número de procesos o subprocesos que la aplicación puede procesar en
paralelo.
• Visibility timeout (Tiempo de espera de visibilidad): la cantidad de tiempo que se va a bloquear el
procesamiento de un mensaje entrante antes de devolverlo a la cola. Establézcalo en el período de
tiempo más largo posible que podría ser necesario para procesar un mensaje.
114
AWS Elastic Beanstalk Developer Guide
Clonación de un entorno
configura el clon con la misma configuración que el entorno original. Al clonar un entorno existente en
lugar de crear uno, no tiene que configurar manualmente las opciones de configuración, las variables
de entorno y otros ajustes. Elastic Beanstalk también crea una copia de todos los recursos de AWS
asociados al entorno original. Sin embargo, durante el proceso de clonación, Elastic Beanstalk no copia los
datos de Amazon RDS en el clon. Después de crear el entorno clonado, puede modificar las opciones de
configuración del entorno según sea necesario.
Note
Elastic Beanstalk no incluye ningún cambio sin administrar en los recursos del clon. Los
cambios en los recursos de AWS que realiza con herramientas diferentes de la consola de
Elastic Beanstalk, las herramientas de línea de comandos o la API se consideran cambios sin
administrar.
4. En el panel del entorno, elija Actions (Acciones) y, a continuación, realice alguna de las siguientes
operaciones:
• Elija Clone Environment (Clonar entorno) si desea clonar el entorno sin realizar ningún cambio en la
versión de la pila de soluciones.
• Elija Clone with Latest Platform (Clonar con la plataforma más reciente) si desea clonar el entorno,
pero con una versión más reciente de la pila de soluciones del entorno actual.
115
AWS Elastic Beanstalk Developer Guide
Clonación de un entorno
En Platform, solo se muestras las pilas de soluciones con el mismo lenguaje y la misma
configuración de servidor web. Si una versión más reciente de la pila de soluciones usada
con el entorno original está disponible, se le pide que la actualice, pero no puede elegir una
pila diferente, aunque sea para una versión diferente del mismo lenguaje. Para obtener más
información, consulte Plataformas compatibles con AWS Elastic Beanstalk (p. 32).
116
AWS Elastic Beanstalk Developer Guide
Clonación de un entorno
117
AWS Elastic Beanstalk Developer Guide
Terminación de un entorno
Puede especificar el nombre del entorno de origen en el comando clone o no especificarlo para que se
clone el entorno predeterminado de la carpeta del proyecto actual. La CLI de EB le pide que introduzca un
nombre y un prefijo DNS para el nuevo entorno.
De forma predeterminada, eb clone crea el nuevo entorno con la última versión disponible de la plataforma
del entorno de origen. Para forzar a la CLI de EB a que use la misma versión, aunque haya una versión
más reciente disponible, use la opción --exact.
Para obtener más información acerca de este comando, consulte eb clone (p. 616).
Siempre podrá lanzar más adelante un nuevo entorno con la misma versión. Si tiene datos de un
entorno que desea conservar, cree una instantánea de la instancia de base de datos actual antes
de terminar el entorno. Podrá usarla más adelante como referencia para la nueva instancia de
base de datos cuando cree un entorno nuevo. Para obtener más información, consulte Creación
de una instantánea de base de datos en la Guía del usuario de Amazon Relational Database
Service.
Elastic Beanstalk podría no terminar el entorno correctamente. Un motivo habitual de este error es que otro
grupo de seguridad del entorno tenga una dependencia del grupo de seguridad del entorno que se intenta
terminar. Una forma de evitar esta situación se describe en Grupos de seguridad (p. 182), en la página
Instancias EC2 de esta guía.
118
AWS Elastic Beanstalk Developer Guide
Terminación de un entorno
Elastic Beanstalk tarda unos minutos en terminar los recursos de AWS que se ejecutan en el entorno.
CLI
Para terminar un entorno
119
AWS Elastic Beanstalk Developer Guide
Con la CLI de AWS
API
Para terminar un entorno
EnvironmentName = SampleAppEnv
https://elasticbeanstalk.us-west-2.amazon.com/?EnvironmentName=SampleAppEnv
&Operation=TerminateEnvironment
&AuthParams
Si no tiene una versión de la aplicación para el origen aún, créelo. Por ejemplo, el siguiente comando
crea una versión de la aplicación de un paquete de código fuente en Amazon Simple Storage Service
(Amazon S3).
4. Cree el entorno.
120
AWS Elastic Beanstalk Developer Guide
Con la API
[
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "IamInstanceProfile",
"Value": "aws-elasticbeanstalk-ec2-role"
}
]
El valor de la opción anterior define el perfil de instancia de IAM. Puede especificar el ARN o el
nombre de perfil.
5. Determine si el nuevo entorno se muestra como Green and Ready.
Si el nuevo entorno no se muestra como Green and Ready, debe decidir si desea reintentar la
operación o dejar el entorno en su estado actual para su investigación. Asegúrese de terminar el
entorno una vez que haya finalizado y de eliminar los recursos sin utilizar.
Note
• CNAMEPrefix = SampleApp
Example
https://elasticbeanstalk.us-east-2.amazonaws.com/?CNAMEPrefix=sampleapplication
&Operation=CheckDNSAvailability
&AuthParams
• ApplicationName = SampleApp
• VersionLabel = Version2
Example
https://elasticbeanstalk.us-east-2.amazonaws.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&Operation=DescribeApplicationVersions
&AuthParams
• ApplicationName = SampleApp
• TemplateName = MyConfigTemplate
121
AWS Elastic Beanstalk Developer Guide
Con la API
• SolutionStackName = 64bit%20Amazon%20Linux%202015.03%20v2.0.0%20running
%20Ruby%202.2%20(Passenger%20Standalone)
Example
https://elasticbeanstalk.us-east-2.amazonaws.com/?ApplicationName=SampleApp
&TemplateName=MyConfigTemplate
&Operation=CreateConfigurationTemplate
&SolutionStackName=64bit%20Amazon%20Linux%202015.03%20v2.0.0%20running%20Ruby
%202.2%20(Passenger%20Standalone)
&AuthParams
• EnvironmentName = SampleAppEnv2
• VersionLabel = Version2
• Description = description
• TemplateName = MyConfigTemplate
• ApplicationName = SampleApp
• CNAMEPrefix = sampleapplication
• OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.1.OptionName = IamInstanceProfile
• OptionSettings.member.1.Value = aws-elasticbeanstalk-ec2-role
Example
https://elasticbeanstalk.us-east-2.amazonaws.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&EnvironmentName=SampleAppEnv2
&TemplateName=MyConfigTemplate
&CNAMEPrefix=sampleapplication
&Description=description
&Operation=CreateEnvironment
&OptionSettings.member.1.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.1.OptionName=IamInstanceProfile
&OptionSettings.member.1.Value=aws-elasticbeanstalk-ec2-role
&AuthParams
• EnvironmentName = SampleAppEnv2
• VersionLabel = Version2
• Description = description
• TemplateName = MyConfigTemplate
• ApplicationName = SampleApp
• Tier = Worker
• OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.1.OptionName = IamInstanceProfile
• OptionSettings.member.1.Value = aws-elasticbeanstalk-ec2-role
• OptionSettings.member.2.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.2.OptionName = WorkerQueueURL
122
AWS Elastic Beanstalk Developer Guide
Con la API
• OptionSettings.member.2.Value = sqsd.elasticbeanstalk.us-
east-2.amazonaws.com
• OptionSettings.member.3.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.3.OptionName = HttpPath
• OptionSettings.member.3.Value = /
• OptionSettings.member.4.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.4.OptionName = MimeType
• OptionSettings.member.4.Value = application/json
• OptionSettings.member.5.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.5.OptionName = HttpConnections
• OptionSettings.member.5.Value = 75
• OptionSettings.member.6.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.6.OptionName = ConnectTimeout
• OptionSettings.member.6.Value = 10
• OptionSettings.member.7.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.7.OptionName = InactivityTimeout
• OptionSettings.member.7.Value = 10
• OptionSettings.member.8.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.8.OptionName = VisibilityTimeout
• OptionSettings.member.8.Value = 60
• OptionSettings.member.9.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.9.OptionName = RetentionPeriod
• OptionSettings.member.9.Value = 345600
Example
https://elasticbeanstalk.us-east-2.amazonaws.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&EnvironmentName=SampleAppEnv2
&TemplateName=MyConfigTemplate
&Description=description
&Tier=Worker
&Operation=CreateEnvironment
&OptionSettings.member.1.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.1.OptionName=IamInstanceProfile
&OptionSettings.member.1.Value=aws-elasticbeanstalk-ec2-role
&OptionSettings.member.2.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.2.OptionName=WorkerQueueURL
&OptionSettings.member.2.Value=sqsd.elasticbeanstalk.us-east-2.amazonaws.com
&OptionSettings.member.3.Namespace=aws%3elasticbeanstalk%3sqsd
&OptionSettings.member.3.OptionName=HttpPath
&OptionSettings.member.3.Value=%2F
&OptionSettings.member.4.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.4.OptionName=MimeType
&OptionSettings.member.4.Value=application%2Fjson
&OptionSettings.member.5.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.5.OptionName=HttpConnections
&OptionSettings.member.5.Value=75
&OptionSettings.member.6.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.6.OptionName=ConnectTimeout
&OptionSettings.member.6.Value=10
&OptionSettings.member.7.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.7.OptionName=InactivityTimeout
&OptionSettings.member.7.Value=10
123
AWS Elastic Beanstalk Developer Guide
URL de lanzamiento inmediato
&OptionSettings.member.8.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.8.OptionName=VisibilityTimeout
&OptionSettings.member.8.Value=60
&OptionSettings.member.9.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.9.OptionName=RetentionPeriod
&OptionSettings.member.9.Value=345600
&AuthParams
Las URL de lanzamiento inmediato proporcionan a Elastic Beanstalk la información mínima necesaria
para crear una aplicación: el nombre de la aplicación, la pila de soluciones, el tipo de instancia y el tipo de
entorno. Elastic Beanstalk utiliza los valores predeterminados de otros datos de configuración que no se
especifican explícitamente en la URL de lanzamiento inmediato personalizada.
Las URL de lanzamiento inmediato utilizan la sintaxis estándar de las URL. Para obtener más información,
consulte RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax.
Parámetros de la URL
La dirección URL debe incluir los siguientes parámetros, que distinguen entre mayúsculas y minúsculas:
• region (región): especifique una región de AWS. Para ver una lista de las regiones admitidas en Elastic
Beanstalk, consulte AWS Elastic Beanstalk en la Referencia general de Amazon Web Services.
• applicationName: especifique el nombre de su aplicación. Elastic Beanstalk muestra el nombre de la
aplicación en la Consola de administración de AWS para distinguirlo de otras aplicaciones. De forma
predeterminada, el nombre de aplicación también sirve de base para el nombre del entorno y la URL del
entorno.
• platform (plataforma): especifique la versión de la plataforma que se va a utilizar para el entorno. Utilice
uno de los siguientes métodos; a continuación, codifique como URL su elección:
• Especifique un ARN de plataforma sin versión. Elastic Beanstalk selecciona la última versión de la
plataforma de la versión principal de la plataforma correspondiente. Por ejemplo, para seleccionar la
última versión de la plataforma Python 3.6, especifique:
Python
Para obtener una descripción de todas las plataformas disponibles y sus versiones, consulte Plataformas
compatibles con AWS Elastic Beanstalk (p. 32).
Puede utilizar la AWS Command Line Interface (AWS CLI) para obtener una lista con las versiones de
plataforma disponibles con sus respectivos ARN. El comando list-platform-versions muestra
124
AWS Elastic Beanstalk Developer Guide
URL de lanzamiento inmediato
información detallada sobre todas las versiones de plataforma disponibles. El argumento --filters
le permite para reducir la lista. Por ejemplo, puede enumerar todas las versiones de plataforma de un
lenguaje específico.
En el siguiente ejemplo se consultan todas las versiones de plataforma de Python y envía el resultado a
través de una serie de comandos. El resultado es una lista de los ARN de versiones de plataforma (sin la
cola /version), en formato legible para los usuarios, sin codificación URL.
En el siguiente ejemplo se añade un comando Perl al último ejemplo, para codificar la salida como URL.
Las URL de lanzamiento inmediato pueden contener los siguientes parámetros. Si no incluye los
parámetros opcionales en la URL de lanzamiento inmediato, Elastic Beanstalk utiliza los valores
predeterminados para crear y ejecutar la aplicación. Si no incluye el parámetro sourceBundleUrl, Elastic
Beanstalk utiliza la aplicación de ejemplo predeterminada para el valor de platform especificado.
Puede especificar el valor del parámetro sourceBundleUrl como una URL de HTTP, pero
el navegador web del usuario convertirá los caracteres según sea necesario aplicando la
codificación HTML de URL.
• environmentType: especifique si el entorno va a tener balanceo de carga y escalado automático o
solamente una instancia. Para obtener más información, consulte Tipos de entornos (p. 163). Puede
especificar LoadBalancing o SingleInstance como valor del parámetro.
• tierName: especifique si el entorno es compatible con una aplicación web que procese solicitudes web o
que ejecute trabajos en segundo plano. Para obtener más información, consulte Entornos de trabajo de
AWS Elastic Beanstalk (p. 165). Puede especificar WebServer o Worker,
• instanceType: especifique un servidor con las características más adecuadas para la aplicación
(como el tamaño de la memoria o la capacidad e la CPU). Para ver los tipos de instancias que están
disponibles en la región de Elastic Beanstalk, consulte InstanceType (p. 275) en Opciones de
configuración (p. 252). Para ver las especificaciones detalladas de cada tipo de instancia Amazon EC2,
consulte Tipos de instancias.
125
AWS Elastic Beanstalk Developer Guide
URL de lanzamiento inmediato
• withVpc: especifique si va a crear el entorno en una Amazon VPC. Puede especificar true o false.
Para obtener más información sobre el uso de Elastic Beanstalk con Amazon VPC, consulte Uso de
Elastic Beanstalk con Amazon Virtual Private Cloud (p. 562).
• withRds: especifique si va a crear una instancia de base de datos de Amazon RDS con este entorno.
Para obtener más información, consulte Uso de Elastic Beanstalk con Amazon Relational Database
Service (p. 548). Puede especificar true o false.
• rdsDBEngine: especifique el motor de base de datos que desee usar con las instancias Amazon
EC2 de este entorno. Puede especificar mysql, oracle-sel, sqlserver-ex, sqlserver-web o
sqlserver-se. El valor predeterminado es mysql.
• rdsDBAllocatedStorage: especifique el tamaño de almacenamiento de base de datos asignado, en
gigabytes. Puede especificar los valores siguientes:
• MySQL: 5 a 1024. El valor predeterminado es 5.
• Oracle: 10 a 1024. El valor predeterminado es 10.
• Microsoft SQL Server Express Edition: 30.
• Microsoft SQL Server Web Edition: 30.
• Microsoft SQL Server Standard Edition: 200.
• rdsDBInstanceClass: especifique el tipo de instancia de base de datos. El valor predeterminado es
db.t2.micro (db.m1.large para un entorno que no se ejecuta en una Amazon VPC). Para ver una
lista de las clases de instancias de base de datos compatibles con Amazon RDS, consulte Clase de
instancia de base de datos en la Guía del usuario de Amazon Relational Database Service.
• rdsMultiAZDatabase: especifique si Elastic Beanstalk debe crear la instancia de base de datos en varias
zonas de disponibilidad. Puede especificar true o false. Para obtener más información sobre las
implementaciones de varias zonas de disponibilidad con Amazon RDS, visite la sección Regiones y
zonas de disponibilidad de la Guía del usuario de Amazon Relational Database Service.
• rdsDBDeletionPolicy: especifique si, al terminar el entorno, desea eliminar la instancia de base de datos
o crear una instantánea de ella. Puede especificar Delete o Snapshot.
Ejemplo
A continuación, se muestra un ejemplo de una URL de lanzamiento inmediato. Después de crear su propia
URL, puede enviársela a los usuarios. Por ejemplo, es posible que desee incrustar la dirección URL en una
página web o en el material de formación técnica. Si los usuarios crean una aplicación utilizando la URL de
lanzamiento inmediato, el asistente de creación de aplicaciones de Elastic Beanstalk no necesitará ningún
otro dato.
https://console.aws.amazon.com/elasticbeanstalk/?region=us-west-2#/newApplication?
applicationName=YourCompanySampleApp&platform=PHP%207.1%20running%20on
%2064bit%20Amazon%20Linux&sourceBundleUrl=http://s3.amazonaws.com/mybucket/
myobject&environmentType=SingleInstance&tierName=WebServer&instanceType=m1.small&withVpc=true&withRds=t
Cuando los usuarios elijan una URL de lanzamiento inmediato, Elastic Beanstalk mostrará una página
similar a la siguiente.
126
AWS Elastic Beanstalk Developer Guide
URL de lanzamiento inmediato
127
AWS Elastic Beanstalk Developer Guide
Compose Environments
Cree enlaces entre los entornos de Elastic Beanstalk para definir un entorno como una dependencia de
otro. Cuando se genera un grupo de entornos con la API Compose Environments, Elastic Beanstalk
solamente crea entornos dependientes una vez que sus dependencias están listas y en ejecución. Para
obtener más información acerca de los enlaces del entorno, consulte Creación de enlaces entre entornos
de AWS Elastic Beanstalk (p. 172).
La API Compose Environments utiliza un manifiesto de entorno (p. 369) para guardar los detalles de
la configuración que comparten los grupos de entornos. Cada aplicación integrante debe tener un archivo
de configuración env.yaml en el paquete de código fuente que especifique los parámetros utilizados para
crear el entorno.
Puede utilizar la API Compose Environments con la interfaz de línea de comandos de Elastic Beanstalk
(CLI de EB), la CLI de AWS o un SDK. Consulte Administración de varios entornos de AWS Elastic
Beanstalk como un grupo con la CLI de EB (p. 608) para obtener instrucciones sobre la CLI de EB.
En lugar de procesar los trabajos directamente, la aplicación front-end los agregará a una cola de Amazon
SQS. El segundo entorno, worker, extraerá los trabajos de la cola y los procesará. worker utilizará un
tipo de instancia G2 que tenga una GPU de alto rendimiento, mientras que front puede ejecutarse en un
tipo de instancia genérica más rentable.
La carpeta del proyecto, Media Library, debe organizarse en diferentes directorios para cada
componente, donde cada directorio tendrá un archivo de definición del entorno (env.yaml) con su código
fuente:
~/workspace/media-library
128
AWS Elastic Beanstalk Developer Guide
Compose Environments
|-- front
| `-- env.yaml
`-- worker
`-- env.yaml
~/workspace/media-library/front/env.yaml
EnvironmentName: front+
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
Name: WebServer
Type: Standard
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: m4.large
~/workspace/media-library/worker/env.yaml
EnvironmentName: worker+
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
Name: Worker
Type: SQS/HTTP
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: g2.2xlarge
Después de crear una versión de la aplicación (p. 54) para los componentes de aplicación front-end
(front-v1) y de trabajo (worker-v1), llame a la API Compose Environments con los nombres de las
versiones. En este ejemplo, vamos a utilizar la CLI de AWS para llamar a la API.
129
AWS Elastic Beanstalk Developer Guide
Implementaciones
"DateCreated": "2015-11-03T23:01:48.151Z",
"DateUpdated": "2015-11-03T23:01:48.151Z",
"SourceBundle": {
"S3Bucket": "my-bucket",
"S3Key": "worker-v1.zip"
}
}
}
# Create environments:
~$ aws elasticbeanstalk compose-environments --application-name media-library --group-name
dev --version-labels front-v1 worker-v1
La tercera llamada crea dos entornos: front-dev y worker-dev. La API crea los nombres de los
entornos concatenando el valor de EnvironmentName especificado en el archivo env.yaml con la
opción group name especificada en la llamada a Compose Environments, separados por un guion. La
longitud total de estas dos opciones y el guion no debe superar el máximo permitido para el nombre del
entorno, que es de 23 caracteres.
La aplicación que se ejecuta en el entorno front-dev puede obtener acceso al nombre de la cola de
Amazon SQS asociada al entorno worker-dev a través de la variable WORKERQUEUE. Para obtener más
información acerca de los enlaces del entorno, consulte Creación de enlaces entre entornos de AWS
Elastic Beanstalk (p. 172).
La implementación de una nueva versión de la aplicación en un entorno suele ser un proceso bastante
rápido. El nuevo paquete de código fuente se implementa en una instancia y se extrae. A continuación, el
contenedor o el servidor de aplicaciones web selecciona la nueva versión y, si es necesario, se reinicia.
Durante la implementación, es posible que la aplicación deje de estar disponible para los usuarios durante
unos segundos. Si desea evitar este tiempo de inactividad, puede configurar el entorno para que utilice
implementaciones continuas (p. 132) e implemente por lotes la nueva versión en las instancias.
Para asegurarse de que el código fuente de la aplicación se implementa siempre en las nuevas instancias,
en lugar de actualizar las instancias existentes, puede configurar el entorno para que utilice actualizaciones
inmutables (p. 146) de las implementaciones. En una actualización inmutable, se lanza un segundo
grupo de Auto Scaling en el entorno y la nueva versión atiende el tráfico junto con la versión antigua hasta
que las nuevas instancias superan las comprobaciones de estado.
Warning
130
AWS Elastic Beanstalk Developer Guide
Implementaciones
Todo a la vez ✓ ✓ ✓
Continua ✓ ☓ ✓
Inmutable ✓ ✓ ☓
† A efectos de esta tabla, un entorno Windows Server heredado es un entorno basado en una
configuración de plataforma de Windows Server que utiliza una versión de IIS anterior a la IIS 8.5.
En el caso de las implementaciones que dependen de los cambios de configuración de recursos o de una
versión nueva que no se puede ejecutar junto con la versión antigua, puede lanzar un entorno nuevo con
la versión nueva y realizar un intercambio de CNAME en una implementación "blue/green" (p. 136) (azul/
verde).
Métodos de implementación
Continua
Un lote fuera de servicio y los lotes ✓ ✓ Nueva Instancias
†
implementados correctamente antes del error implementación
existentes
ejecutan la nueva versión de la aplicación. manual
Continua
Mínima si se produce un error en el primer ✓ ✓ Nueva Instancias
†
con lote; de lo contrario, similar a Rolling implementación
nuevas
un (Continua). manualy
lote existentes
adicional
131
AWS Elastic Beanstalk Developer Guide
Opciones de implementación
Inmutable
Mínima ✓ ✓ Terminar
Instancias
nuevasnuevas
instancias
Con las implementaciones continuas, Elastic Beanstalk divide las instancias EC2 del entorno en lotes
e implementa la nueva versión de la aplicación en un lote cada vez, mientras el resto de las instancias
del entorno siguen ejecutando la versión antigua de la aplicación. Durante la implementación continua,
algunas instancias atienden solicitudes con la versión antigua de la aplicación, mientras que las instancias
de los lotes completados atienden otras solicitudes con la nueva versión.
Para mantener toda la capacidad durante las implementaciones, puede configurar el entorno para lanzar
un nuevo lote de instancias antes de que alguna de estas instancias se quede fuera de servicio. Esta
opción se conoce como implementación continua con un lote adicional. Cuando la implementación se
completa, Elastic Beanstalk termina el lote adicional de instancias.
Las implementaciones inmutables ejecutan una actualización inmutable (p. 146) para lanzar un conjunto
completo de instancias nuevas con la versión nueva de la aplicación en otro grupo de Auto Scaling, junto
con las instancias que ejecutan la versión antigua. Las implementaciones inmutables pueden impedir que
se produzcan los problemas causados por las implementaciones continuas realizadas parcialmente. Si
las nuevas instancias no superan las comprobaciones de estado, Elastic Beanstalk las termina y deja las
instancias originales tal y como estaban.
Si la aplicación no supera todas las comprobaciones de estado, pero funciona correctamente con un
nivel de corrección inferior, puede permitir que las instancias superen las comprobaciones de estado con
un nivel de corrección inferior (por ejemplo, Warning) modificando la opción Healthy threshold. Si se
producen errores en las implementaciones por no superar las comprobaciones de estado y necesita aplicar
forzosamente la actualización con independencia del estado que tengan, establezca la opción Ignore
health check.
132
AWS Elastic Beanstalk Developer Guide
Opciones de implementación
Si especifica un tamaño de lote en las actualizaciones continuas, Elastic Beanstalk utilizará también
ese valor para los reinicios continuos de las aplicaciones. Utilice los reinicios continuos cuando necesite
reiniciar el servidor proxy y el servidor de aplicaciones que se ejecutan en las instancias del entorno sin
tiempo de inactividad.
Elija Percentage para configurar un porcentaje del número total de instancias EC2 del grupo de Auto
Scaling (hasta el 100 %) o elija Fixed para configurar un número fijo de instancias (hasta el número
máximo de instancias de la configuración de Auto Scaling de su entorno).
133
AWS Elastic Beanstalk Developer Guide
Opciones de implementación
• Ignore health check (Omitir comprobación de estado): impide que se revierta una implementación
cuando un lote no es capaz de adquirir un estado correcto durante el –periodo de tiempo especificado en
Command timeout (Tiempo de espera del comando).
• Healthy threshold (Umbral de estado): reduce el umbral en el que una instancia se considera que está en
buen estado durante las implementaciones continuas, las actualizaciones continuas y las actualizaciones
inmutables.
• Command timeout (Tiempo de espera del comando): número de segundos que debe esperarse a que
una instancia adquiera un estado correcto antes de cancelar la implementación o, si se ha establecido
Ignore health check (Omitir comprobación de estado), antes de continuar con el lote siguiente.
134
AWS Elastic Beanstalk Developer Guide
Opciones de implementación
Cuando las instancias de un lote vuelven a conectarse con el balanceador de carga, Elastic Load
Balancing espera hasta que superan un número mínimo de comprobaciones de estado de Elastic Load
Balancing (el valor de Healthy check count threshold [Umbral de recuento de estado correcto]) y después
reanuda el tráfico dirigido a ellas. Si no se ha configurado health check URL (p. 199), esto puede
producirse con mucha rapidez, ya que una instancia superará la comprobación de estado tan pronto
como pueda aceptar una conexión TCP. Si se ha configurado una URL de comprobación de estado, el
balanceador de carga no direcciona el tráfico a las instancias cargadas hasta que devuelven el código de
estado 200 OK en respuesta a una solicitud HTTP GET enviada a la URL de comprobación de estado.
Elastic Beanstalk espera hasta que todas las instancias de un lote tienen un estado correcto antes de
pasar al siguiente. Con los informes de estado básicos (p. 413), el estado de la instancia depende del
estado de la comprobación de estado de Elastic Load Balancing. Cuando todas las instancias de un
lote superan suficientes comprobaciones de estado como para que Elastic Load Balancing considere
que tiene un estado correcto, el lote se ha completado. Si están habilitados los informes de estado
avanzados (p. 416), Elastic Beanstalk tiene en cuenta otros factores, como el resultado de las solicitudes
entrantes. Con los informes de estado avanzados, todas las instancias deben superan 12 comprobaciones
de estado consecutivas con el estado OK (p. 432) en un plazo de dos minutos en el caso de los entornos
de servidor web y 18 comprobaciones en un plazo de tres minutos en el caso de los entornos de trabajo.
Si un lote de instancias no adopta un estado correcto durante el tiempo de espera del comando (p. 133),
la implementación no se realiza correctamente. Después de un error en la implementación, compruebe
el estado de las instancias de su entorno (p. 426) para obtener información sobre la causa del error. A
continuación, realice otra implementación con una versión correcta o corregida de la aplicación que desea
restaurar.
Si se produce un error en la implementación después de que uno o varios lotes se han completado
correctamente, los lotes completados ejecutarán la nueva versión de la aplicación, mientras que los lotes
pendientes seguirán ejecutando la versión antigua. Puede identificar la versión que se ejecuta en las
instancias del entorno en la página de estado (p. 427) de la consola. En esta página, se muestra el ID de
la implementación de la última implementación que se ejecutó en cada instancia del entorno. Si termina
las instancias de una implementación con errores, Elastic Beanstalk las reemplazará por instancias con la
versión de la aplicación que se utilizó en la última implementación correcta.
Utilice la opción DeploymentPolicy para establecer el tipo de implementación. Se admiten los siguientes
valores:
• AllAtOnce: deshabilita las implementaciones continuas e implementa siempre todas las instancias a la
vez.
• Rolling: habilita las implementaciones continuas estándar.
• RollingWithAdditionalBatch: lanza un lote adicional de instancias, antes de comenzar la
implementación, para mantener la capacidad completa.
• Immutable: realiza una actualización inmutable (p. 146) de cada implementación.
135
AWS Elastic Beanstalk Developer Guide
Implementaciones Blue-Green (azul-verde)
Cuando habilite las implementaciones continuas, defina las opciones BatchSize y BatchSizeType para
configurar el tamaño de cada lote. Por ejemplo, para implementar el 25 % de todas las instancias en cada
lote, especifique las siguientes opciones y valores.
Example .ebextensions/rolling-updates.config
option_settings:
aws:elasticbeanstalk:command:
DeploymentPolicy: Rolling
BatchSizeType: Percentage
BatchSize: 25
Para realizar la implementación en cinco instancias en cada lote, independientemente del número de
instancias en ejecución, y para crear un lote adicional de cinco instancias que ejecuten la versión nueva
antes de dejar ninguna instancia fuera de servicio, especifique las siguientes opciones y valores.
Example .ebextensions/rolling-additionalbatch.config
option_settings:
aws:elasticbeanstalk:command:
DeploymentPolicy: RollingWithAdditionalBatch
BatchSizeType: Fixed
BatchSize: 5
Para ejecutar una actualización inmutable de cada implementación con el umbral de comprobación de
estado Warning y continuar con la implementación incluso si las instancias de un lote no superan las
comprobaciones de estado durante un periodo de espera de 15 minutos, especifique las siguientes
opciones y valores.
Example .ebextensions/immutable-ignorehealth.config
option_settings:
aws:elasticbeanstalk:command:
DeploymentPolicy: Immutable
HealthCheckSuccessThreshold: Warning
IgnoreHealthCheck: true
Timeout: "900"
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
Las implementaciones "blue/green" requieren que el entorno se ejecute con independencia de la base de
datos, si es que la aplicación usa una. Si su entorno tiene una instancia de base de datos de Amazon RDS
adjuntada, los datos no se transferirán al segundo entorno y se perderán cuando se termine el entorno
original.
Para obtener más información sobre cómo configurar la aplicación para conectarse a una instancia de
base de datos de Amazon RDS externa (no administrada por Elastic Beanstalk), consulte Uso de Elastic
Beanstalk con Amazon Relational Database Service (p. 548).
136
AWS Elastic Beanstalk Developer Guide
Implementaciones Blue-Green (azul-verde)
137
AWS Elastic Beanstalk Developer Guide
Implementaciones Blue-Green (azul-verde)
7. Elija Swap.
Elastic Beanstalk intercambia los registros CNAME entre el entorno antiguo y el nuevo, lo que hace que el
tráfico se direccione desde la versión anterior a la nueva, y viceversa.
138
AWS Elastic Beanstalk Developer Guide
Implementación de una nueva versión de la aplicación
Una vez que Elastic Beanstalk complete la operación de intercambio, asegúrese de que el nuevo entorno
responde cuando intenta conectarse a la URL del antiguo entorno. Sin embargo, no termine el entorno
antiguo hasta que los cambios de DNS se hayan propagado y los antiguos registros DNS hayan caducado.
Los servidores DNS no borran necesariamente los registros antiguos de la caché en función del tiempo de
vida (TTL) establecido en los registros DNS.
139
AWS Elastic Beanstalk Developer Guide
Nueva implementación de una versión anterior
5. Escriba una Version label (Etiqueta de versión) exclusiva que represente la nueva versión de la
aplicación.
6. Elija Deploy (Implementar).
Cambios de configuración
Cuando modifica los valores de las opciones de configuración en la sección Configuration (Configuración)
de la consola de administración del entorno (p. 78), AWS Elastic Beanstalk propaga el cambio a todos
los recursos afectados. Estos recursos incluyen el balanceador de carga que distribuye el tráfico entre
las instancias Amazon EC2 que ejecutan la aplicación, el grupo de Auto Scaling que administra dichas
instancias y las propias instancias EC2.
140
AWS Elastic Beanstalk Developer Guide
Actualizaciones continuas
Se pueden aplicar muchos cambios de configuración a un entorno en ejecución sin reemplazar las
instancias existentes. Por ejemplo, la configuración de una URL de comprobación de estado (p. 199)
activa una actualización del entorno para modificar la configuración del balanceador de carga, pero no
causa ningún tiempo de inactividad, ya que las instancias que ejecutan su aplicación siguen sirviendo
solicitudes mientras se propaga la actualización.
Para los cambios de configuración que modifican la configuración de lanzamiento (p. 273) o la
configuración de VPC (p. 285) es necesario terminar todas las instancias del entorno y reemplazarlas.
Por ejemplo, cuando cambia el tipo de instancia o la configuración de la clave SSH de su entorno, las
instancias EC2 deben terminarse y reemplazarse. Para evitar que se produzca tiempo de inactividad
durante estos procesos, Elastic Beanstalk aplica estos cambios de configuración en lotes, manteniendo un
número mínimo de instancias en ejecución y sirviendo tráfico en todo momento. Este proceso se conoce
como actualización continua (p. 141).
Las actualizaciones inmutables (p. 146) son una alternativa a las actualizaciones continuas en las que
un grupo de Auto Scaling temporal se lanza fuera del entorno con un conjunto de instancias distintos
ejecutándose en la nueva configuración, que se colocan detrás del balanceador de carga del entorno. Las
instancias nuevas y antiguas sirven tráfico hasta que las nuevas instancias superan las comprobaciones
de estado, momento en el cual las nuevas instancias se mueven al grupo de Auto Scaling del entorno y se
terminan el grupo temporal y las instancias.
Warning
Deshabilitada ✓ ✓ ✓
Inmutable ✓ ✓ ☓
† A efectos de esta tabla, un entorno Windows Server heredado es un entorno basado en una
configuración de plataforma de Windows Server que utiliza una versión de IIS anterior a la IIS 8.5.
Temas
• Actualizaciones de configuración del entorno continuas de Elastic Beanstalk (p. 141)
• Actualizaciones del entorno inmutables (p. 146)
141
AWS Elastic Beanstalk Developer Guide
Actualizaciones continuas
el cambio. Durante una actualización continua, la capacidad solo se reduce por el tamaño de un solo lote,
que puede configurar. Elastic Beanstalk deja un lote de instancias fuera de servicio, termina las instancias
y después lanza un lote con la nueva configuración. Una vez que el nuevo lote empieza a servir solicitudes,
Elastic Beanstalk pasa al siguiente lote.
Con las actualizaciones continuas basadas en estado, Elastic Beanstalk espera hasta que las instancias
de un lote superen las comprobaciones de estado antes de pasar al siguiente lote. El estado de una
instancia lo determina el sistema de informes de estado, que puede ser básico o mejorado. Con el estado
básico (p. 413), un lote se considera en buen estado en el momento en que todas las instancias que
contiene superan las comprobaciones de estado de Elastic Load Balancing (ELB).
Con los informes de estado mejorados (p. 416), todas las instancias de un lote deben superar varias
comprobaciones de estado consecutivas antes de que Elastic Beanstalk pase al siguiente lote. Además
de las comprobaciones de estado de ELB, que únicamente comprueban las instancias, los informes de
estado mejorados monitorizan los registros de la aplicación y el estado de otros recursos de su entorno.
En un entorno de servidor web con informes de estado mejorados, todas las instancias deben superar 12
comprobaciones de estado a lo largo de dos minutos (18 comprobaciones de más de tres minutos para
los entornos de trabajo). Si alguna instancia no supera una comprobación de estado, se restablece el
contador.
Si el proceso de actualización continua produce un error, Elastic Beanstalk inicia otra actualización
continua para restaurar la configuración anterior. Una actualización continua puede producir un error
debido a comprobaciones de estado no superadas o si el lanzamiento de nuevas instancias hace que se
supere el límite de su cuenta. Si, por ejemplo, alcanza el límite de número de instancias de Amazon EC2,
la actualización continua puede producir un error cuando intente aprovisionar un lote de nuevas instancias.
En este caso, la restauración también produce un error.
Una restauración con error finaliza el proceso de actualización y deja su entorno en un estado Unhealthy.
Los lotes sin procesar siguen ejecutando instancias con la configuración anterior, mientras que los lotes
que se han ejecutado correctamente tienen la nueva configuración. Para corregir un entorno después
de una restauración con error, primero resuelva el problema subyacente que ha causado el error de
actualización y después inicie otra actualización del entorno.
Otro método consiste en implementar la nueva versión de la aplicación en un entorno diferente y después
realizar un intercambio de CNAME para redirigir el tráfico sin tiempo de inactividad. Para obtener más
información, consulte Implementaciones "blue/green" con Elastic Beanstalk (p. 136).
142
AWS Elastic Beanstalk Developer Guide
Actualizaciones continuas
la configuración de la VPC. En una actualización continua, cada lote de instancias se termina antes de
aprovisionar un nuevo lote para reemplazarlo.
Las implementaciones continuas (p. 132) se producen siempre que implementa su aplicación y
generalmente se pueden realizar sin reemplazar las instancias en su entorno. Elastic Beanstalk deja cada
lote fuera de servicio, implementa la nueva versión de la aplicación y, a continuación, lo vuelve a poner en
servicio.
La excepción es si cambia la configuración que requiere que las instancias se reemplacen al implementar
un nueva versión de la aplicación. Por ejemplo, si cambia el valor del nombre de clave (p. 273) en un
archivo de configuración (p. 320) de su paquete de código fuente y lo implementa en el entorno, activa
una actualización continua. En lugar de implementar la nueva versión de la aplicación en cada lote de
instancias existentes, se aprovisiona un nuevo lote de instancias con la nueva configuración. En este caso,
no se produce una implementación independiente, porque las nuevas instancias se obtienen con la nueva
versión de la aplicación.
Cada vez que se aprovisionan nuevas instancias como parte de un entorno, hay una fase de
implementación en la que el código fuente de la aplicación se implementa en las nuevas instancias y se
aplican las opciones de configuración que modifican el sistema operativo o el software de las instancias.
Las opciones de comprobación de estado de la implementación (p. 133) (Ignore health check [Omitir
comprobación de estado], Healthy threshold [Umbral de buen estado] y Command timeout [Tiempo de
espera de comando]) también se aplican a las actualizaciones continuas basadas en estado y a las
aplicaciones inmutables durante la fase de implementación.
143
AWS Elastic Beanstalk Developer Guide
Actualizaciones continuas
6. Seleccione los ajustes Batch size (Tamaño de lote), Minimum capacity (Capacidad mínima) y Pause
time (Tiempo de pausa).
7. Seleccione Aplicar.
• Rolling update type (Tipo de actualización acumulativa): Elastic Beanstalk espera una vez que termina
de actualizar un lote de instancias antes de pasar al siguiente lote para permitir que dichas instancias
finalicen el proceso de arranque y empiecen a servir tráfico. Puede elegir entre las siguientes opciones:
• Rolling based on Health (Continua en función del estado): esperar a que las instancias del lote actual
estén en buen estado antes de poner las instancias en servicio e iniciar el siguiente lote.
• Rolling based on Time (Continua en función del tiempo): especifique la cantidad de tiempo que se
debe esperar entre el lanzamiento de nuevas instancias y su puesta en servicio antes de iniciar el
siguiente lote.
• Inmutable (Inmutable): aplicar el cambio de configuración a un nuevo grupo de instancias a través de
una actualización inmutable (p. 146).
• Batch size (Tamaño de lote): el número de instancias que se van a reemplazar en cada lote,
comprendido entre 1 y 10000. De forma predeterminada, este valor es el tercio del tamaño mínimo del
grupo de Auto Scaling redondeado al número entero superior más próximo.
• Minimum capacity (Capacidad mínima): el número mínimo de instancias que se mantienen en ejecución
mientras se actualizan otras instancias, comprendido entre 0 y 9999. El valor predeterminado es el
tamaño mínimo del grupo de Auto Scaling o un tamaño inferior al tamaño máximo del grupo de Auto
Scaling, el que sea menor.
144
AWS Elastic Beanstalk Developer Guide
Actualizaciones continuas
• Pause time (Pausa) (solo actualizaciones basadas en el tiempo): la cantidad de tiempo que se debe
esperar después de que se actualiza un lote antes de pasar al siguiente lote para que su aplicación
pueda empezar a recibir tráfico. Entre 0 segundos y 1 hora.
El espacio de nombres
aws:autoscaling:updatepolicy:rollingupdate
También puede utilizar las opciones de configuración (p. 252) del espacio de nombres
aws:autoscaling:updatepolicy:rollingupdate (p. 282) para configurar actualizaciones
continuas.
• Health: esperar a que las instancias del lote actual estén en buen estado antes de poner las instancias
en servicio e iniciar el siguiente lote.
• Time: especifique la cantidad de tiempo que se debe esperar entre el lanzamiento de nuevas instancias
y su puesta en servicio antes de iniciar el siguiente lote.
• Immutable: aplicar el cambio de configuración a un nuevo grupo de instancias a través de una
actualización inmutable (p. 146).
Por ejemplo, para lanzar hasta cinco instancias a la vez, manteniendo al menos dos instancias en servicio,
y esperar cinco minutos y 30 segundos entre los lotes, especifique las siguientes opciones y valores.
Example .ebextensions/timebased.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateEnabled: true
MaxBatchSize: 5
MinInstancesInService: 2
RollingUpdateType: Time
PauseTime: PT5M30S
Para habilitar las actualizaciones continuas basadas en estado, con un tiempo de espera de 45 minutos
para cada lote, especifique las siguientes opciones y valores.
Example .ebextensions/healthbased.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateEnabled: true
MaxBatchSize: 5
MinInstancesInService: 2
RollingUpdateType: Health
Timeout: PT45M
Los valores Timeout y PauseTime deben especificarse en un formato de duración ISO8601: PT#H#M#S,
donde cada # es el número de horas, minutos y segundos, respectivamente.
145
AWS Elastic Beanstalk Developer Guide
Actualizaciones inmutables
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
Para realizar una actualización inmutable del entorno, Elastic Beanstalk crea un segundo grupo temporal
de Auto Scaling detrás del balanceador de carga del entorno con las nuevas instancias. En primer lugar,
Elastic Beanstalk lanza una única instancia con la nueva configuración del nuevo grupo. Esta instancia
administra el tráfico junto con todas las instancias del grupo de Auto Scaling original que ejecutan la
configuración anterior.
Cuando la primera instancia supera las comprobaciones de estado, Elastic Beanstalk lanza otras
instancias con la nueva configuración hasta alcanzar el mismo número de instancias que se ejecutaban
en el grupo de Auto Scaling original. Cuando todas las nuevas instancias superan las comprobaciones de
estado, Elastic Beanstalk las transfiere al grupo de Auto Scaling original y termina el grupo de Auto Scaling
temporal junto con las instancias antiguas.
Note
En una actualización inmutable del entorno, la capacidad del entorno se duplica durante un corto
periodo de tiempo, cuando las instancias del nuevo grupo de Auto Scaling comienzan a emitir
solicitudes y aún no se han terminado las instancias del grupo de Auto Scaling original. Si el
entorno tiene muchas instancias o instancias con un límite a petición bajo, asegúrese de que
cuenta con la capacidad suficiente como para realizar una actualización inmutable del entorno. Si
está rozando el límite, considere la posibilidad de utilizar en su lugar una actualización continua.
Las actualizaciones inmutables requieren que los informes de estado avanzados (p. 416) evalúen
el estado del entorno durante la actualización. Los informes de estado avanzados combinan las
comprobaciones de estado del balanceador de carga estándar con la monitorización de instancias
para asegurarse de que las instancias que ejecutan la nueva configuración atienden las solicitudes
correctamente (p. 419).
También puede utilizar las actualizaciones inmutables para implementar nuevas versiones de la aplicación
como alternativa a las implementaciones continuas. Cuando configura Elastic Beanstalk para que utilice
actualizaciones inmutables para la implementación de aplicaciones (p. 132), reemplaza todas las
instancias del entorno cada vez que se implementa una nueva versión de la aplicación. Si se produce un
error en una implementación de aplicaciones inmutable, Elastic Beanstalk revierte los cambios de forma
inmediata terminando el nuevo grupo de Auto Scaling. Esto impide que haya implementaciones parciales
de flota, que sí pueden darse si las implementaciones continuas experimentan un error cuando algunos
lotes ya están completados.
Warning
Si se produce un error en una actualización inmutable, las nuevas instancias cargan los registros de
paquete (p. 457) en Amazon S3 antes de que Elastic Beanstalk los termine. Elastic Beanstalk deja los
146
AWS Elastic Beanstalk Developer Guide
Actualizaciones inmutables
registros de las actualizaciones inmutables erróneas en Amazon S3 una hora antes de eliminarlos, en lugar
de los 15 minutos estándar de los registros de paquete y de finalización.
Note
No se puede ejecutar una actualización inmutable junto con cambios de configuración de los recursos.
Por ejemplo, no puede cambiar una configuración que requiera la sustitución de instancias (p. 140) al
mismo tiempo que actualiza otras opciones o que ejecuta una implementación inmutable con archivos de
configuración que cambian las opciones de ajuste u otros recursos del código fuente. Si intenta cambiar la
configuración de recursos (por ejemplo, la configuración del balanceador de carga) al mismo tiempo que
ejecuta una actualización inmutable, Elastic Beanstalk devolverá un error.
147
AWS Elastic Beanstalk Developer Guide
Actualizaciones inmutables
6. Seleccione Aplicar.
El espacio de nombres
aws:autoscaling:updatepolicy:rollingupdate
También puede utilizar las opciones del espacio de nombres
aws:autoscaling:updatepolicy:rollingupdate para configurar actualizaciones inmutables. En
el siguiente archivo de configuración (p. 320) de ejemplo, se habilitan actualizaciones inmutables para
cambios de configuración.
Example .ebextensions/immutable-updates.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Immutable
En el siguiente ejemplo, se habilitan actualizaciones inmutables tanto para cambios de configuración como
para implementaciones.
Example .ebextensions/immutable-all.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Immutable
aws:elasticbeanstalk:command:
DeploymentPolicy: Immutable
148
AWS Elastic Beanstalk Developer Guide
Actualizaciones de la plataforma
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
Puede utilizar la Consola de Elastic Beanstalk o la CLI de EB para actualizar la versión de la plataforma del
entorno. En función de la versión de la plataforma a la que desea actualizar, Elastic Beanstalk recomienda
uno de los dos métodos para realizar actualizaciones en la plataforma.
Para obtener más ayuda para elegir el mejor método de actualización de la plataforma, expanda la sección
de la plataforma del entorno.
Multicontainer Docker
Utilice Method 1 (p. 151) para realizar actualizaciones de la plataforma.
Preconfigured Docker
Analice los siguientes casos:
• Si va a migrar la aplicación a otra plataforma, por ejemplo de Go 1.4 (Docker) a Go 1.11, o de Python 3.4
(Docker) a Python 3.6, utilice Method 2 (p. 153).
• Si va a migrar la aplicación a una versión de contenedor de Docker diferente, por ejemplo, de Glassfish
4.1 (Docker) a Glassfish 5.0 (Docker), utilice Method 2 (p. 153).
• Si va a actualizar a la versión de la plataforma más reciente sin cambios en la versión del contenedor o
en la versión principal, utilice Method 1 (p. 151).
Go
Utilice Method 1 (p. 151) para realizar actualizaciones de la plataforma.
149
AWS Elastic Beanstalk Developer Guide
Actualizaciones de la plataforma
Java SE
Analice los siguientes casos:
• Si va a migrar la aplicación a una versión de tiempo de ejecución de Java diferente, por ejemplo, de Java
7 a Java 8, utilice Method 2 (p. 153).
• Si va a actualizar a la versión de la plataforma más reciente sin cambios en la versión de tiempo de
ejecución, utilice Method 1 (p. 151).
• Si va a migrar la aplicación a una versión de tiempo de ejecución de Java o a una versión del servidor de
la aplicación de Tomcat diferentes, por ejemplo, de Java 7 con Tomcat 7 a Java 8 con Tomcat 8.5, utilice
Method 2 (p. 153).
• Si va a migrar la aplicación a través de las versiones de la plataforma Java con Tomcat principal (v1.x.x,
v2.x.x y v3.x.x), utilice Method 2 (p. 153).
• Si va a actualizar a la versión de la plataforma más reciente sin cambios en la versión de tiempo de
ejecución, la versión del servidor de la aplicación o la versión principal, utilice Method 1 (p. 151).
• Si va a migrar la aplicación a una versión del sistema operativo Windows diferente, por ejemplo, de
Windows Server 2008 R2 a Windows Server 2016, utilice Method 2 (p. 153).
• Si va a migrar la aplicación a través de versiones de la plataforma de Windows Server principales,
consulte Migración desde versiones principales anteriores de la plataforma Windows Server (p. 765) y
utilice Method 2 (p. 153).
• Si la aplicación se está ejecutando actualmente en una plataforma de Windows Server V2.x.x y está la
actualización a la última versión de la plataforma, utilice Method 1 (p. 151).
Note
Node.js
Utilice Method 2 (p. 153) para realizar actualizaciones de la plataforma.
PHP
Analice los siguientes casos:
• Si va a migrar la aplicación a una versión de tiempo de ejecución de PHP diferente, por ejemplo, de PHP
5.6 a PHP 7.2, utilice Method 2 (p. 153).
• Si va a migrar la aplicación a través de las versiones principales de la plataforma PHP (v1.x.x y v2.x.x),
utilice Method 2 (p. 153).
150
AWS Elastic Beanstalk Developer Guide
Método 1: Actualización de la
versión de la plataforma del entorno
Python
Analice los siguientes casos:
• Si va a migrar la aplicación a una versión de tiempo de ejecución de Python diferente, por ejemplo, de
Python 2.7 a Python 3.6, utilice Method 2 (p. 153).
• Si va a migrar la aplicación a través de las versiones principales de la plataforma Python (v1.x.x y
v2.x.x), utilice Method 2 (p. 153).
• Si va a actualizar a la versión de la plataforma más reciente sin cambios en la versión de tiempo de
ejecución o en la versión principal, utilice Method 1 (p. 151).
Ruby
Analice los siguientes casos:
• Si va a migrar la aplicación a una versión de tiempo de ejecución de Ruby o a una versión del servidor
de la aplicación diferentes, por ejemplo, de Ruby 2.3 con Puma a Ruby 2.6 con Puma, utilice Method
2 (p. 153).
• Si va a migrar la aplicación a través de las versiones principales de la plataforma Ruby (v1.x.x y v2.x.x),
utilice Method 2 (p. 153).
• Si va a actualizar a la versión de la plataforma más reciente sin cambios en la versión de tiempo de
ejecución, la versión del servidor de la aplicación o la versión principal, utilice Method 1 (p. 151).
151
AWS Elastic Beanstalk Developer Guide
Método 1: Actualización de la
versión de la plataforma del entorno
Para simplificar aún más las actualizaciones de la plataforma, Elastic Beanstalk puede administrarlas por
usted. Puede configurar el entorno para que las actualizaciones de las versiones secundarias y de parche
se apliquen automáticamente durante un período de mantenimiento semanal que se puede configurar.
Elastic Beanstalk aplica las actualizaciones administradas sin que se produzcan tiempos de inactividad ni
152
AWS Elastic Beanstalk Developer Guide
Método 2: Realización de una implementación "blue/green"
se reduzca la capacidad y cancela la actualización de inmediato si las instancias que ejecutan la aplicación
con la nueva versión no superan las comprobaciones de estado. Para obtener más información, consulte
Actualizaciones de plataforma administradas (p. 154).
Cuando migra a través de las versiones de la plataforma principal o a las versiones de la plataforma con
las principales actualizaciones de componentes, existe una mayor probabilidad de que la aplicación, o
algunos aspectos de ella, puedan no funcionar según lo previsto en la nueva versión de la plataforma, y
podrían requerir cambios.
Antes de realizar la migración, actualice su equipo de desarrollo local a las versiones de tiempo de
ejecución más recientes y otros componentes de la plataforma a los que tenga previsto migrar. Compruebe
que su aplicación sigue funcionando según lo previsto, y realice cualquier corrección o cambio de código
necesarios. A continuación, utilice el siguiente procedimiento de práctica recomendada para migrar de
forma segura el entorno a una nueva versión de la plataforma.
Para migrar el entorno a una versión de la plataforma con las actualizaciones principales, realice
el siguiente procedimiento:
1. Cree un nuevo entorno (p. 88), utilizando la nueva versión de plataforma de destino e implemente
el código de la aplicación en ella. El nuevo entorno debe estar en la aplicación de Elastic Beanstalk
que contiene el entorno que está migrando. No termine aún el entorno existente.
2. Utilice el nuevo entorno para migrar su aplicación. En particular:
Recorra en iteración las pruebas y la implementación de las correcciones hasta que esté satisfecho
con la aplicación en el nuevo entorno.
3. Convierta el nuevo entorno en su entorno de producción intercambiando su CNAME con el CNAME
del entorno de producción existente. Para obtener más información, consulte Implementaciones "blue/
green" con Elastic Beanstalk (p. 136).
4. Cuando esté satisfecho con el estado de su nuevo entorno en la producción, termine el
entorno antiguo. Para obtener más información, consulte Terminación de un entorno de Elastic
Beanstalk (p. 118).
153
AWS Elastic Beanstalk Developer Guide
Actualizaciones administradas
Puede configurar su entorno para que aplique automáticamente las actualizaciones de versiones
de parches (p. 156) o las actualizaciones de versiones de parches y versiones secundarias. Las
actualizaciones de plataforma administradas no admiten actualizaciones de versiones principales, ya que
podrían introducir cambios incompatibles con versiones anteriores.
Cuando habilita las actualizaciones de plataforma administradas, también puede configurar AWS Elastic
Beanstalk para que sustituya todas las instancias de su entorno durante el periodo de mantenimiento,
aunque una actualización de plataforma no esté disponible. La sustitución de todas las instancias de su
entorno es útil si su aplicación encuentra errores o problemas de memoria cuando se ejecuta durante un
periodo prolongado.
Utilice la consola de administración del entorno de Elastic Beanstalk para habilitar las actualizaciones de
plataforma administradas.
154
AWS Elastic Beanstalk Developer Guide
Actualizaciones administradas
Las actualizaciones de plataforma administradas utilizan los informes de estado mejorados (p. 416)
para determinar si su aplicación tiene un funcionamiento lo suficiente bueno para considerar que la
actualización de la plataforma se ha realizado correctamente. Consulte Activación de los informes de
estado avanzados de AWS Elastic Beanstalk (p. 423) para obtener instrucciones.
Secciones
• Permisos necesarios para realizar actualizaciones de plataforma administradas (p. 155)
• Período de mantenimiento de actualizaciones administradas (p. 155)
• Actualizaciones de versiones secundarias y parches (p. 156)
• Actualizaciones del entorno inmutables (p. 156)
• Administración de actualizaciones administradas (p. 156)
• Espacios de nombres de opciones de acciones administradas (p. 158)
Si utiliza un rol vinculado al servicio de monitorización (p. 496) de su cuenta para su entorno, no
puede habilitar las actualizaciones administradas de la plataforma. El rol vinculado al servicio no tiene
los permisos necesarios. Seleccione un rol diferente y asegúrese de que tiene la política administrada
AWSElasticBeanstalkService (p. 495).
Note
Si utiliza archivos de configuración (p. 320) para ampliar su entorno con recursos adicionales,
es posible que necesite añadir permisos adicionales al rol de servicio de su entorno. Normalmente
deberá añadir permisos cuando haga referencia a estos recursos por su nombre en otras
secciones o archivos.
Si se produce un error en una actualización, puede encontrar el motivo del error en la página Managed
Updates (p. 156).
En la mayoría de los casos, Elastic Beanstalk programa la actualización administrada para que
se lleve a cabo durante el siguiente periodo de mantenimiento semanal. El sistema tiene en
cuenta distintos aspectos sobre la seguridad de la actualización y la disponibilidad del servicio
al programar las actualizaciones administradas. En casos excepcionales, es posible que una
actualización no se programe para el primer periodo de mantenimiento que vaya a tener lugar
próximamente. Si esto ocurre, el sistema lo intenta de nuevo durante el siguiente periodo de
mantenimiento. Para aplicar manualmente una actualización administrada, seleccione Apply now
155
AWS Elastic Beanstalk Developer Guide
Actualizaciones administradas
(Aplicar ahora), tal y como se indica en Administración de actualizaciones administradas (p. 156)
en esta página.
En una actualización inmutable, Elastic Beanstalk implementa el mismo número de instancias que se están
ejecutando actualmente con la nueva versión de la plataforma. Las nuevas instancias empiezan a recibir
solicitudes junto con aquellas que ejecutan la versión anterior. Si el nuevo conjunto de instancias supera
todas las comprobaciones de estado, Elastic Beanstalk termina el conjunto anterior de instancias y deja
solo las instancias con la nueva versión.
La sección Managed Updates Overview proporciona información sobre las actualizaciones administradas
programadas y pendientes. La sección History muestra las actualizaciones que se han realizado
correctamente y los intentos que han producido un error.
156
AWS Elastic Beanstalk Developer Guide
Actualizaciones administradas
Puede elegir aplicar una actualización programada inmediatamente, en lugar de esperar al periodo de
mantenimiento.
Cuando aplica una actualización de plataforma administrada fuera del periodo de mantenimiento,
Elastic Beanstalk realiza una actualización inmutable. Si actualiza la plataforma del entorno desde el
panel (p. 79) o con otro cliente, Elastic Beanstalk utiliza el tipo de actualización que ha seleccionado
para los cambios de configuración (p. 140).
157
AWS Elastic Beanstalk Developer Guide
Actualización de un entorno heredado
• Hay disponible una versión secundaria (p. 156), pero el entorno está configurado para que se apliquen
automáticamente solo las actualizaciones de versiones de parches.
• Su entorno no se ha analizado desde que se lanzó la actualización. Por lo general, Elastic Beanstalk
comprueba si hay actualizaciones cada hora.
• Hay una actualización pendiente o en curso.
Cuando comienza el periodo de mantenimiento o cuando elige Apply now (Aplicar ahora), las
actualizaciones programadas entran en un estado pendiente antes de su ejecución.
Establezca UpdateLevel en minor o patch para aplicar las actualizaciones de versiones secundarias y
de parches o solo las actualizaciones de versiones de parches, respectivamente.
El siguiente archivo de configuración (p. 320) de ejemplo habilita las actualizaciones de plataforma
administradas para las actualizaciones de versiones de parches con un periodo de mantenimiento que
empieza a las 9:00 a.m. UTC cada martes.
Example .ebextensions/managed-platform-update.config
option_settings:
aws:elasticbeanstalk:managedactions:
ManagedActionsEnabled: true
PreferredStartTime: "Tue:09:00"
aws:elasticbeanstalk:managedactions:platformupdate:
UpdateLevel: patch
InstanceRefreshEnabled: true
158
AWS Elastic Beanstalk Developer Guide
Actualización de un entorno heredado
• Archivos de configuración, tal y como se describe en el tema Personalización avanzada de entornos con
archivos de configuración (.ebextensions) (p. 320).
• Comprobaciones de estado de ELB, tal y como se describe en el tema Informes de estado
básicos (p. 413).
• Perfiles de instancias, tal y como se describe en el tema Administración de perfiles de instancias de
Elastic Beanstalk (p. 486).
• VPC, tal y como se describe en el tema Uso de Elastic Beanstalk con Amazon Virtual Private
Cloud (p. 562).
• Niveles de datos, tal y como se describe en el tema Añadir una base de datos al entorno de Elastic
Beanstalk (p. 227).
• Niveles de trabajo, tal y como se describe en el tema Entornos de trabajo (p. 17).
• Entornos con una única instancia, tal y como se describe en el tema Tipos de entornos (p. 163).
• Etiquetas, tal y como se describe en el tema Etiquetado de los recursos del entorno de Elastic
Beanstalk (p. 233).
• Actualizaciones continuas, tal y como se describe en el tema Actualizaciones de configuración del
entorno continuas de Elastic Beanstalk (p. 141).
159
AWS Elastic Beanstalk Developer Guide
Cancelar una actualización
Note
Si utiliza AWS Identity and Access Management (IAM), tendrá que actualizar las políticas para
incluir AWS CloudFormation y Amazon RDS (si procede). Para obtener más información, consulte
Uso de Elastic Beanstalk con AWS Identity and Access Management (p. 486).
Durante la fase de limpieza en la que se eliminan los recursos antiguos que ya no son necesarios,
una vez que se ha actualizado el último lote de instancias, ya no es posible cancelar la
actualización.
Elastic Beanstalk efectúa la restauración del mismo modo que realizó la última actualización correcta.
Por ejemplo, si las actualizaciones continuas basadas en tiempo están habilitadas en el entorno, Elastic
Beanstalk esperará a que llegue el tiempo de pausa establecido entre los cambios de restauración de
un lote de instancias para restaurar los cambios en el siguiente lote. O, si hace poco que habilitó las
actualizaciones continuas y la última vez que actualizó correctamente la configuración del entorno fue
sin utilizar actualizaciones continuas, Elastic Beanstalk realizará la restauración de todas las instancias
simultáneamente.
160
AWS Elastic Beanstalk Developer Guide
Volver a crear un entorno
No se puede detener un proceso de Elastic Beanstalk para restaurar una configuración del entorno anterior
una vez que ha empezado a cancelarse la actualización. El proceso de restauración continúa hasta que
todas las instancias del entorno tengan la configuración del entorno anterior o hasta que el proceso de
restauración produce un error. En el caso de las implementaciones de versiones de la aplicación, cuando
se cancelan, simplemente se detiene la implementación, por lo que algunas instancias tendrán la nueva
versión de la aplicación, mientras que otras seguirán ejecutando la versión de la aplicación existente.
Posteriormente, podrá implementar la misma versión de la aplicación u otra diferente.
Para obtener más información sobre las actualizaciones continuas, consulte Actualizaciones de
configuración del entorno continuas de Elastic Beanstalk (p. 141). Para obtener más información
sobre las implementaciones por lotes de la versión de la aplicación, consulte Políticas y ajustes de
implementación (p. 132).
También puede volver a crear entornos terminados en un plazo de seis semanas (42 días) a partir de su
terminación. Cuando vuelve a crear un entorno, Elastic Beanstalk intenta crearlo con el mismo nombre, ID
y configuración.
161
AWS Elastic Beanstalk Developer Guide
Volver a crear un entorno terminado
Cuando se vuelve a crear un entorno en ejecución, se crean nuevos recursos con la misma configuración
que los recursos antiguos; sin embargo, los identificadores de recurso son diferentes y no se restauran
los datos de los recursos antiguos. Por ejemplo, al volver a crear un entorno con una instancia de base de
datos de Amazon RDS se crea una nueva base de datos con la misma configuración, pero no se aplica
una snapshot a la nueva base de datos.
Para volver a crear un entorno en ejecución con la API de Elastic Beanstalk, utilice la acción
RebuildEnvironment con la CLI de AWS o el SDK de AWS.
A menos que utilice su propio nombre de dominio personalizado con su entorno terminado, el
entorno usará un subdominio de elasticbeanstalk.com. Estos subdominios se comparten dentro de
una región de Elastic Beanstalk. Por lo tanto, se pueden utilizar en cualquier entorno creado por
cualquier cliente en la misma región. Aunque su entorno se haya terminado, otro entorno podría
utilizar su subdominio. En este caso, la reconstrucción del entorno producirá un error.
Puede evitar este problema usando un dominio personalizado. Consulte El nombre de dominio de
su entorno de Elastic Beanstalk (p. 251) para obtener más información.
Los entornos recién terminados aparecen en la información de la aplicación al cabo de una hora como
máximo. Durante este tiempo, puede ver los eventos del entorno en su panel (p. 78) y usar la
acción (p. 80) Restore environment para volver a crearlo.
Para volver a crear un entorno que ya no está visible, utilice la opción Restore terminated environment de
la página de la aplicación.
162
AWS Elastic Beanstalk Developer Guide
Tipos de entornos
5. Elija Restore.
Elastic Beanstalk intenta crear un nuevo entorno con el mismo nombre, ID y configuración. Si existe un
entorno con el mismo nombre o dirección URL cuando intenta reconstruirlo, la reconstrucción produce un
error. La eliminación de la versión de la aplicación que se implementó en el entorno también producirá un
error durante la reconstrucción del entorno.
Si utiliza la CLI de EB para administrar su entorno, utilice el comando eb restore para volver a crear un
entorno terminado.
$ eb restore e-vdnftxubwq
Para volver a crear un entorno terminado con la API de Elastic Beanstalk, utilice la acción
RebuildEnvironment con la CLI de AWS o el SDK de AWS.
Tipos de entornos
En AWS Elastic Beanstalk puede crear un entorno de Auto Scaling con balanceo de carga o un entorno de
una sola instancia. El tipo de entorno necesario depende de la aplicación que implemente. Por ejemplo,
puede desarrollar y probar una aplicación en un entorno de una sola instancia para ahorrar costos y
después actualizar ese entorno a un entorno de Auto Scaling con balanceo de carga cuando la aplicación
esté lista para producción.
Note
Una capa de entorno de trabajo para una aplicación web que procese tareas en segundo plano no
incluye un balanceador de carga. Sin embargo, un entorno de trabajo se amplía de manera eficaz
añadiendo instancias al grupo de Auto Scaling para procesar los datos de la cola de Amazon SQS
cuando la carga lo necesite.
163
AWS Elastic Beanstalk Developer Guide
Entorno de una sola instancia
el aumento de la carga de su aplicación. Si la carga de la aplicación se reduce, Amazon EC2 Auto Scaling
detiene instancias, pero siempre deja en ejecución el número mínimo especificado de instancias. Si
la aplicación requiere escalabilidad con la opción de que se ejecute en varias zonas de disponibilidad,
utilice un entorno de Auto Scaling con balanceo de carga. Si no está seguro de qué tipo de entorno debe
seleccionar, puede elegir uno y, si es necesario, cambiarlo más adelante.
Utilice un entorno de una sola instancia si prevé que su aplicación en producción tendrá poco tráfico o si
realiza un desarrollo remoto. Si no está seguro de qué tipo de entorno debe seleccionar, puede elegir uno
y, si es necesario, puede cambiarlo más adelante. Para obtener más información, consulte Cambiar el tipo
de entorno (p. 164).
164
AWS Elastic Beanstalk Developer Guide
Entornos de trabajo
5. En la lista Environment type (Tipo de entorno), seleccione el tipo de entorno que desee.
6. Si el entorno se encuentra en una VPC, seleccione las subredes en las que desea colocar las
instancias de Elastic Load Balancing y Amazon EC2. Cada zona de disponibilidad en la que se
ejecute la aplicación debe tener ambas. Consulte Uso de Elastic Beanstalk con Amazon Virtual Private
Cloud (p. 562) para obtener más información.
7. Seleccione Save (Guardar).
Pueden transcurrir varios minutos hasta que se actualice el entorno mientras Elastic Beanstalk
aprovisiona los recursos de AWS.
Una tarea de larga ejecución aumenta significativamente el tiempo que se tarda en completar una solicitud,
como el procesamiento de imágenes o vídeos, el envío de correo electrónico o la generación de un archivo
ZIP. Estas operaciones pueden tardar solamente uno o dos segundos en completarse, pero un retraso de
unos segundos es mucho para una solicitud web que de otro modo se completaría en menos de 500 ms.
Una opción consiste en generar un proceso de trabajo localmente y procesar la tarea de forma asíncrona.
Esto funcionará si la instancia pueda hacerse cargo de todas las tareas que se le envían. Sin embargo,
cuando el nivel de carga es alto, la instancia podría saturarse con tareas en segundo plano y dejar de
responder a solicitudes de mayor prioridad. Si los distintos usuarios pueden generar varias tareas, el
aumento de la carga podrían no corresponderse a un aumento de los usuarios, por lo que resultará difícil
escalar la capa de servidor web de forma eficaz.
165
AWS Elastic Beanstalk Developer Guide
Entornos de trabajo
Para evitar que se ejecuten tareas de ejecución prolongada localmente, puede utilizar el SDK de AWS
de su lenguaje de programación para enviarlas a una cola de Amazon Simple Queue Service (Amazon
SQS) y ejecutar el proceso correspondiente a cada una de ellas en un conjunto distinto de instancias. A
continuación, diseñe estas instancias de trabajo para obtener los elementos de la cola solo cuando tengan
la capacidad de ejecutarlos, lo que evitará que se sobrecarguen.
Los entornos de trabajo de Elastic Beanstalk simplifican este proceso mediante la administración de la
cola de Amazon SQS y la ejecución de un proceso daemon (p. 167) en cada instancia que lea de la cola
automáticamente. Cuando el daemon obtiene un elemento de la cola, envía una solicitud HTTP POST
localmente a http://localhost/ en el puerto 80 con el contenido de la cola en el cuerpo del mensaje.
Todo lo que su aplicación tiene que hacer es ejecutar la tarea de larga ejecución en respuesta a la solicitud
POST. Puede configurar el daemon (p. 170) para publicar en una ruta diferente, usar un tipo MIME
distinto de una aplicación/JSON, conectarse a una cola existente o personalizar las conexiones (solicitudes
simultáneas máximas), los tiempos de espera y los reintentos.
Con las tareas periódicas (p. 168), también puede configurar el daemon de trabajo para que ponga
en cola los mensajes de acuerdo con una programación cron. Cada tarea periódica puede realizar una
solicitud POST en una ruta diferente. Habilite las tareas periódicas incluyendo un archivo YAML en el
código fuente que defina la programación y la ruta de cada tarea.
166
AWS Elastic Beanstalk Developer Guide
El daemon de SQS del entorno de trabajo
Note
Secciones
• El daemon de SQS del entorno de trabajo (p. 167)
• Colas de mensajes fallidos (p. 168)
• Tareas periódicas (p. 168)
• Uso de Amazon CloudWatch para Auto Scaling en capas de entorno de trabajo (p. 169)
• Configuración de entornos de trabajo (p. 170)
Cuando la aplicación en el entorno de trabajo devuelve una respuesta 200 OK para confirmar que ha
recibido y procesado correctamente la solicitud, el daemon envía una llamada DeleteMessage a la
cola de Amazon SQS para que el mensaje se elimine de la cola. Si la aplicación devuelve una respuesta
distinta a 200 OK, Elastic Beanstalk espera el periodo especificado en ErrorVisibilityTimeout para
volver a poner el mensaje en la cola. Si no hay respuesta, Elastic Beanstalk espera el periodo especificado
en InactivityTimeout para volver a poner el mensaje en la cola, de forma que el mensaje esté
disponible para otro intento durante el procesamiento.
Note
Las propiedades de las colas de Amazon SQS (orden de los mensajes, entrega "al menos una
vez" y muestreo de mensajes) pueden afectar al modo en que diseña una aplicación web para un
entorno de trabajo. Para obtener más información, consulte Propiedades de filas distribuidas en la
Guía para desarrolladores de Amazon Simple Queue Service.
Amazon SQS elimina automáticamente los mensajes que llevan en la cola más tiempo que el valor
especificado en RetentionPeriod.
Encabezados HTTP
Nombre Valor
aws-sqsd/1.11
X-Aws-Sqsd-Msgid ID de mensaje de SQS, que se utiliza para detectar tormentas de mensajes (un
número inusualmente elevado de mensajes nuevos).
X-Aws-Sqsd-First- Hora UTC, en formato ISO 8601, a la que se recibió por primera vez el
Received-At mensaje.
167
AWS Elastic Beanstalk Developer Guide
Colas de mensajes fallidos
Encabezados HTTP
Si especifica una cola de Amazon SQS generada automáticamente en el momento de crear la capa del
entorno de trabajo, se habilita de forma predeterminada una cola de mensajes fallidos para un entorno de
trabajo. Si elige una cola de SQS existente para su entorno de trabajo, debe utilizar SQS para configurar
una cola de mensajes fallidos de manera independiente. Para obtener información sobre cómo utilizar SQS
para configurar una cola de mensajes fallidos, consulte Using Amazon SQS Dead Letter Queues.
No puede deshabilitar las colas de mensajes fallidos. Los mensajes que no se puedan entregar siempre se
envían a una cola de mensajes fallidos. No obstante, puede desactivar esta funcionalidad de forma eficaz
estableciendo la opción MaxRetries en el valor válido máximo de 100.
Note
Para obtener más información sobre el ciclo de vida de un mensaje de SQS, consulte Message Lifecycle.
Tareas periódicas
Puede definir tareas periódicas en un archivo denominado cron.yaml en su paquete de código fuente
para añadir automáticamente trabajos a la cola del entorno de trabajo a intervalos regulares.
Por ejemplo, el siguiente archivo cron.yaml crea dos tareas periódicas, una que se ejecuta cada 12
horas y otra que se ejecuta a las 11 p.m. UTC todos los días.
Example cron.yaml
version: 1
cron:
- name: "backup-job"
url: "/backup"
schedule: "0 */12 * * *"
- name: "audit"
url: "/audit"
168
AWS Elastic Beanstalk Developer Guide
Uso de Amazon CloudWatch para Auto
Scaling en capas de entorno de trabajo
El name debe ser único para cada tarea. La dirección URL es la ruta a la que se envía la solicitud POST
para desencadenar el trabajo. La programación es una expresión CRON que determina cuándo se ejecuta
la tarea.
Cuando se ejecuta una tarea, el daemon publica un mensaje en la cola de SQS del entorno con un
encabezado que indica el trabajo que debe realizarse. Cualquier instancia del entorno puede obtener el
mensaje y procesar el trabajo.
Note
Si configura su entorno de trabajo con una cola de SQS existente y elige una cola FIFO de
Amazon SQS, las tareas periódicas no serán compatibles.
Elastic Beanstalk usa la funcionalidad de elección de líder para determinar qué instancia de su entorno
de trabajo pone en cola la tarea periódica. Cada instancia intenta convertirse en líder escribiendo en una
tabla de Amazon DynamoDB. La primera instancia que lo logra es el líder y debe seguir escribir en la
tabla para mantener el estado de líder. Si el líder se queda fuera de servicio, otra instancia ocupa su lugar
rápidamente.
Para las tareas periódicas, el daemon de trabajo establece los siguientes encabezados adicionales.
Encabezados HTTP
Nombre Valor
Los mensajes que no se procesaron cuando se terminó la instancia se devuelven a la cola, donde
pueden ser procesados por otro daemon de la instancia que siga ejecutándose.
También puede configurar otras alarmas de CloudWatch, según sea necesario, mediante la Consola de
administración de AWS, la CLI o el archivo de opciones. Para obtener más información, consulte Uso de
169
AWS Elastic Beanstalk Developer Guide
Configuración de entornos de trabajo
Elastic Beanstalk con Amazon CloudWatch (p. 467) y Crear un grupo de Auto Scaling con políticas de
escalado por pasos.
Note
Puede configurar la ruta de URL para enviar los mensajes de cola de proceso de trabajo, pero no
puede configurar el puerto IP. Elastic Beanstalk siempre publica los mensajes de cola de proceso
de trabajo en el puerto 80. La aplicación de entorno de proceso de trabajo o su proxy deben
escuchar en el puerto 80.
170
AWS Elastic Beanstalk Developer Guide
Configuración de entornos de trabajo
• Worker queue (Cola de procesos de trabajo): especifique la cola de Amazon SQS de la que lee el
daemon. Si dispone de una, puede elegir una cola existente. Si elige Autogenerated queue (Cola
generada automáticamente), Elastic Beanstalk crea una cola de Amazon SQS y su Worker queue URL
(URL de la cola de procesos de trabajo) correspondiente.
Note
Cuando elija Autogenerated queue (Cola generada automáticamente), la cola que crea Elastic
Beanstalk es una cola de Amazon SQS estándar. Cuando elija una cola existente, puede
proporcionar una cola estándar o una cola FIFO de Amazon SQS. Tenga en cuenta que, si
proporciona una cola FIFO, las tareas periódicas (p. 168) no serán compatibles.
• Worker queue URL (URL de cola de entorno de trabajo): si elige una cola de trabajo existente, esta
opción muestra la URL asociada a esa cola de Amazon SQS.
• HTTP path (Ruta HTTP): especifique la rula relativa a la aplicación que recibirá los datos de la cola de
Amazon SQS. Los datos se insertan en el cuerpo de un mensaje HTTP POST. El valor predeterminado
es /.
• MIME type (Tipo MIME): indique el tipo MIME que usa el mensaje HTTP POST. El valor predeterminado
es application/json. Sin embargo, cualquier valor es válido, ya que puede crear y después
especificar su propio tipo MIME.
• Max retries (Número máximo de reintentos): especifique el número máximo de veces que Elastic
Beanstalk intenta enviar el mensaje a la cola de Amazon SQS antes de mover el mensaje a la cola de
mensajes fallidos. El valor predeterminado es 10. Puede especificar de 1 a 100.
• HTTP connections (Conexiones HTTP): especifique el número máximo de conexiones simultáneas
que el daemon puede realizar en cualquier aplicación dentro de una instancia Amazon EC2. El valor
predeterminado es 50. Puede especificar de 1 a 100.
• Connection timeout (Tiempo de espera de la conexión): indique la cantidad de tiempo, en segundos,
que se va a esperar a que las conexiones con una aplicación se realicen correctamente. El valor
predeterminado es 5. Puede especificar de 1 a 60 segundos.
• Inactivity timeout (Tiempo de espera de inactividad): indique la cantidad de tiempo, en segundos, que
se debe a esperar para que llegue la respuesta de una conexión existente con una aplicación. El valor
predeterminado es 180. Puede especificar de 1 a 36000 segundos.
• Visibility timeout (Tiempo de espera de visibilidad): indique la cantidad de tiempo, en segundos, durante
la que se bloquea el procesamiento de un mensaje entrante procedente de la cola de Amazon SQS.
Una vez transcurrido el período de tiempo configurado, el mensaje vuelve a hacerse visible en la cola
para que cualquier otro daemon pueda leerlo. Elija un valor superior al que necesita su aplicación para
procesar mensajes, hasta 43200 segundos.
• Error visibility timeout (Tiempo de espera de visibilidad del error): indica la cantidad de tiempo, en
segundos, que transcurre antes de que Elastic Beanstalk devuelva un mensaje a la cola de Amazon
SQS cuando se produce un error explícito en un intento de procesamiento. Puede especificar de 0 a
43200 segundos.
• Retention period (Período de retención): indique el periodo de tiempo, en segundos, durante el que un
mensaje es válido y se procesa de forma activa. El valor predeterminado es 345600. Puede especificar
de 60 a 1209600 segundos.
Si utiliza una cola de Amazon SQS existente, los valores que configura al crear un entorno de
trabajo pueden entrar en conflicto con los valores establecidos directamente en Amazon SQS. Por
ejemplo, si configura un entorno de trabajo con un valor de RetentionPeriod mayor que el valor de
MessageRetentionPeriod definido en Amazon SQS, Amazon SQS elimina el mensaje cuando supere
el valor de MessageRetentionPeriod.
171
AWS Elastic Beanstalk Developer Guide
Enlaces de entorno
Actualmente, Elastic Beanstalk admite enlaces de entorno para todas las plataformas excepto
Multicontainer Docker.
Con los enlaces de entorno, puede definir las conexiones entre los entornos de los componentes de la
aplicación como referencias con nombre. Cuando crea un entorno que define un enlace, Elastic Beanstalk
establece una variable de entorno con el mismo nombre que el enlace. El valor de la variable es el punto
de enlace que puede utilizar para conectarse al otro componente, que puede ser un servidor web o un
entorno de trabajo.
Por ejemplo, si la aplicación se compone de un frontend que recopila direcciones de correo electrónico y
un proceso de trabajo que envía un email de bienvenida a las direcciones de correo electrónico obtenidas
por el frontend, puede crear un enlace con el proceso de trabajo del frontend y hacer que el frontend
detecte automáticamente el punto de enlace (URL de la cola) del proceso de trabajo.
Defina los enlaces con otros entornos en un manifiesto de entorno (p. 369), un archivo con formato
YAML llamado env.yaml situado en la raíz del código fuente de la aplicación. En el siguiente manifiesto,
se define un enlace con un entorno llamado "worker":
~/workspace/my-app/frontend/env.yaml
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentLinks:
"WORKERQUEUE": "worker"
Si se crea un entorno con una versión de la aplicación que incluye el manifiesto de entorno anterior, Elastic
Beanstalk buscará un entorno llamado worker que pertenezca a la misma aplicación. Si ese entorno
existe, Elastic Beanstalk crea una propiedad de entorno llamada WORKERQUEUE. El valor de WORKERQUEUE
es la URL de cola de Amazon SQS. La aplicación frontend puede leer esta propiedad igual que una
variable de entorno. Consulte Uso de configuraciones guardadas de Elastic Beanstalk (p. 361) para
obtener más información.
Para utilizar enlaces de entorno, agregue un manifiesto de entorno al código fuente de la aplicación y
cárguelo con la CLI de EB, la CLI de AWS o un SDK. Si utiliza la CLI de AWS o un SDK, defina la marca
process cuando llame a CreateApplicationVersion:
172
AWS Elastic Beanstalk Developer Guide
Enlaces de entorno
Esta opción le indica a Elastic Beanstalk que valide el manifiesto del entorno y los archivos de
configuración del paquete de código fuente cuando se cree la versión de la aplicación. La CLI de EB
establece esta marca automáticamente cuando hay un manifiesto de entorno en el directorio del proyecto.
Cree sus entornos con normalidad utilizando cualquier cliente. Cuando necesita terminar entornos, utilice
primero el enlace. Si un entorno está vinculado a otro entorno, Elastic Beanstalk impedirá que el entorno
vinculado se termine. Para anular esta medida de protección, utilice la marca ForceTerminate. Este
parámetro está disponible en la CLI de AWS --force-terminate:
173
AWS Elastic Beanstalk Developer Guide
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Este tema se centra en las opciones de configuración de recursos disponibles en la Consola de Elastic
Beanstalk. Los siguientes temas muestran cómo configurar el entorno en la consola. También describen
los espacios de nombres subyacentes que se corresponden a las opciones de la consola que se deben
utilizar con los archivos de configuración o las opciones de configuración de la API. Puede obtener más
información sobre los métodos de configuración avanzada en el siguiente capítulo (p. 252).
Temas
174
AWS Elastic Beanstalk Developer Guide
Configuración usando la consola
Puede elegir dos vistas para esta página. Active Table View (Vista de tabla) para ver una lista de opciones
agrupadas por categoría.
175
AWS Elastic Beanstalk Developer Guide
Página de información general de la configuración
Puede buscar una opción por su nombre o valor escribiendo términos de búsqueda en un cuadro de
búsqueda. A medida que escribe, la lista se reduce y muestra solo las opciones que coinciden con los
términos de búsqueda.
176
AWS Elastic Beanstalk Developer Guide
Página de información general de la configuración
Active Grid View (Vista de cuadrícula) para ver cada categoría en un cuadro distinto (tarjeta de
configuración).
Seleccione Modify (Modificar) en una categoría de configuración para dirigirse a una página de
configuración relacionada, en la que podrá ver los valores de opción completos y realizar cambios. Cuando
haya terminado de ver y modificar opciones, puede elegir una de las siguientes acciones:
• Cancel (Cancelar): vuelve al panel del entorno sin aplicar los cambios de configuración. Si elige Cancel
(Cancelar), la consola pierde los cambios pendientes que haya realizado en cualquier categoría de
configuración.
177
AWS Elastic Beanstalk Developer Guide
Página Review Changes (Revisar cambios)
También puede cancelar los cambios en la configuración seleccionando otra página de la consola, como
Dashboard (Panel) o Logs (Registros). En este caso, si hay cambios de configuración pendientes, la
consola le pedirá que confirme que acepta perderlos.
• Review changes (Revisar cambios): obtenga un resumen de todos los cambios pendientes que haya
realizado en cualquiera de las categorías de configuración. Para obtener más información, consulte
Página Review Changes (Revisar cambios) (p. 178).
• Apply configuration (Aplicar configuración): se aplican los cambios que haya realizado en cualquiera
de las categorías de configuración en su entorno. En algunos casos se le pedirá que confirme una
consecuencia de una de sus decisiones de configuración.
Ambas tablas muestran cada opción como una combinación de Namespace (Espacio de nombres)
y Option Name (Nombre de la opción) con la que Elastic Beanstalk lo identifica. Para obtener más
información, consulte Opciones de configuración (p. 252).
Por ejemplo, es posible que tenga que realizar estos cambios de configuración:
En la siguiente imagen se muestra la lista de los cambios de configuración en la página Review Changes
(Revisar cambios).
178
AWS Elastic Beanstalk Developer Guide
Instancias EC2
Cuando haya terminado de revisar los cambios, puede elegir una de las siguientes acciones:
El grupo de Auto Scaling del entorno administra las instancias EC2 en las que se ejecuta la aplicación.
Si se realizan cambios en la configuración de lanzamiento del grupo de Auto Scaling será necesario
reemplazar todas las instancias (p. 140) y activar una actualización continua (p. 141) o una actualización
inmutable (p. 146), en función de la opción configurada. Para obtener más información acerca de cómo
configurar el grupo de Auto Scaling del entorno, consulte Configuración del grupo de Auto Scaling del
entorno (p. 184).
179
AWS Elastic Beanstalk Developer Guide
Configuración de instancias EC2 del entorno
Secciones
• Configuración de instancias EC2 del entorno (p. 180)
• El espacio de nombres aws:autoscaling:launchconfiguration (p. 183)
Opciones
• Tipo de instancia (p. 181)
• ID de la AMI (p. 182)
• Intervalo de monitorización (p. 182)
• Volumen raíz (dispositivo de arranque) (p. 182)
• Grupos de seguridad (p. 182)
180
AWS Elastic Beanstalk Developer Guide
Configuración de instancias EC2 del entorno
Tipo de instancia
La opción Instance type (Tipo de instancia) determina el tipo de la instancia EC2 iniciada en la que se
ejecuta la aplicación. Elija una instancia que tenga la capacidad suficiente como para ejecutar la aplicación
con carga de trabajo, pero no una capacidad excesiva como para que esté inactiva la mayor parte del
tiempo. En escenarios de desarrollo, la familia de instancias t2 ofrece una capacidad moderada, que puede
ampliarse por ráfagas durante cortos períodos de tiempo.
En el caso de las aplicaciones de alta disponibilidad y gran escala, utilice un conjunto de instancias para
garantizar que la capacidad no se ve muy afectada si una instancia deja de funcionar. Comience con un
tipo de instancia que le permita ejecutar cinco instancias bajo una carga moderada durante el horario
normal. Si alguna instancia falla, las demás instancias podrán absorber el resto del tráfico. Esta reserva de
capacidad también proporciona tiempo para que el entorno pueda escalarse cuando el tráfico comience a
aumentar durante las horas de mayor actividad.
181
AWS Elastic Beanstalk Developer Guide
Configuración de instancias EC2 del entorno
Para obtener más información sobre las familias y los tipos de instancias EC2, consulte Instance Types
(Tipos de instancia) en la Guía del usuario de Amazon Elastic Compute Cloud.
ID de la AMI
La Amazon Machine Image (AMI) es la imagen de máquina de Amazon Linux o Windows Server que AWS
Elastic Beanstalk utiliza para lanzar instancias EC2 en el entorno. Elastic Beanstalk cuenta con imágenes
de máquina que contienen las herramientas y recursos necesarios para ejecutar la aplicación.
Elastic Beanstalk selecciona una AMI predeterminada en el entorno en función de la región, la plataforma
y el tipo de instancia elegidos. Si ha creado una AMI personalizada (p. 370), sustituya el ID de la AMI
predeterminada por el suyo.
Intervalo de monitorización
De forma predeterminada, las instancias del entorno publican métricas de estado básicas (p. 413) en
CloudWatch con intervalos de cinco minutos sin costo adicional.
Si es necesario, puede modificar el Root volume type (Tipo de volumen raíz) para utilizar un volumen de
almacenamiento magnético o un volumen SSD de IOPS provisionadas y, en caso necesario, aumentar
el tamaño. En el caso de los volúmenes de IOPS provisionadas, también deberá seleccionar el número
de IOPS que se van a aprovisionar. Seleccione un tipo de volumen que se ajuste a sus necesidades de
desempeño y precio.
Para obtener más información, consulte Tipos de volumen de Amazon EBS y Detalles del producto
Amazon EBS.
Grupos de seguridad
Los grupos de seguridad adjuntados a las instancias determinan qué tráfico puede llegar a las instancias
(entrada) y qué tráfico puede abandonar las instancias (salida). Elastic Beanstalk crea un grupo de
seguridad que permite el tráfico procedente del balanceador de carga en los puertos estándar para HTTP
(80) y HTTPS (443).
Puede especificar grupos de seguridad adicionales que haya creado para permitir el tráfico en otros
puertos o que proceda de otros orígenes. Por ejemplo, puede crear un grupo de seguridad para el acceso
de SSH que permita la entrada en el puerto 22 de un intervalo restringido de direcciones IP o, si desea
aumentar la seguridad, que permita el tráfico procedente de un host bastion al que solo usted tenga
acceso.
Note
Para permitir el tráfico entre las instancias del entorno A y las del entorno B, puede agregar una
regla al grupo de seguridad que Elastic Beanstalk ha adjuntado al entorno B y especificar el grupo
de seguridad que Elastic Beanstalk ha adjuntado al entorno A. Esto permite entrada desde las
instancias del entorno A o la salida hacia ellas. Sin embargo, esto crea una dependencia entre
182
AWS Elastic Beanstalk Developer Guide
El espacio de nombres aws:autoscaling:launchconfiguration
los dos grupos de seguridad. Si posteriormente intenta terminar el entorno A, Elastic Beanstalk
no podrá eliminar el grupo de seguridad del entorno, ya que el grupo de seguridad del entorno B
depende de él.
Un enfoque más seguro sería crear un grupo de seguridad independiente, adjuntarlo al entorno A
y especificarlo en una regla del grupo de seguridad del entorno B.
Para obtener más información sobre los grupos de seguridad de Amazon EC2, consulte Grupos de
seguridad de Amazon EC2 en la Guía del usuario de Amazon Elastic Compute Cloud.
El espacio de nombres
aws:autoscaling:launchconfiguration
Puede utilizar las opciones de configuración (p. 252) del espacio de nombres
aws:autoscaling:launchconfiguration (p. 273) para configurar el grupo de Auto Scaling, que
incluye otras opciones que no están disponibles en la consola.
El siguiente archivo de configuración (p. 320) configura las opciones básicas mostradas en este tema, las
opciones EC2KeyName e IamInstanceProfile tratadas en Seguridad (p. 231) y una opción adicional,
BlockDeviceMappings, que no está disponible en la consola.
option_settings:
aws:autoscaling:launchconfiguration:
InstanceType: m1.small
SecurityGroups: my-securitygroup
EC2KeyName: my-keypair
MonitoringInterval: "1 minute"
IamInstanceProfile: "aws-elasticbeanstalk-ec2-role"
BlockDeviceMappings: "/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0"
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
El grupo de Auto Scaling también administra la configuración de lanzamiento para las instancias de su
entorno. Puede modificar la configuración de lanzamiento (p. 179) para cambiar el tipo de instancia, par
de claves, almacenamiento de Amazon Elastic Block Store (Amazon EBS) y otros ajustes que solo se
pueden configurar al lanzar una instancia.
El grupo de Auto Scaling utiliza dos alarmas de Amazon CloudWatch para activar operaciones de
escalado. Los disparadores predeterminados adaptan su capacidad cuando el tráfico de la red saliente
promedio de cada instancia es superior a 6 MiB o inferior a 2 MiB durante un período de cinco minutos.
183
AWS Elastic Beanstalk Developer Guide
Configuración del grupo de Auto Scaling del entorno
Para utilizar Amazon EC2 Auto Scaling de forma eficaz, configure desencadenadores (p. 187) adecuados
para su aplicación, el tipo de instancia y los requisitos de servicio. Puede optar por el escalado en función
de varias estadísticas, como la latencia, E/S de disco, la utilización de la CPU y el recuento de solicitudes.
Para optimizar el uso por parte de su entorno de instancias Amazon EC2 a través de períodos predecibles
de picos de tráfico, configure el grupo de Auto Scaling para cambiar el recuento de instancias de manera
programada (p. 189). Puede programar cambios en la configuración de su grupo que pueden producirse
con una periodicidad diaria o semanal, o bien programar cambios puntuales para prepararse para eventos
de marketing que dirigirán una gran cantidad de tráfico a su sitio.
Amazon EC2 Auto Scaling monitoriza el estado de cada instancia Amazon EC2 que lanza. Si una instancia
termina de forma inesperada, Amazon EC2 Auto Scaling lo detecta y lanza una instancia de sustitución.
Para configurar el grupo para utilizar el mecanismo de comprobación de estado del balanceador de carga,
consulte Configuración de comprobaciones de estado de Auto Scaling (p. 192).
Temas
• Configuración del grupo de Auto Scaling del entorno (p. 184)
• El espacio de nombres aws:autoscaling:asg (p. 186)
• Disparadores de Auto Scaling (p. 187)
• Acciones programadas de Auto Scaling (p. 189)
• Configuración de comprobaciones de estado de Auto Scaling (p. 192)
5. En la sección Auto Scaling Group (Grupo de Auto Scaling), configure los siguientes ajustes.
184
AWS Elastic Beanstalk Developer Guide
Configuración del grupo de Auto Scaling del entorno
• Environment type (Tipo de entorno): seleccione Load balanced (Con balanceo de carga).
• Min instances (Número mínimo de instancias): el número mínimo de instancias EC2 que el grupo
debe incluir en cualquier momento. El grupo comienza con el recuento mínimo y agrega instancias
cuando se cumple la condición del disparador de aumento.
• Max instances (Número mínimo de instancias): el número máximo de instancias EC2 que el grupo
debe incluir en cualquier momento.
Note
Si lanza su entorno en una VPC personalizada, no puede configurar esta opción. En una VPC
personalizada, usted selecciona zonas de disponibilidad para las subredes que asigna a su entorno.
• Scaling cooldown (Periodo de recuperación de escalado): la cantidad de tiempo que debe esperar
en segundos a que las instancias se lancen o terminen después del escalado, antes de seguir
evaluando desencadenadores. Para obtener más información, consulte Periodos de recuperación
de escalado.
185
AWS Elastic Beanstalk Developer Guide
El espacio de nombres aws:autoscaling:asg
6. Seleccione Aplicar.
option_settings:
aws:autoscaling:asg:
Availability Zones: Any
Cooldown: '720'
Custom Availability Zones: 'us-west-2a,us-west-2b'
MaxSize: '4'
MinSize: '2'
186
AWS Elastic Beanstalk Developer Guide
Desencadenadores
187
AWS Elastic Beanstalk Developer Guide
Desencadenadores
6. Seleccione Aplicar.
option_settings:
188
AWS Elastic Beanstalk Developer Guide
Acciones programadas
AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger:
LowerBreachScaleIncrement: '-1'
AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger:
UpperBreachScaleIncrement: '1'
AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger:
UpperThreshold: '6000000'
AWSEBCloudwatchAlarmLow.aws:autoscaling:trigger:
BreachDuration: '5'
EvaluationPeriods: '1'
LowerThreshold: '2000000'
MeasureName: NetworkOut
Period: '5'
Statistic: Average
Unit: Bytes
Puede definir hasta 120 acciones programadas activas por cada entorno. Elastic Beanstalk también retiene
hasta 150 acciones programadas caducadas, que puede reutilizar actualizando su configuración.
• Name (Nombre): especifique un nombre único con hasta 255 caracteres alfanuméricos sin espacios.
• Instances (Instancias): elija el número mínimo y máximo de instancias para aplicar al grupo de Auto
Scaling.
189
AWS Elastic Beanstalk Developer Guide
Acciones programadas
• Desired capacity (Capacidad deseada) (opcional): establezca la capacidad deseada inicial para
el grupo de Auto Scaling. Después de aplicar la acción programada, los disparadores ajustan la
capacidad deseada en función de su configuración.
• Occurrence (Incidencia): elija Recurring (Periódica) para repetir la acción de escalado de manera
programada.
• Start time (Hora de inicio): en el caso de acciones puntuales, elija la fecha y la hora para ejecutar la
acción. En el caso de acciones recurrentes, una hora de inicio es opcional. Especifíquelo para elegir
cuándo activar la acción. Si no se especifica, la acción se activa inmediatamente, y se repite según
la expresión Recurrence (Recurrencia).
• Recurrence (Recurrencia): use una expresión CRON para especificar la frecuencia con la que desea
que se produzca la acción programada. Por ejemplo, 30 6 * * 2 ejecuta la acción cada martes a
las 06:30 UTC.
• End time (Hora de finalización) (opcional): para acciones recurrentes, elija cuándo desactivar la
acción. Si no especifica un valor de EndTime, la acción se repite según la expresión Recurrence
(Recurrencia).
Cuando una finaliza acción programada, Amazon EC2 Auto Scaling no regresa automáticamente a
su configuración anterior. Configure una segunda acción programada para que Amazon EC2 Auto
Scaling regrese a la configuración original según sea necesario.
7. Elija Add.
8. Seleccione Aplicar.
Note
Las acciones programadas no se guardarán hasta que se apliquen.
Example scheduled-scale-up-specific-time-long.config
Este archivo de configuración indica a Elastic Beanstalk que escale de cinco a diez instancias en
2015-12-12T00:00:00Z.
option_settings:
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledScaleUpSpecificTime
option_name: MinSize
value: '5'
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledScaleUpSpecificTime
option_name: MaxSize
190
AWS Elastic Beanstalk Developer Guide
Acciones programadas
value: '10'
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledScaleUpSpecificTime
option_name: DesiredCapacity
value: '5'
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledScaleUpSpecificTime
option_name: StartTime
value: '2015-12-12T00:00:00Z'
Example scheduled-scale-up-specific-time.config
Para utilizar la sintaxis abreviada con la CLI de EB o con los archivos de configuración, anteponga el
nombre del recurso al espacio de nombres.
option_settings:
ScheduledScaleUpSpecificTime.aws:autoscaling:scheduledaction:
MinSize: '5'
MaxSize: '10'
DesiredCapacity: '5'
StartTime: '2015-12-12T00:00:00Z'
Example scheduled-scale-down-specific-time.config
Este archivo de configuración indica a Elastic Beanstalk que reduzca el escalado en
2015-12-12T07:00:00Z.
option_settings:
ScheduledScaleDownSpecificTime.aws:autoscaling:scheduledaction:
MinSize: '1'
MaxSize: '1'
DesiredCapacity: '1'
StartTime: '2015-12-12T07:00:00Z'
Example scheduled-periodic-scale-up.config
Este archivo de configuración indica a Elastic Beanstalk que aumente el escalado cada día a las 9:00. La
acción está programada para que empiece el 14 de mayo de 2015 y termine el 12 de enero de 2016.
option_settings:
ScheduledPeriodicScaleUp.aws:autoscaling:scheduledaction:
MinSize: '5'
MaxSize: '10'
DesiredCapacity: '5'
StartTime: '2015-05-14T07:00:00Z'
EndTime: '2016-01-12T07:00:00Z'
Recurrence: 0 9 * * *
Example scheduled-periodic-scale-down.config
Este archivo de configuración indica a Elastic Beanstalk que reduzca el escalado cada viernes a las
18:00 para que no haya ninguna instancia en ejecución. Si sabe que la aplicación permanece inactiva la
mayor parte del tiempo fuera del horario laboral normal, puede crear una acción programada similar. Si la
aplicación debe permanecer desactivada fuera del horario laboral, cambie MaxSize a 0.
option_settings:
ScheduledPeriodicScaleDown.aws:autoscaling:scheduledaction:
MinSize: '0'
MaxSize: '1'
DesiredCapacity: '0'
191
AWS Elastic Beanstalk Developer Guide
Configuración de comprobaciones de estado de
StartTime: '2015-05-14T07:00:00Z'
EndTime: '2016-01-12T07:00:00Z'
Recurrence: 0 18 * * *
Example scheduled-weekend-scale-down.config
Este archivo de configuración indica a Elastic Beanstalk que reduzca el escalado cada viernes a las
18:00. Si sabe que su aplicación no recibe tanto tráfico durante el fin de semana, puede crear una acción
programada similar.
option_settings:
ScheduledWeekendScaleDown.aws:autoscaling:scheduledaction:
MinSize: '1'
MaxSize: '4'
DesiredCapacity: '1'
StartTime: '2015-12-12T07:00:00Z'
EndTime: '2016-01-12T07:00:00Z'
Recurrence: 0 18 * * 5
Las comprobaciones de estado de Amazon EC2 solo se aplican al estado de la instancia, no al estado
de la aplicación, servidor o contenedores Docker que se ejecuten en la instancia. Si la aplicación se
bloquea, pero la instancia en la que se ejecuta sigue en buen estado, puede que la instancia se expulse
del balanceador de carga, pero Auto Scaling no la sustituirá automáticamente. El comportamiento
predeterminado es adecuado la solución de problemas. Si Auto Scaling sustituyera la instancia en cuanto
se produjera un bloqueo en la aplicación, el problema podría pasar desapercibido, incluso aunque el
bloqueo se produjera nada más arrancar la instancia.
Si desea que Auto Scaling sustituya las instancias cuya aplicación ha dejado de responder, puede
utilizar un archivo de configuración (p. 320) para configurar el grupo de Auto Scaling para que use las
comprobaciones de estado de Elastic Load Balancing. En el siguiente ejemplo se establece el grupo que
deben usar las comprobaciones de estado del balanceador de carga, además de la comprobación de
estado de Amazon EC2, para determinar el estado de una instancia.
Example .ebextensions/autoscaling.config
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 300
De forma predeterminada, la comprobación de estado de Elastic Load Balancing está configurada para
intentar establecer una conexión TCP con su instancia en el puerto 80. Esto confirma que el servidor web
192
AWS Elastic Beanstalk Developer Guide
Balanceador de carga
que se ejecuta en la instancia está aceptando conexiones. Sin embargo, es posible que desee personalizar
la comprobación de estado del balanceador de carga (p. 193) para asegurarse de que la aplicación, y
no solo el servidor web, se encuentra en buen estado. El valor de periodo de gracia define el número de
segundos durante los que una instancia puede no superar la comprobación de estado sin que se termine
y reemplace. Las instancias pueden recuperarse después de haber sido expulsadas del balanceador de
carga, así que asigne a la instancia una cantidad de tiempo adecuada para su aplicación.
• Classic Load Balancer: es el balanceador de carga de Elastic Load Balancing de la generación anterior.
Dirige el tráfico HTTP, HTTPS o TCP a los distintos puertos de las instancias del entorno.
• Balanceador de carga de aplicaciones: balanceador de carga en la capa de aplicación. Dirige el tráfico
HTTP o HTTPS a los distintos puertos de las instancias del entorno en función de la ruta de la solicitud.
• Balanceador de carga de red: balanceador de carga en la capa de red. Dirige el tráfico TCP a los
distintos puertos de las instancias del entorno. Admite comprobaciones de estado tanto activas como
pasivas.
El entorno debe estar en una VPC con subredes en al menos dos zonas de disponibilidad para
crear un Balanceador de carga de aplicaciones. Todas las nuevas cuentas de AWS contienen las
VPC predeterminadas que cumplen este requisito. Si su entorno se encuentra en una VPC con
subredes en solo una zona de disponibilidad, la predeterminada es Classic Load Balancer. Si no
tiene subredes, no puede habilitar el balanceo de carga.
Puede crear y administrar entornos con todos los tipos de balanceador de carga mediante la Consola de
Elastic Beanstalk, el comando eb create (p. 622) de la CLI de EB, con las API de Elastic Beanstalk o con
archivos de configuración (.ebextensions (p. 320)).
Consulte los siguientes temas para obtener más información sobre cada tipo de balanceador de carga
compatible con Elastic Beanstalk, su funcionalidad, y cómo configurarlo y administrarlo en un entorno de
Elastic Beanstalk, y cómo configurar un balanceador de carga para cargar registros de acceso (p. 226)
en Amazon S3.
Temas
• Configuración de un Classic Load Balancer (p. 194)
• Configuración de un Balanceador de carga de aplicaciones (p. 202)
• Configuración de un Balanceador de carga de red (p. 217)
• Configuración de logs de acceso (p. 226)
193
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
Este tema describe la configuración de un Classic Load Balancer. Para obtener más información acerca
del modo de configurar todos los tipos de balanceador de carga compatibles con Elastic Beanstalk,
consulte Balanceador de carga del entorno de AWS Elastic Beanstalk (p. 193).
Note
Solo es posible elegir el tipo de balanceador de carga de un entorno en el momento de su
creación. Más adelante, puede cambiar las opciones para administrar el comportamiento del
balanceador de carga de un entorno en ejecución, pero no cambiar su tipo.
Introducción
Un Classic Load Balancer es la generación anterior de balanceador de carga de Elastic Load Balancing.
Permite el direccionamiento del tráfico HTTP, HTTPS o TCP a los distintos puertos de las instancias de
entorno.
Cuando su entorno usa un Classic Load Balancer, Elastic Beanstalk lo configura de forma predeterminada
para escuchar el tráfico HTTP en el puerto 80 y transmitirlo a instancias en el mismo puerto. Para permitir
conexiones seguras, puede configurar su balanceador de carga con un agente de escucha en el puerto
443 y un certificado TLS.
El balanceador de carga utiliza una comprobación de estado para determinar si las instancias Amazon EC2
que ejecutan una aplicación están en buen estado. La comprobación de estado realiza una solicitud a una
URL especificada en los intervalos indicados. Si la URL devuelve un mensaje de error o no termina en el
periodo de tiempo de espera especificado, la comprobación de estado no se ha superado.
Si su aplicación funciona mejor sirviendo varias solicitudes del mismo cliente en un único servidor, puede
configurar el balanceador de carga para que utilice sesiones sticky. Con las sesiones sticky, el balanceador
de carga añade una cookie a las respuestas HTTP para identificar la instancia Amazon EC2 que atendió
la solicitud. Cuando se recibe una solicitud posterior del mismo cliente, el balanceador de carga utiliza la
cookie para enviar la solicitud a la misma instancia.
Con el balanceo de carga entre zonas, cada nodo del balanceador de carga de su Classic Load Balancer
distribuye las solicitudes equitativamente entre todas las instancias registradas en todas las zonas de
disponibilidad habilitadas. Si cross-zone load balancing está inhabilitado, cada nodo del balanceador de
carga distribuye las solicitudes equitativamente entre todas las instancias registradas solo en su zona de
disponibilidad.
Cuando se elimina una instancia del balanceador de carga porque ya no está en buen estado o porque
se han reducido las instancias del entorno, el vaciado de conexiones deja tiempo a la instancia para
que complete las solicitudes antes de cerrar la conexión entre la instancia y el balanceador de carga.
Puede cambiar la cantidad de tiempo asignada a las instancias para enviar una respuesta o deshabilitar
completamente el vaciado de conexiones.
Note
El vaciado de conexiones se habilita de forma predeterminada cuando se crea un entorno con la
consola de Elastic Beanstalk o la CLI de EB. Para el resto de los clientes, puede habilitarlo con
opciones de configuración (p. 201).
Puede utilizar las opciones avanzadas del balanceador de carga para configurar agentes de escucha en
puertos arbitrarios, modificar la configuración adicional de sesiones sticky y configurar el balanceador de
carga para que se conecte a instancias EC2 de forma segura. Estas opciones están disponibles a través
de las opciones de configuración (p. 201) que puede definir usando los archivos de configuración del
194
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
código fuente, o directamente en un entorno a través de la API de Elastic Beanstalk. Muchas de estas
opciones también están disponibles en la Consola de Elastic Beanstalk. También puede configurar un
balanceador de carga para cargar logs de acceso (p. 226) en Amazon S3.
Para configurar un Classic Load Balancer en la Consola de Elastic Beanstalk durante la creación
del entorno
7. Haga todos los cambios de configuración de Classic Load Balancer que requiera su entorno.
195
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
8. Elija Save (Guardar) y haga los demás cambios de configuración que requiera su entorno.
9. Seleccione Create environment (Crear entorno).
Agentes de escucha
Utilice esta lista para especificar los agentes de escucha del balanceador de carga. Cada agente de
escucha dirige a las instancias el tráfico entrante desde el cliente en un puerto y con un protocolo
especificados. Inicialmente, la lista muestra el agente de escucha predeterminado, que dirige el tráfico
HTTP entrante en el puerto 80 a los servidores de la instancia del entorno que están esperando tráfico
HTTP en el puerto 80.
1. Marque la casilla de verificación junto a la entrada correspondiente en la tabla, elija Actions (Acciones)
y elija entonces la acción que desee.
196
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
2. Si ha elegido Edit (Editar), utilice el cuadro de diálogo Classic Load Balancer listener (Agente de
escucha de Classic Load Balancer) para modificar las opciones y a continuación elija Save (Guardar).
Por ejemplo, puede editar el agente de escucha predeterminado y cambiar Protocol (Protocolo) de HTTP
a TCP si desea que el balanceador de carga reenvíe las solicitudes sin modificación. Esto impide que el
equilibrador de carga reescriba los encabezados (incluido X-Forwarded-For). La técnica no funciona con
las sesiones sticky.
Para poder configurar un agente de escucha HTTPS, antes debe asegurarse de tener un certificado SSL
válido. Aplique alguna de las siguientes acciones:
197
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
• Si AWS Certificate Manager está disponible en su región de AWS, cree o importe un certificado usando
AWS Certificate Manager (ACM). Para obtener más información sobre cómo solicitar un certificado de
ACM, consulte Solicitar un certificado en la Guía del usuario de AWS Certificate Manager. Para obtener
más información sobre la importación de certificados de terceros en ACM, consulte Importar certificados
en la Guía del usuario de AWS Certificate Manager.
• Si ACM no está disponible en su región de AWS, cargue el certificado y la clave existentes en IAM. Para
obtener más información sobre la creación y carga de certificados en IAM, consulte Uso de certificados
de servidor en la Guía del usuario de IAM.
Para obtener más información sobre cómo configurar HTTPS y trabajar con certificados en Elastic
Beanstalk, consulte Configuración de HTTPS para su entorno de Elastic Beanstalk (p. 374).
En SSL certificate (Certificado SSL), elija el ARN del certificado SSL. Por ejemplo,
arn:aws:iam::123456789012:server-certificate/abc/certs/build o arn:aws:acm:us-
east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678.
Para obtener información sobre el modo de configurar HTTPS y trabajar con certificados en Elastic
Beanstalk, consulte Configuración de HTTPS para su entorno de Elastic Beanstalk (p. 374).
198
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
Sesiones
Seleccione o desactive la casilla Session stickiness enabled (Sesión sticky habilitada) para habilitar o
deshabilitar las sesiones sticky. Utilice Cookie duration (Duración de la cookie) para configurar una sesión
sticky de duración, hasta 1000000 segundos.
Vaciado de conexiones
Seleccione o desactive la casilla Connection draining enabled (Vaciado de conexiones habilitado) para
habilitar o deshabilitar el vaciado de conexiones. Establezca el Draining timeout (Tiempo de espera de
vaciado), hasta 3600 segundos.
Comprobación de estado
Utilice las opciones siguientes para configurar las comprobaciones de estado del balanceador de carga:
• Health check path (Ruta de comprobación de estado): Ruta a la que el balanceador de carga envía
las solicitudes de comprobación de estado. Si no establece la ruta, el balanceador de carga intenta
establecer una conexión TCP en el puerto 80 para comprobar el estado.
• Timeout (Tiempo de espera): Intervalo de tiempo en segundos que debe esperarse una respuesta a la
comprobación de estado.
199
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
• Interval (Intervalo): Intervalo de tiempo en segundos entre las comprobaciones de estado de una
instancia individual. El intervalo debe ser mayor que el tiempo de espera.
• Unhealthy threshold (Umbral de incorrecto), Healthy threshold (Umbral de correcto): Número de
comprobaciones de estado que deben fallar o pasar, respectivamente, para que Elastic Load Balancing
cambie el estado de una instancia.
Note
Para obtener más información sobre las comprobaciones de estado y la forma en que influyen en el estado
general del entorno, consulte Informes de estado básicos (p. 413).
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF
200
AWS Elastic Beanstalk Developer Guide
Classic Load Balancer
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
Example .ebextensions/loadbalancer-terminatehttps.config
El siguiente archivo de configuración de ejemplo crea un agente de escucha HTTPS en el puerto 443,
asigna un certificado que el balanceador de carga utiliza para terminar la conexión segura y desactiva
el agente de escucha predeterminado en el puerto 80. El balanceador de carga reenvía las solicitudes
descifradas a las instancias EC2 de su entorno en el puerto HTTP 80.
option_settings:
aws:elb:listener:443:
ListenerProtocol: HTTPS
SSLCertificateId: arn:aws:acm:us-
east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
InstancePort: 80
InstanceProtocol: HTTP
aws:elb:listener:
201
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
ListenerEnabled: false
Este tema describe la configuración de un Balanceador de carga de aplicaciones. Para obtener más
información acerca del modo de configurar todos los tipos de balanceador de carga compatibles con
Elastic Beanstalk, consulte Balanceador de carga del entorno de AWS Elastic Beanstalk (p. 193).
Note
Introducción
Un Balanceador de carga de aplicaciones inspecciona el tráfico en la capa de aplicación del protocolo
de red para identificar la ruta de la solicitud, lo que le permite dirigir las solicitudes con rutas distintas a
destinos diferentes.
En un entorno de Elastic Beanstalk, puede utilizar un Balanceador de carga de aplicaciones para dirigir
el tráfico de ciertas rutas a un puerto distinto de las instancias del servidor web. Con un Classic Load
Balancer, todo el tráfico que llega al agente de escucha se direcciona a un único puerto de las instancias
del backend. Con un Balanceador de carga de aplicaciones, puede configurar varias reglas en el agente de
escucha para direccionar las solicitudes con determinadas rutas a diferentes puertos del backend.
Por ejemplo, podría ejecutar un proceso de inicio de sesión separándolo de la aplicación principal. Aunque
la aplicación principal de las instancias del entorno aceptaría la mayoría de las solicitudes y las recibiría en
el puerto 80, el proceso de inicio de sesión utiliza el puerto 5000 y acepta las solicitudes dirigidas a la ruta
/login. Todas las solicitudes entrantes de los clientes llegan al puerto 80. Con un Balanceador de carga
de aplicaciones puede configurar un único agente de escucha para el tráfico entrante en el puerto 80 con
dos reglas que dirijan el tráfico a dos procesos independientes, en función de la ruta de la solicitud. Una
regla dirige el tráfico /login al proceso de inicio de sesión en el puerto 5000. La regla predeterminada
dirige el resto del tráfico al proceso de la aplicación principal en el puerto 80.
202
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Una regla de Balanceador de carga de aplicaciones mapea una solicitud a un grupo de destino. En Elastic
Beanstalk, un grupo de destino se representa con un proceso. Puede configurar un proceso con las
opciones de protocolo, puerto y comprobación de estado. Dicho proceso representa al proceso que se
ejecuta en las instancias del entorno. El proceso predeterminado es un agente de escucha del puerto 80
del proxy inverso (nginx o Apache) que se ejecuta delante de la aplicación.
Note
Un Classic Load Balancer utiliza una sola ruta de comprobación de estado para todo el entorno. Con
un Balanceador de carga de aplicaciones, cada proceso tiene una ruta de comprobación de estado
independiente que monitorea el balanceador de carga y la monitorización de estado mejorada de Elastic
Beanstalk.
Para utilizar un Balanceador de carga de aplicaciones, el entorno debe estar en una VPC
predeterminada o personalizada, y debe tener un rol de servicio con el conjunto estándar
de permisos. Si tiene un rol de servicio antiguo, es posible que tenga que actualizar los
permisos (p. 490) del rol para incluir elasticloadbalancing:DescribeTargetHealth y
elasticloadbalancing:DescribeLoadBalancers. Para obtener más información sobre Application
Load Balancers, consulte ¿Qué es un balanceador de carga de aplicación?
Note
203
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
7. Haga todos los cambios de configuración de Balanceador de carga de aplicaciones que requiera su
entorno.
8. Elija Save (Guardar) y haga los demás cambios de configuración que requiera su entorno.
9. Seleccione Create environment (Crear entorno).
204
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Agentes de escucha
Utilice esta lista para especificar los agentes de escucha del balanceador de carga. Cada agente de
escucha dirige a uno o más procesos de las instancias el tráfico entrante desde el cliente en un puerto y
con un protocolo especificados. Inicialmente, la lista muestra el agente de escucha predeterminado, que
dirige el tráfico HTTP entrante en el puerto 80 a un proceso llamado default (predeterminado), que escucha
HTTP en el puerto 80.
Utilice las opciones del cuadro de diálogo Application Load Balancer listener (Agente de escucha de
balanceador de carga de aplicaciones) para elegir el puerto y el protocolo en los que el agente de escucha
espera el tráfico. Si elige el protocolo HTTPS, configure las opciones de SSL.
Para poder configurar un agente de escucha HTTPS, antes debe asegurarse de tener un certificado SSL
válido. Aplique alguna de las siguientes acciones:
• Si AWS Certificate Manager está disponible en su región de AWS, cree o importe un certificado usando
AWS Certificate Manager (ACM). Para obtener más información sobre cómo solicitar un certificado de
ACM, consulte Solicitar un certificado en la Guía del usuario de AWS Certificate Manager. Para obtener
más información sobre la importación de certificados de terceros en ACM, consulte Importar certificados
en la Guía del usuario de AWS Certificate Manager.
205
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
• Si ACM no está disponible en su región de AWS, cargue el certificado y la clave existentes en IAM. Para
obtener más información sobre la creación y carga de certificados en IAM, consulte Uso de certificados
de servidor en la Guía del usuario de IAM.
Para obtener más información sobre cómo configurar HTTPS y trabajar con certificados en Elastic
Beanstalk, consulte Configuración de HTTPS para su entorno de Elastic Beanstalk (p. 374).
Procesos
Utilice esta lista para especificar los procesos del balanceador de carga. Un proceso es un destino al que
los agentes de escucha dirigen el tráfico. Cada agente de escucha dirige a uno o más procesos de las
instancias el tráfico entrante desde el cliente en un puerto y con un protocolo especificados. Inicialmente, la
lista muestra el proceso predeterminado, que escucha el tráfico HTTP entrante en el puerto 80.
Puede editar la configuración de un proceso existente o agregar un nuevo proceso. Para empezar a
editar un proceso de la lista o añadirle otro, utilice los pasos que se indican para la lista de agentes de
escucha (p. 205). Se abre el cuadro de diálogo Environment process (Proceso del entorno).
Opciones del cuadro de diálogo del proceso del entorno de Balanceador de carga de aplicaciones
• Definición (p. 206)
• Comprobación de estado (p. 207)
• Sesiones (p. 209)
Definición
Utilice estas opciones para definir el proceso: Name (Nombre), Port (Puerto) y Protocol (Protocolo) en los
que espera las solicitudes.
206
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Comprobación de estado
Utilice las opciones siguientes para configurar las comprobaciones de estado del proceso:
• HTTP code (Código HTTP): el código de estado HTTP que designa a un proceso en buen estado.
• Path (Ruta) : ruta de la solicitud de comprobación de estado del proceso.
• Timeout (Tiempo de espera): Intervalo de tiempo en segundos que debe esperarse una respuesta a la
comprobación de estado.
• Interval (Intervalo): Intervalo de tiempo en segundos entre las comprobaciones de estado de una
instancia individual. El intervalo debe ser mayor que el tiempo de espera.
• Unhealthy threshold (Umbral de incorrecto), Healthy threshold (Umbral de correcto): Número de
comprobaciones de estado que deben fallar o pasar, respectivamente, para que Elastic Load Balancing
cambie el estado de una instancia.
• Deregistration delay (Retraso de anulación del registro): Intervalo de tiempo, en segundos, que debe
esperarse a que se completen las solicitudes activas antes de anular el registro de una instancia.
207
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Note
Para obtener más información sobre las comprobaciones de estado y la forma en que influyen en el estado
general del entorno, consulte Informes de estado básicos (p. 413).
208
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Sesiones
Seleccione o desactive la casilla Stickiness policy enabled (Política de persistencia habilitada) para habilitar
o deshabilitar las sesiones sticky. Utilice Cookie duration (Duración de la cookie) para configurar una
sesión sticky de duración, hasta 604800 segundos.
Reglas
Utilice esta lista para especificar las reglas de agente de escucha del balanceador de carga. Una regla
asigna un destino a las solicitudes que reciba el agente de escucha con un patrón de ruta específico. Cada
agente de escucha puede tener varias reglas, dirigiendo así las solicitudes con rutas distintas a procesos
distintos de las instancias.
Las reglas tienen prioridades numéricas que determinan la prioridad con que se aplican a las
solicitudes entrantes. Para cada nuevo agente de escucha que se agrega, Elastic Beanstalk añade
una regla predeterminada que dirige todo su tráfico al proceso predeterminado. La prioridad de la regla
predeterminada es la más baja; solo se aplica si ninguna otra regla del mismo agente de escucha es
aplicable a la solicitud entrante. Inicialmente, la lista muestra la regla predeterminada del agente de
escucha predeterminado en el puerto 80 para HTTP.
Puede editar las opciones de una regla existente o añadir una regla nueva. Para empezar a editar
una regla de la lista o añadirle otra, siga los pasos que se indican para la lista de agentes de
escucha (p. 205). Se abre el cuadro de diálogo Listener rule (Regla de agente de escucha) con las
opciones siguientes:
209
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
• Priority (Prioridad): la prioridad de la regla. Cuanto menor sea el número mayor es la prioridad. Las
prioridades de las reglas de un agente de escucha deben ser únicas.
• Path pattern (Patrón de ruta): patrón que define las rutas de las solicitudes a las que se aplica la regla.
• Proceso (Proceso): el proceso al que el balanceador de carga dirige las solicitudes a las que se aplica la
regla.
Al editar cualquier regla existente, no puede cambiar el valor de Name (Nombre) ni el de Listener port
(Puerto del agente de escucha). Al editar una regla predeterminada, Process (Proceso) es la única opción
que puede cambiar.
210
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Para configurar el Balanceador de carga de aplicaciones del entorno de modo que satisfaga estos
requisitos, debe retirar el agente de escucha predeterminado, añadir un agente de escucha HTTPS, indicar
que el proceso predeterminado escucha en el puerto 443 para HTTPS y añadir un proceso y una regla
para dirigir el tráfico administrativo con una ruta diferente.
211
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
2. Deshabilitar el agente de escucha predeterminado para HTTP en el puerto 80. Para el agente de
escucha predeterminado, desactive la opción Enabled (Habilitado).
212
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
4. Adición de un proceso administrativo. En Name (Nombre), escriba admin. En Port, escriba 443. Para
Protocol, elija HTTPS. En Health check (Comprobación de estado), en Path (Ruta), escriba /admin.
213
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
5. Adición de una regla para el tráfico administrativo. En Name (Nombre), escriba admin. En Listener
port (Puerto de agente de escucha), escriba 443. En Path pattern (Patrón de ruta), escriba /admin/*.
En Process (Proceso), elija admin.
214
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF
215
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de aplicaciones
Example .ebextensions/application-load-balancer.config
option_settings:
aws:elasticbeanstalk:environment:
LoadBalancerType: application
Note
Solo puede establecer el tipo de balanceador de carga durante la creación del entorno.
Example .ebextensions/alb-access-logs.config
El siguiente archivo de configuración permite obtener acceso a las cargas de registros de un entorno con
un Balanceador de carga de aplicaciones.
option_settings:
aws:elbv2:loadbalancer:
AccessLogsS3Bucket: my-bucket
AccessLogsS3Enabled: 'true'
AccessLogsS3Prefix: beanstalk-alb
Example .ebextensions/alb-default-process.config
El siguiente archivo de configuración modifica los ajustes de comprobación de estado y persistencia del
proceso predeterminado.
option_settings:
aws:elasticbeanstalk:environment:process:default:
DeregistrationDelay: '20'
HealthCheckInterval: '15'
HealthCheckPath: /
216
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
HealthCheckTimeout: '5'
HealthyThresholdCount: '3'
UnhealthyThresholdCount: '5'
Port: '80'
Protocol: HTTP
StickinessEnabled: 'true'
StickinessLBCookieDuration: '43200'
Example .ebextensions/alb-secure-listener.config
option_settings:
aws:elbv2:listener:443:
DefaultProcess: https
ListenerEnabled: 'true'
Protocol: HTTPS
SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-
bf6f-f362d6eb6dd7
aws:elasticbeanstalk:environment:process:https:
Port: '443'
Protocol: HTTPS
Example .ebextensions/alb-admin-rule.config
El siguiente archivo de configuración agrega un agente de escucha seguro con una regla que direcciona el
tráfico con la ruta de solicitud /admin a un proceso llamado admin que utiliza el puerto 4443.
option_settings:
aws:elbv2:listener:443:
DefaultProcess: https
ListenerEnabled: 'true'
Protocol: HTTPS
Rules: admin
SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-
bf6f-f362d6eb6dd7
aws:elasticbeanstalk:environment:process:https:
Port: '443'
Protocol: HTTPS
aws:elasticbeanstalk:environment:process:admin:
HealthCheckPath: /admin
Port: '4443'
Protocol: HTTPS
aws:elbv2:listenerrule:admin:
PathPatterns: /admin/*
Priority: 1
Process: admin
Este tema describe la configuración de un Balanceador de carga de red. Para obtener más información
acerca del modo de configurar todos los tipos de balanceador de carga compatibles con Elastic Beanstalk,
consulte Balanceador de carga del entorno de AWS Elastic Beanstalk (p. 193).
217
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
Note
Introducción
Con un Balanceador de carga de red, el agente de escucha predeterminado acepta las solicitudes TCP
en el puerto 80 y las distribuye a las instancias del entorno. Puede configurar el comportamiento de las
comprobaciones de estado, configurar el puerto de agente de escucha o agregar un agente de escucha a
otro puerto.
Note
Un Balanceador de carga de red admite las comprobaciones de estado activas. Estas comprobaciones se
basan en mensajes a la ruta raíz (/). Además, un Balanceador de carga de red admite las comprobaciones
de estado pasivas. Detecta automáticamente instancias backend defectuosas y direcciona el tráfico solo a
las instancias con estado correcto.
1. Utilice el asistente Create environment (p. 90) (Crear entorno) para comenzar a crear el entorno.
2. En la página principal del asistente, antes de elegir Create environment (Crear entorno), elija
Configure more options (Configurar más opciones).
3. Elija la configuración predefinida High availability (Alta disponibilidad).
218
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
6. Haga todos los cambios de configuración de Balanceador de carga de red que requiera su entorno.
7. Elija Save (Guardar) y haga los demás cambios de configuración que requiera su entorno.
8. Seleccione Create environment (Crear entorno).
219
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
• Ejemplo: Balanceador de carga de red para un entorno con cifrado integral (p. 223)
Agentes de escucha
Utilice esta lista para especificar los agentes de escucha del balanceador de carga. Cada agente de
escucha dirige a las instancias el tráfico entrante desde el cliente en un puerto a un proceso en sus
instancias. Inicialmente, la lista muestra el agente de escucha predeterminado, que dirige el tráfico entrante
en el puerto 80 a un proceso llamado default (predeterminado), que escucha en el puerto 80.
Utilice el cuadro de diálogo Network Load Balancer listener (Agente de escucha del balanceador de carga
de red) para configurar el puerto en el que el agente escucha el tráfico, y elija el proceso al que desea
dirigir el tráfico (especificado por el puerto que el proceso escucha).
220
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
Procesos
Utilice esta lista para especificar los procesos del balanceador de carga. Un proceso es un destino al que
los agentes de escucha dirigen el tráfico. Cada agente de escucha dirige a las instancias el tráfico entrante
desde el cliente en un puerto a un proceso en sus instancias. Inicialmente, la lista muestra el proceso
predeterminado, que escucha el tráfico entrante en el puerto 80.
Puede editar la configuración de un proceso existente o agregar un nuevo proceso. Para empezar a
editar un proceso de la lista o añadirle otro, utilice los pasos que se indican para la lista de agentes de
escucha (p. 205). Se abre el cuadro de diálogo Environment process (Proceso del entorno).
Opciones del cuadro de diálogo del proceso del entorno de Balanceador de carga de red
• Definición (p. 222)
• Comprobación de estado (p. 222)
221
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
Definición
Utilice estas opciones para definir el proceso: Name (Nombre) y el Process port (Puerto del proceso) en los
que espera las solicitudes.
Comprobación de estado
Utilice las opciones siguientes para configurar las comprobaciones de estado del proceso:
• Interval (Intervalo): Intervalo de tiempo en segundos entre las comprobaciones de estado de una
instancia individual.
• Healthy threshold (Umbral de correcto): Número de comprobaciones de estado que deben pasar para
que Elastic Load Balancing cambie el estado de una instancia. (Para Balanceador de carga de red,
Unhealthy threshold (Umbral de estado incorrecto) es una configuración de solo lectura que siempre es
igual al valor de umbral en buen estado).
• Deregistration delay (Retraso de anulación del registro): Intervalo de tiempo, en segundos, que debe
esperarse a que se completen las solicitudes activas antes de anular el registro de una instancia.
222
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
Note
Para obtener más información sobre las comprobaciones de estado y la forma en que influyen en el estado
general del entorno, consulte Informes de estado básicos (p. 413).
223
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
2. Adición de un agente de escucha de puerto 443. Añada un nuevo agente de escucha. En Listener port
(Puerto de agente de escucha), escriba 443. Para Process port (Puerto del proceso), asegúrese de
que 443 está seleccionado.
224
AWS Elastic Beanstalk Developer Guide
Balanceador de carga de red
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF
225
AWS Elastic Beanstalk Developer Guide
Configuración de logs de acceso
Balancer. Los valores de la comprobación de estado se corresponden con los valores de los espacios de
nombres aws:elb:healthcheck y aws:elasticbeanstalk:application.
Example .ebextensions/network-load-balancer.config
Para comenzar a utilizar un Balanceador de carga de red, utilice un archivo de configuración (p. 320)
para establecer el tipo de balanceador de carga en network.
option_settings:
aws:elasticbeanstalk:environment:
LoadBalancerType: network
Note
Solo puede establecer el tipo de balanceador de carga durante la creación del entorno.
Example .ebextensions/nlb-default-process.config
El siguiente archivo de configuración modifica los ajustes de comprobación de estado del proceso
predeterminado.
option_settings:
aws:elasticbeanstalk:environment:process:default:
DeregistrationDelay: '20'
HealthCheckInterval: '10'
HealthyThresholdCount: '5'
UnhealthyThresholdCount: '5'
Port: '80'
Protocol: TCP
Example .ebextensions/nlb-secure-listener.config
El siguiente archivo de configuración agrega un agente de escucha para el tráfico seguro en el puerto 443
y un proceso de destino coincidente que escucha en el puerto 443.
option_settings:
aws:elbv2:listener:443:
DefaultProcess: https
ListenerEnabled: 'true'
aws:elasticbeanstalk:environment:process:https:
Port: '443'
La opción DefaultProcess se denomina de esta forma debido a los Application Load Balancers, que
pueden tener agentes de escucha predeterminados en el mismo puerto correspondiente al tráfico a rutas
específicas (consulte Balanceador de carga de aplicaciones (p. 202) para obtener más información).
Para un Balanceador de carga de red, la opción especifica el único proceso de destino de este agente de
escucha.
En este ejemplo, hemos denominado al proceso https porque escucha el tráfico seguro (HTTPS). El
agente de escucha envía el tráfico al proceso en el puerto designado mediante el protocolo TCP, porque
un Balanceador de carga de red solo funciona con TCP. Esto es correcto, porque el tráfico de red HTTP y
HTTPS está implemento sobre TCP.
226
AWS Elastic Beanstalk Developer Guide
Base de datos
Una instancia de base de datos que forma parte de su entorno está vinculada al ciclo de vida de su
entorno. No puede eliminarla de su entorno una vez añadida. Si termina el entorno, la instancia de base
de datos también se termina. Puede configurar Elastic Beanstalk para que guarde una instantánea de la
base de datos al terminar el entorno y restaurar una base de datos a partir de una instantánea cuando
se agregue una instancia de base de datos al entorno. El almacenamiento de instantáneas de bases de
datos podría generar cargos. Para obtener más información, consulte la sección sobre almacenamiento de
copias de seguridad en Precios de Amazon RDS.
En un entorno de producción, puede lanzar una instancia de base de datos fuera del entorno (p. 548) y
configurar la aplicación para que se conecte a ella sin utilizar la funcionalidad proporcionada por Elastic
Beanstalk. El uso de una instancia de base de datos que sea externa a su entorno requiere para un
grupo de seguridad adicional y configuración de la cadena de conexión. No obstante, también le permite
conectarse a la base de datos desde varios entornos, utilizar tipos de base de datos no compatibles con
bases de datos integradas, realizar implementaciones “blue/green” (azul/verde) y eliminar el entorno sin
afectar a la instancia de base de datos.
Secciones
• Añadir una instancia de base de datos de Amazon RDS al entorno (p. 227)
• Conexión a la base de datos (p. 230)
• Configuración de una instancia de base de datos de RDS integrada mediante la consola (p. 230)
• Configuración de una instancia de base de datos de RDS integrada mediante archivos de
configuración (p. 231)
227
AWS Elastic Beanstalk Developer Guide
Añadir una instancia de base de
datos de Amazon RDS al entorno
• Snapshot (Instantánea): elija una instantánea de base de datos existente. Elastic Beanstalk restaura
la instantánea y la añade a su entorno. El valor predeterminado es None (Ninguno), que le permite
configurar una base de datos nueva utilizando el resto de la configuración de esta página.
• Engine (Motor): seleccione un motor de base de datos.
• Engine version (Versión del motor): elija una versión específica del motor de base de datos.
• Instance Class (Clase de instancia): seleccione la clase de instancia de base de datos. Para obtener
más información sobre las clases de instancias de bases de datos, consulte https://aws.amazon.com/
rds/.
• Storage (Almacenamiento): seleccione el espacio de almacenamiento que va a aprovisionar para la base
de datos. Posteriormente, podrá aumentar el almacenamiento asignado, pero no reducirlo. Para obtener
información acerca de la asignación de almacenamiento, consulte las características.
• Username (Nombre de usuario): escriba un nombre de usuario que elija utilizando caracteres
alfanuméricos.
• Password (Contraseña): escriba una contraseña que elija que contenga entre 8 y 16 caracteres ASCII
imprimibles (menos , /, \ y @).
• Retention (Retención): Elija Create snapshot (Crear instantánea) para crear una instantánea de la base
de datos cuando termine el entorno.
• Availability (Disponibilidad): seleccione High (Multi-AZ) (Alta [múltiples zonas de disponibilidad]) para
ejecutar una "warm backup" en una segunda zona de disponibilidad y contar con una alta disponibilidad.
Note
Elastic Beanstalk crea un usuario maestro para la base de datos con el nombre de usuario y
la contraseña que proporcione. Para obtener más información sobre el usuario maestro y sus
privilegios, consulte Privilegios de la cuenta de usuario maestro.
228
AWS Elastic Beanstalk Developer Guide
Añadir una instancia de base de
datos de Amazon RDS al entorno
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
229
AWS Elastic Beanstalk Developer Guide
Conexión a la base de datos
• Java SE: Conexión a una base de datos (plataformas Java SE) (p. 739)
• Java con Tomcat: Conexión a una base de datos (plataformas Tomcat) (p. 739)
• Node.js: Conexión a una base de datos (p. 852)
• .NET: Conexión a una base de datos (p. 788)
• PHP: Conexión a una base de datos con PDO o MySQLi (p. 912)
• Python: Conexión a una base de datos (p. 940)
• Ruby: Conexión a una base de datos (p. 955)
No modifique la configuración de la instancia de base de datos con otra funcionalidad distinta que
la que proporciona Elastic Beanstalk (por ejemplo, en la consola de Amazon RDS). Si lo hace, la
configuración de base de Amazon RDS podría no estar sincronizada con la definición del entorno.
Al actualizar o reiniciar su entorno, la configuración especificada en el entorno sustituye cualquier
configuración que ha realizado fuera de Elastic Beanstalk.
Si necesita modificar la configuración que Elastic Beanstalk no admite directamente, utilice los
archivos de configuración (p. 231) de Elastic Beanstalk.
230
AWS Elastic Beanstalk Developer Guide
Configuración de una instancia de base de datos de
RDS integrada mediante archivos de configuración
Example .ebextensions/db-instance-options.config
option_settings:
aws:rds:dbinstance:
DBAllocatedStorage: 100
Si debe configurar propiedades de la instancia de base de datos que Elastic Beanstalk no admite, puede
seguir utilizando un archivo de configuración y especificar la configuración con la clave resources. En el
siguiente ejemplo se establecen los valores en las propiedades StorageType e Iops de Amazon RDS.
Example .ebextensions/db-instance-properties.config
Resources:
AWSEBRDSDatabase:
Type: AWS::RDS::DBInstance
Properties:
StorageType:io1
Iops: 1000
Secciones
• Configuración de la seguridad de su entorno (p. 231)
• Espacios de nombres de configuración de seguridad del entorno (p. 233)
Opciones
231
AWS Elastic Beanstalk Developer Guide
Configuración de la seguridad de su entorno
Rol de servicio
Seleccione un rol de servicio (p. 491) para asociar con su entorno de Elastic Beanstalk. Elastic Beanstalk
asume el rol de servicio cuando acceder a otros servicios de AWS en su nombre. Para obtener más
información, consulte Administración de roles de servicio de Elastic Beanstalk (p. 491).
Al crear un par de claves, Amazon EC2 almacena una copia de la clave pública. Si ya no tiene
que usarla para conectarse a cualquier instancia de entorno, puede eliminarla de Amazon EC2.
Para obtener detalles, consulte Eliminar el par de claves en Guía del usuario de Amazon EC2
para instancias de Linux.
Elija un par de claves de EC2 en el menú desplegable para asignarlo a las instancias del entorno. Cuando
asigna un par de claves, la clave pública se guarda en la instancia para autenticar la clave privada, que se
guarda en local. La clave privada nunca se guarda en AWS.
Para obtener más información acerca de cómo conectarse a las instancias Amazon EC2, consulte
Conectarse a la instancia y Conectarse a instancias de Linux/UNIX desde Windows con PuTTY en la Guía
del usuario de Amazon EC2 para instancias de Linux.
232
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración
de seguridad del entorno
La primera vez que crea un entorno en la Consola de Elastic Beanstalk, Elastic Beanstalk le pide que cree
un perfil de instancia con un conjunto de permisos predefinidos. Puede agregar permisos a este perfil
para que sus instancias puedan obtener acceso a otros servicios de AWS. Para obtener más información,
consulte Administración de perfiles de instancias de Elastic Beanstalk (p. 486).
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
También puede usar las etiquetas para administrar los permisos en el nivel de recurso especificado en un
entorno. Para obtener más información, consulte Etiquetado de los recursos de Amazon EC2 en la Guía
del usuario de Amazon EC2 para instancias de Linux.
Puede especificar etiquetas cuando crea el entorno de Elastic Beanstalk. En un entorno existente, puede
añadir o eliminar etiquetas, y actualizar los valores de etiquetas existentes. Además de las etiquetas
predeterminadas, puede agregar hasta 47 etiquetas adicionales a cada entorno.
233
AWS Elastic Beanstalk Developer Guide
Adición de etiquetas durante la creación del entorno
Si utiliza la CLI de EB para crear un entorno, use la opción --tags con eb create (p. 622) para añadir
etiquetas.
Con la AWS CLI u otros clientes basados en API, use el parámetro --tags en el comando create-
environment.
Las configuraciones guardadas (p. 257) incluyen etiquetas definidas por el usuario. Cuando aplique
una configuración guardada que contiene etiquetas durante la creación del entorno, las etiquetas se
aplican al nuevo entorno, siempre y cuando no especifique nuevas etiquetas. Si añade etiquetas a un
entorno utilizando uno de los métodos anteriores, se descartan las etiquetas definidas en la configuración
guardada.
Sin embargo, no es posible editar las etiquetas predeterminadas que Elastic Beanstalk aplica a cada
entorno.
234
AWS Elastic Beanstalk Developer Guide
Administración de etiquetas de un entorno existente
• Para añadir una etiqueta, escríbala en las casillas vacías de la parte inferior de la lista.
• Para actualizar la clave o el valor de una etiqueta, edite la casilla correspondiente en la fila de la
etiqueta.
• Para eliminar una etiqueta, elija junto a la casilla de valor de la etiqueta.
4. Seleccione Apply (Aplicar).
235
AWS Elastic Beanstalk Developer Guide
Configuración del software
Si utiliza la CLI de EB para actualizar su entorno, utilice eb tags (p. 658) para añadir, actualizar, eliminar
o enumerar etiquetas.
Para obtener una lista de las opciones y más ejemplos, consulte eb tags (p. 658).
Con la AWS CLI u otros clientes basados en API, utilice el comando list-tags-for-resource para enumerar
las etiquetas de un entorno.
Especifique las etiquetas que desea añadir y las que desea actualizar en el parámetro --tags-to-add
de update-tags-for-resource. Se añade una etiqueta no existente y se actualiza el valor de una etiqueta
existente.
Note
Para utilizar estos dos comandos de AWS CLI con un entorno de Elastic Beanstalk, necesita el
ARN del entorno. Puede recuperar el ARN mediante el siguiente comando.
En la mayoría de los casos, las propiedades del entorno se transfieren a la aplicación como
variables de entorno, pero el comportamiento depende de la plataforma. Por ejemplo, la
plataforma Java SE (p. 731) establece las variables de entorno que se recuperan con
236
AWS Elastic Beanstalk Developer Guide
Configuración de las propiedades de entorno
System.getenv, mientras que la plataforma Tomcat (p. 721) establece las propiedades del
sistema Java que se recuperan con System.getProperty.
Además del conjunto estándar de opciones disponibles para todos los entornos, la mayoría de plataformas
de Elastic Beanstalk le permiten especificar una configuración específica del lenguaje o de marco. Pueden
adoptar las formas siguientes.
• Propiedades preestablecidas del entorno: la plataforma Ruby utiliza propiedades del entorno para la
configuración del marco como RACK_ENV y BUNDLE_WITHOUT.
• Propiedades comodín del entorno: la plataforma Tomcat define una propiedad del entorno llamada
JDBC_CONNECTION_STRING que no se ha establecido en ningún valor. Este tipo de configuración era
más habitual en las versiones anteriores de la plataforma.
• Opciones de configuración: la mayoría de las plataformas definen las opciones de
configuración (p. 252) en espacios de nombres compartidos o específicos de plataforma como
aws:elasticbeanstalk:xray o aws:elasticbeanstalk:container:python.
Para obtener más información sobre opciones específicas de la plataforma y sobre la obtención de valores
de propiedad del entorno, consulte el tema de la plataforma para su lenguaje o marco:
Además, al agregar una base de datos a su entorno (p. 227), Elastic Beanstalk establece las
propiedades del entorno, por ejemplo, RDS_HOSTNAME, que puede leer en el código de la aplicación para
construir una cadena u objeto de conexión.
Temas
• Configuración de las propiedades de entorno (p. 237)
• Espacios de nombres para el establecimiento de software (p. 238)
• Acceso a las propiedades del entorno (p. 239)
• Configuración de la depuración en AWS X-Ray (p. 240)
• Visualización de los logs de entorno de Elastic Beanstalk (p. 242)
237
AWS Elastic Beanstalk Developer Guide
Espacios de nombres para el establecimiento de software
Los símbolos indicados son válidos para las clave de propiedad de entorno, pero podrían no ser válidos
para nombres de variable de entorno en la plataforma del entorno. Para lograr la compatibilidad con
todas las plataformas, limite las propiedades del entorno al siguiente patrón: [A-Z_][A-Z0-9_]*
• Los valores pueden contener cualquier carácter alfanumérico y los siguientes símbolos: _ . : / = +
\ - @ ' "
Note
Puede utilizar archivos de configuración de Elastic Beanstalk (p. 320) para establecer
propiedades de entorno y opciones de configuración en el código fuente. Utilice el
aws:elasticbeanstalk:application:environment espacio de nombres (p. 286) para definir las
propiedades del entorno.
Example .ebextensions/options.config
option_settings:
aws:elasticbeanstalk:application:environment:
API_ENDPOINT: www.example.com/api
Si utiliza una función de AWS CloudFormation para definir una propiedad de entorno, la consola
de Elastic Beanstalk muestra el valor de la propiedad antes de evaluar la función. Puede utilizar
238
AWS Elastic Beanstalk Developer Guide
Acceso a las propiedades del entorno
el script de plataforma get-config (p. 40) para confirmar los valores de las propiedades de
entorno que están disponibles para su aplicación.
Note
La plataforma Multicontainer Docker (p. 677) con varios contenedores no utiliza AWS
CloudFormation para crear recursos de contenedor. Como resultado, esta plataforma no admite la
definición de las propiedades del entorno mediante funciones AWS CloudFormation.
Example .ebextensions/sns-topic.config
Resources:
NotificationTopic:
Type: AWS::SNS::Topic
option_settings:
aws:elasticbeanstalk:application:environment:
NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'
También puede utilizar esta característica para propagar información de pseudoparámetros de AWS
CloudFormation. Este ejemplo obtiene la región actual y la asigna a una propiedad llamada AWS_REGION.
Example .ebextensions/env-regionname.config
option_settings:
aws:elasticbeanstalk:application:environment:
AWS_REGION: '`{"Ref" : "AWS::Region"}`'
La mayoría de las plataformas de Elastic Beanstalk define espacios de nombres adicionales con opciones
para configurar software que se ejecuta en la instancia, como el proxy inverso que transmite solicitudes
a su aplicación. Para obtener más información sobre los espacios de nombres disponibles para su
plataforma, consulte las siguientes secciones:
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
239
AWS Elastic Beanstalk Developer Guide
Debugging
endpoint := os.Getenv("API_ENDPOINT")
Note
Elastic Beanstalk no permite pasar variables de entorno a las aplicaciones de .NET
Core ni a las implementaciones de IIS de varias aplicaciones que usen un manifiesto de
implementación (p. 766).
• Node.js (p. 824): process.env
$endpoint = $_SERVER['API_ENDPOINT'];
import os
endpoint = os.environ['API_ENDPOINT']
endpoint = ENV['API_ENDPOINT']
Fuera del código de aplicación como, por ejemplo, en un script que se ejecuta durante la implementación,
puede obtener acceso a las propiedades del entorno con el get-config script de la plataforma (p. 40).
Consulte el repositorio de GitHub elastic-beanstalk-samples para obtener configuraciones de ejemplo que
utilizan get-config.
240
AWS Elastic Beanstalk Developer Guide
Debugging
X-Ray cuenta con un SDK que puede utilizar para configurar el código de la aplicación y con una aplicación
daemon que transmite la información de depuración del SDK a la API de X-Ray.
Plataformas admitidas
Puede utilizar el SDK de X-Ray con las siguientes plataformas de Elastic Beanstalk:
En las plataformas compatibles, puede utilizar una opción de configuración para ejecutar el daemon
de X-Ray en las instancias del entorno. Puede habilitar el daemon a través de la consola de Elastic
Beanstalk (p. 242) o utilizando un archivo de configuración (p. 242).
241
AWS Elastic Beanstalk Developer Guide
Visualización de logs
Para cargar los datos en X-Ray, el daemon de X-Ray necesita permisos de IAM en la política administrada
AWSXrayWriteOnlyAccess. Estos permisos están incluidos en el perfil de instancia de Elastic
Beanstalk (p. 23). Si no utiliza el perfil de instancia predeterminado, consulte Permiso para el envío de
datos a X-Ray desde el daemon en la Guía para desarrolladores de AWS X-Ray.
Para realizar la depuración con X-Ray, se necesita el SDK de X-Ray. Consulte Introducción a AWS X-Ray
en la Guía para desarrolladores de AWS X-Ray para obtener instrucciones y aplicaciones de muestra.
Si utiliza una versión de plataforma que no incluye el daemon, puede ejecutarlo con un script de un archivo
de configuración. Para obtener más información, consulte Descarga y ejecución del daemon de X-Ray
manualmente (avanzado) en la Guía para desarrolladores de AWS X-Ray.
Secciones
• Configuración de la depuración (p. 242)
• El espacio de nombres aws:elasticbeanstalk:xray (p. 242)
Configuración de la depuración
Puede habilitar el daemon de X-Ray en un entorno en ejecución a través de la Consola de Elastic
Beanstalk.
También puede activar esta opción durante la creación del entorno. Para obtener más información,
consulte El asistente de creación de nuevo entorno (p. 90).
Example .ebextensions/debugging.config
option_settings:
aws:elasticbeanstalk:xray:
XRayEnabled: true
242
AWS Elastic Beanstalk Developer Guide
Visualización de logs
• Configure su entorno de Elastic Beanstalk para cargar registros de instancias rotados al bucket de
Amazon S3 del entorno.
• Configure el entorno para realizar el streaming de los logs de instancias a Amazon CloudWatch Logs.
Cuando configure el streaming de registros de instancias a CloudWatch Logs, Elastic Beanstalk crea
grupos de registros de CloudWatch Logs para registros de proxy e implementación en las instancias
Amazon EC2 y transfiere estos archivos de registro a CloudWatch Logs en tiempo real. Para obtener más
información acerca de los logs de instancia, consulte Consulta de los registros desde las instancias de
Amazon EC2 en su entorno de Elastic Beanstalk (p. 457).
Además de los registros de instancias, si habilita el estado mejorado (p. 416) de su entorno, puede
configurar dicho entorno para que realice el streaming de la información de estado a CloudWatch Logs.
Cuando cambia el estado del entorno, Elastic Beanstalk agrega un registro a un grupo de logs de estado,
con el nuevo estado y una descripción de la causa del cambio. Para obtener información acerca del
streaming del estado del entorno, consulte Streaming del estado del entorno de Elastic Beanstalk a
Amazon CloudWatch Logs (p. 476).
• Log streaming (Streaming de registro): elija esta opción para habilitar el streaming de registro.
• Retention (Retención): especifique el número de días durante el cual se conservan registros en
CloudWatch Logs
• Lifecycle (Ciclo de vida): establézcalo en Delete logs upon termination (Eliminar los registros al
terminar) para eliminar registros de CloudWatch Logs inmediatamente si el entorno ha terminado, en
lugar de esperar a que caduquen.
7. Seleccione Aplicar.
243
AWS Elastic Beanstalk Developer Guide
Visualización de logs
• Log streaming (Streaming de registro): elija esta opción para habilitar el streaming de registro.
• Retention (Retención): especifique el número de días durante el cual se conservan registros en
CloudWatch Logs
• Lifecycle (Ciclo de vida): establézcalo en Delete logs upon termination (Eliminar los registros al
terminar) para eliminar registros de CloudWatch Logs inmediatamente si el entorno ha terminado, en
lugar de esperar a que caduquen.
6. Seleccione Aplicar.
244
AWS Elastic Beanstalk Developer Guide
Notificaciones
Cuando configura notificaciones para su entorno, Elastic Beanstalk crea un tema de Amazon SNS
para su entorno. Para enviar mensajes a un tema de Amazon SNS, Elastic Beanstalk debe tener el
permiso necesario. Para obtener más información, consulte Configuración de los permisos para enviar
notificaciones (p. 247).
Cuando se produce un evento (p. 454) destacable, Elastic Beanstalk envía un mensaje al tema. Amazon
SNS transmite los mensajes que recibe a los suscriptores del tema. Los eventos destacables incluyen
errores de creación del entorno y todos los cambios en el estado del entorno y las instancias (p. 416).
245
AWS Elastic Beanstalk Developer Guide
Configuración de notificaciones mediante
la Consola de Elastic Beanstalk
Los eventos de las operaciones de Amazon EC2 Auto Scaling (añadir y eliminar instancias del entorno) y
otros eventos informativos no activan notificaciones.
La Consola de Elastic Beanstalk le permite escribir una dirección de correo electrónico durante o después
de la creación del entorno para crear un tema de Amazon SNS y suscribirse a él. Elastic Beanstalk
administra el ciclo de vida del tema y lo elimina cuando se termina el entorno o cuando elimina su dirección
de correo electrónico en la consola de administración del entorno (p. 78).
Solo puede activar o desactivar notificaciones de Amazon SNS. En función del tamaño y la composición de
su entorno, la frecuencia de las notificaciones enviadas al tema puede ser elevada. Para las notificaciones
que se envían únicamente en circunstancias específicas, puede configurar su entorno para publicar
métricas personalizadas (p. 439) y definir alarmas de Amazon CloudWatch (p. 450) cuando estas
métricas alcancen un umbral de mal estado.
246
AWS Elastic Beanstalk Developer Guide
Configuración de las notificaciones
con las opciones de configuración
6. Seleccione Aplicar.
Cuando escribe una dirección de correo electrónico para notificaciones, Elastic Beanstalk crea un tema
de Amazon SNS para su entorno y añade una suscripción. Amazon SNS envía un correo electrónico a
la dirección suscrita para confirmar la suscripción. Debe hacer clic en el enlace del correo electrónico de
confirmación para activar la suscripción y recibir notificaciones.
Notification Endpoint: dirección de correo electrónico, cola de Amazon SQS o URL a la que se
envían las notificaciones. Si define esta opción se crea una cola de SQS y una suscripción al punto
de enlace especificado. Si el punto de enlace no es una dirección de correo electrónico, también debe
configurar la opción Notification Protocol. SNS valida el valor de Notification Endpoint
en función del valor de Notification Protocol. Si define esta opción varias veces, se crean
suscripciones adicionales al tema. Al eliminar esta opción se elimina el tema.
Notification Topic ARN: después de establecer un punto de enlace de notificación para su entorno,
consulte este valor para obtener el ARN del tema de SNS. También puede definir esta opción para que se
utilice un tema de SNS para recibir notificaciones. Un tema asociado a su entorno mediante esta opción no
se elimina cuando cambia esta opción o termina el entorno.
Notification Topic Name: defina esta opción para personalizar el nombre del tema de Amazon SNS
utilizado para las notificaciones del entorno. Si existe un tema con el mismo nombre, Elastic Beanstalk
asocia ese tema al entorno.
Warning
Si asocia un tema de SNS existente a un entorno con Notification Topic Name, Elastic
Beanstalk eliminará el tema si termina el entorno o cambia esta configuración.
Si se cambia esta opción, también cambia el valor de Notification Topic ARN. Si ya hay un tema
asociado al entorno, Elastic Beanstalk eliminará el tema anterior y, a continuación, creará un nuevo tema y
suscripción.
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
247
AWS Elastic Beanstalk Developer Guide
Configuración de los permisos para enviar notificaciones
Beanstalk crea para su entorno y proporcionar un tema de Amazon SNS externo a través de opciones de
configuración.
Sin embargo, si ha proporcionado un rol de servicio personalizado al crear su entorno, asegúrese de que
incluya la siguiente política.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2:123456789012:ElasticBeanstalkNotifications*"
]
}
]
}
Si proporciona un rol de servicio personalizado para el entorno, asegúrese de que incluya la siguiente
política. Reemplace sns_topic_name por el nombre del tema de Amazon SNS que ha facilitado en las
opciones de configuración.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2:123456789012:sns_topic_name"
]
}
]
}
248
AWS Elastic Beanstalk Developer Guide
Amazon VPC
Puede lanzar el entorno en una VPC personalizada para adaptar las opciones de red y seguridad. Elastic
Beanstalk le permite elegir las subredes que desea utilizar para sus recursos y cómo configurar las
direcciones IP para las instancias y el balanceador de carga de entorno. Un entorno está asociado a una
VPC al crearlo, pero puede cambiar las opciones de subred y de dirección IP cuando está en ejecución.
Para obtener instrucciones sobre cómo crear una VPC para usarla con Elastic Beanstalk, consulte Uso de
Elastic Beanstalk con Amazon Virtual Private Cloud (p. 562).
Opciones
• VPC (p. 249)
• Visibilidad del balanceador de carga (p. 249)
• Subredes del balanceador de carga (p. 250)
• Dirección IP pública de la instancia (p. 250)
• Subredes de instancia (p. 250)
• Grupos de seguridad de instancia (p. 250)
• Subredes de base de datos (p. 250)
VPC
Elija una VPC para el entorno. Solo puede cambiar esta opción durante la creación del entorno.
249
AWS Elastic Beanstalk Developer Guide
El espacio de nombres aws: ec2:vpc
Subredes de instancia
Elija subredes para las instancias de aplicación. Elija al menos una subred por cada zona de disponibilidad
que el balanceador de carga utilice. Si elige subredes privadas para las instancias, la VPC debe tener un
gateway NAT en una subred pública que las instancias puedan utilizar para el acceso a Internet.
Este archivo de configuración (p. 320) utiliza las opciones de este espacio de nombres para establecer
en la VPC y las subredes del entorno una configuración pública-privada. Con el fin de establecer el ID
de VPC en un archivo de configuración, el archivo debe incluirse en el paquete de código fuente de la
aplicación durante la creación del entorno. Consulte Ajuste de opciones de configuración durante la
creación del entorno (p. 259) para ver otros modos de configurar estas opciones durante la creación del
entorno.
option_settings:
aws:ec2:vpc:
VPCId: vpc-087a68c03b9c50c84
AssociatePublicIpAddress: 'false'
ELBScheme: public
ELBSubnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
Subnets: subnet-026c6117b178a9c45,subnet-0839e902f656e8bd1
En este ejemplo se muestra una configuración pública-pública, donde el balanceador de carga y las
instancias EC2 se ejecutan en las mismas subredes públicas.
250
AWS Elastic Beanstalk Developer Guide
Nombre de dominio
option_settings:
aws:ec2:vpc:
VPCId: vpc-087a68c03b9c50c84
AssociatePublicIpAddress: 'true'
ELBScheme: public
ELBSubnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
Subnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
Para dirigir a los usuarios a su entorno, Elastic Beanstalk registra un registro CNAME que apunta
al balanceador de carga del entorno. Puede ver el valor actual del registro CNAME en el panel de
entornos (p. 79), tal como se muestra.
Puede cambiar el registro CNAME en su entorno intercambiándolo por el registro CNAME de otro entorno.
Para obtener instrucciones, consulte Implementaciones "blue/green" con Elastic Beanstalk (p. 136).
Si dispone de un nombre de dominio, puede utilizar Amazon Route 53 para resolverlo en su entorno.
Puede adquirir un nombre de dominio con Amazon Route 53 o utilizar uno que compre a otro proveedor.
Para comprar un nombre de dominio con Route 53, consulte Registro de un nuevo dominio en la Guía para
desarrolladores de Amazon Route 53.
Para obtener más información sobre el uso de un dominio personalizado, consulte Routing Traffic to an
AWS Elastic Beanstalk Environment (Direccionamiento del tráfico a un entorno de AWS Elastic Beanstalk)
en la Guía para desarrolladores de Amazon Route 53.
Important
Si termina un entorno, también debe eliminar todos las asignaciones de CNAME creadas, ya que
otros clientes pueden reutilizar un nombre de host disponible.
251
AWS Elastic Beanstalk Developer Guide
Opciones de configuración
Puede personalizar fácilmente el entorno al mismo tiempo que implementa la versión de la aplicación
incluyendo un archivo de configuración con el paquete de código fuente. Cuando personalice el software
de la instancia, le resultará más útil utilizar un archivo de configuración que crear una AMI personalizada,
ya que no es necesario mantener un conjunto de AMI.
Es posible que, cuando implemente las aplicaciones, quiera personalizar y configurar el software del
que depende la aplicación. Estos archivos podrían ser dependencias necesarias para la aplicación (por
ejemplo, paquetes adicionales del repositorio de yum) o archivos de configuración (por ejemplo, un archivo
sustituto de httpd.conf que anulara ciertos valores específicos establecidos de forma predeterminada por
AWS Elastic Beanstalk).
Temas
• Opciones de configuración (p. 252)
• Personalización avanzada de entornos con archivos de configuración (.ebextensions) (p. 320)
• Uso de configuraciones guardadas de Elastic Beanstalk (p. 361)
• Manifiesto del entorno (env.yaml) (p. 369)
• Uso de una Imagen de máquina de Amazon (AMI) personalizada (p. 370)
• Distribución de archivos estáticos (p. 372)
• Configuración de HTTPS para su entorno de Elastic Beanstalk (p. 374)
Opciones de configuración
Elastic Beanstalk define un gran número de opciones de configuración que puede utilizar para configurar
el comportamiento del entorno y los recursos que contiene. Las opciones de configuración se organizan en
espacios de nombres como, por ejemplo, aws:autoscaling:asg, que define opciones para un grupo de
Auto Scaling del entorno.
252
AWS Elastic Beanstalk Developer Guide
Prioridad
los archivos de configuración. Si se ha establecido la misma opción en varias ubicaciones, el valor utilizado
se determina según el orden de prioridad (p. 253).
Los valores de las opciones de configuración están en formato de texto y se guardan antes de que se cree
el entorno, se aplican durante la creación del entorno mediante cualquier cliente compatible y se añaden,
modifican o eliminan después de crear el entorno. Para obtener un listado detallado de todos los métodos
disponibles para trabajar con opciones de configuración en cada una de estas tres fases, consulte los
siguientes temas:
Para obtener una lista completa de espacios de nombres y opciones, incluidos los valores
predeterminados y admitidos para cada uno, consulte Opciones generales para todos los
entornos (p. 271) y Opciones específicas de la plataforma (p. 311).
Prioridad
Durante la creación del entorno, las opciones de configuración se aplican desde diferentes orígenes con la
siguiente prioridad, de mayor a menor:
Si la misma opción de configuración se define en más de una ubicación, se aplica el valor con la
prioridad más alta. Cuando se aplica un valor de una configuración guardada o cuando se aplica un valor
directamente al entorno, el valor se almacena como parte de la configuración del entorno. Estos valores
pueden eliminarse con la CLI de AWS (p. 271) o con la CLI de EB (p. 268).
Los valores de los archivos de configuración no se aplican directamente al entorno y no pueden eliminarse
sin modificar los archivos de configuración e implementar una nueva versión de la aplicación. Si un valor
aplicado con uno de los otros métodos se elimina, el mismo valor se carga de los archivos de configuración
del paquete de código fuente.
Suponga, por ejemplo, que establece el número mínimo de instancias en su entorno en 5 durante la
creación del entorno, usando la Consola de administración de AWS, una opción de la línea de comandos
o una configuración guardada. El paquete de código fuente de su aplicación también incluye un archivo de
configuración que establece el número mínimo de instancias en 2.
Cuando cree el entorno, Elastic Beanstalk establece la opción MinSize del espacio de nombres
aws:autoscaling:asg en 5. Si a continuación elimina la opción del entorno de configuración, se carga
253
AWS Elastic Beanstalk Developer Guide
Valores recomendados
Valores recomendados
La interfaz de línea de comandos de Elastic Beanstalk (CLI de EB) y la Consola de Elastic Beanstalk
proporcionan valores recomendados para algunas opciones de configuración. Estos valores pueden
ser diferentes de los valores predeterminados y se establecen en el nivel de API cuando se crea el
entorno. Los valores recomendados permiten a Elastic Beanstalk mejorar la configuración del entorno
predeterminada sin realizar cambios incompatibles con versiones anteriores en la API.
Por ejemplo, la CLI de EB y la Consola de Elastic Beanstalk definen la opción de configuración del tipo de
instancia EC2 (InstanceType en el espacio de nombres aws:autoscaling:launchconfiguration).
Cada cliente proporciona una forma diferente de invalidar la configuración predeterminada. En la consola
puede elegir un tipo de instancia diferente en un menú desplegable de la página Configuration Details del
asistente Create New Environment. Con la CLI de EB, puede utilizar el parámetro --instance_type
para eb create (p. 622).
Como los valores recomendados se establecen en el nivel de API, estos valores invalidarán los valores de
las mismas opciones que defina en archivos de configuración o configuraciones guardadas. Se definen las
siguientes opciones:
254
AWS Elastic Beanstalk Developer Guide
Antes de crear el entorno
CLI de EB
Elastic Beanstalk admite dos métodos para guardar valores de opciones de configuración. Se pueden
incluir archivos de configuración en formato YAML o JSON en el código fuente de su aplicación en un
directorio denominado .ebextensions e implementarse como parte del paquete de código fuente de su
aplicación. Los archivos de configuración se crean y administran localmente.
Las configuraciones guardadas son plantillas que crea desde un entorno en ejecución o archivo de
opciones JSON y almacena en Elastic Beanstalk. Las configuraciones guardadas existentes también se
pueden ampliar para crear una nueva configuración.
Note
Los valores definidos en los archivos de configuración y las configuraciones guardadas tienen
menos prioridad que los valores configurados durante o después de la creación del entorno,
incluidos los valores recomendados aplicados por la Consola de Elastic Beanstalk y la CLI de
EB (p. 578). Consulte Prioridad (p. 253) para obtener más información.
Para ver la lista completa de opciones disponibles, consulte Opciones de configuración (p. 252).
Métodos
255
AWS Elastic Beanstalk Developer Guide
Antes de crear el entorno
Para utilizar archivos de configuración, cree una carpeta con el nombre .ebextensions en la parte
superior del código fuente de su proyecto. Añada un archivo con la extensión .config y especifique las
opciones de la siguiente manera:
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
healthcheckurl.config
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /health
En JSON:
{
"option_settings" :
[
{
"namespace" : "aws:elasticbeanstalk:application",
"option_name" : "Application Healthcheck URL",
"value" : "/health"
}
]
}
Este archivo configura el balanceador de carga de Elastic Load Balancing de su entorno de Elastic
Beanstalk para que realice una solicitud HTTP a la ruta /health a cada instancia EC2 con el fin de
determinar si está o no está en buen estado.
Note
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para
la sangría, no tabuladores.
256
AWS Elastic Beanstalk Developer Guide
Antes de crear el entorno
Los archivos de configuración admiten varias secciones además de option_settings para personalizar
el software y los archivos que se ejecutan en los servidores de su entorno. Para obtener más información,
consulte Personalización de software en servidores Linux (p. 323) y Personalización de software en
servidores Windows (p. 335).
Configuraciones guardadas
Cree una configuración guardada para guardar los valores que ha aplicado a un entorno existente durante
o después de la creación del entorno mediante la Consola de administración de AWS, la CLI de EB o la
CLI de AWS. Las configuraciones guardadas pertenecen a una aplicación y se pueden aplicar a entornos
nuevos o existentes de dicha aplicación.
Clientes
• Consola de Elastic Beanstalk (p. 257)
• CLI de EB (p. 257)
• CLI de AWS (p. 258)
CLI de EB
La CLI de EB (p. 578) proporciona también subcomandos para interactuar con las configuraciones
guardadas en eb config (p. 619):
257
AWS Elastic Beanstalk Developer Guide
Antes de crear el entorno
CLI de AWS
Creación de una configuración guardada desde un entorno en ejecución con aws elasticbeanstalk
create-configuration-template
Documento JSON
Si utiliza la CLI de AWS para crear y actualizar entornos, también puede proporcionar opciones de
configuración en formato JSON. Una biblioteca de archivos de configuración en JSON es útil si utiliza la
CLI de AWS para crear y administrar entornos.
Por ejemplo, el siguiente documento JSON establece la URL de comprobación de estado de la aplicación
en /health:
~/ebconfigs/healthcheckurl.json
[
{
"Namespace": "aws:elasticbeanstalk:application",
"OptionName": "Application Healthcheck URL",
258
AWS Elastic Beanstalk Developer Guide
Durante la creación
"Value": "/health"
}
]
Configuración de la CLI de EB
Además de admitir configuraciones guardadas y la configuración directa del entorno con
comandos eb config, la CLI de EB tiene un archivo de configuración con una opción denominada
default_ec2_keyname que puede utilizar para especificar un par de claves de Amazon EC2 para el
acceso SSH a las instancias de su entorno. La CLI de EB utiliza esta opción para establecer la opción de
configuración EC2KeyName en el espacio de nombres aws:autoscaling:launchconfiguration.
~/workspace/my-app/.elasticbeanstalk/config.yml
branch-defaults:
master:
environment: my-env
develop:
environment: my-env-dev
deploy:
artifact: ROOT.war
global:
application_name: my-app
default_ec2_keyname: my-keypair
default_platform: Tomcat 8 Java 8
default_region: us-west-2
profile: null
sc: git
Para cualquier otra cosa distinta de un cambio de configuración puntual, puede almacenar los archivos de
configuración (p. 255) localmente en su paquete de código fuente o en Amazon S3.
Este tema incluye procedimientos para todos los métodos de definición de opciones de configuración
durante la creación del entorno.
Clientes
• En la Consola de administración de AWS (p. 259)
• Uso de la CLI de EB (p. 261)
• Mediante la CLI de AWS (p. 262)
Métodos
259
AWS Elastic Beanstalk Developer Guide
Durante la creación
~/workspace/my-app-v1.zip
|-- .ebextensions
| |-- environmentvariables.config
| `-- healthcheckurl.config
|-- index.php
`-- styles.css
Cargue el paquete de código fuente en Elastic Beanstalk de la manera habitual durante la creación del
entorno (p. 88).
La Consola de Elastic Beanstalk aplica los valores recomendados (p. 254) para algunas opciones
de configuración y dispone de campos de formulario para otras. Las opciones configuradas por la
Consola de Elastic Beanstalk se aplican directamente al entorno e invalidan los ajustes de los archivos de
configuración.
Para aplicar una configuración guardada durante la creación del entorno (Consola de
administración de AWS)
Para definir opciones de configuración durante la creación del entorno (Consola de administración
de AWS)
260
AWS Elastic Beanstalk Developer Guide
Durante la creación
Todas las opciones que define en el asistente para crear un nuevo entorno se establecen directamente
en el entorno e invalidan los valores de las opciones en las configuraciones guardadas o archivos de
configuración (.ebextensions) que aplique. Puede eliminar los valores después de crear el entorno
mediante la CLI de EB (p. 266) o la CLI de AWS (p. 269) para permitir que se apliquen los valores de
las configuraciones guardadas o los archivos de configuración.
Para obtener información acerca del nuevo asistente de entorno, consulte El asistente de creación de
nuevo entorno (p. 90).
Uso de la CLI de EB
Métodos
• Uso de archivos de configuración (.ebextensions) (p. 261)
• Uso de configuraciones guardadas (p. 261)
• Uso de las opciones de la línea de comandos (p. 262)
~/workspace/my-app/
|-- .ebextensions
| |-- environmentvariables.config
| `-- healthcheckurl.config
|-- .elasticbeanstalk
| `-- config.yml
|-- index.php
`-- styles.css
261
AWS Elastic Beanstalk Developer Guide
Durante la creación
~/workspace/my-app/
|-- .ebextensions
| `-- healthcheckurl.config
|-- .elasticbeanstalk
| |-- saved_configs
| | `-- savedconfig.cfg.yml
| `-- config.yml
|-- index.php
`-- styles.css
Por ejemplo, la CLI de EB utiliza el tipo de instancia t2.micro de forma predeterminada. Para elegir un
tipo de instancia diferente, utilice la opción --instance_type.
Para crear una instancia de base de datos de Amazon RDS y asociarla a su entorno, utilice las opciones
--database.
Si omite el nombre del entorno, la contraseña de la base de datos y otros parámetros necesarios para
crear su entorno, la CLI de EB le pedirá que los introduzca.
Consulte eb create (p. 622) para ver una lista completa de las opciones disponibles y ejemplos de uso.
Métodos
• Uso de archivos de configuración (.ebextensions) (p. 262)
• Uso de una configuración guardada (p. 263)
• Uso de las opciones de la línea de comandos (p. 263)
~/workspace/my-app-v1.zip
|-- .ebextensions
| |-- environmentvariables.config
262
AWS Elastic Beanstalk Developer Guide
Durante la creación
| `-- healthcheckurl.config
|-- index.php
`-- styles.css
Para cargar un paquete de código fuente de la aplicación y crear un entorno con la CLI de AWS
1. Si aún no tiene un bucket de Elastic Beanstalk en Amazon S3, cree uno con create-storage-
location.
4. Cree el entorno:
Cuando especifique una configuración guardada, no especifique un nombre de la pila de soluciones. Las
configuraciones guardadas ya especifican una pila de soluciones y Elastic Beanstalk devolverá un error si
intenta utilizar ambas opciones.
263
AWS Elastic Beanstalk Developer Guide
Después de la creación
Elastic Beanstalk aplica los valores de las opciones que especifica con la opción --option-settings
directamente a su entorno. Si se especifican las mismas opciones en una configuración guardada o archivo
de configuración, --option-settings invalida esos valores.
Puede quitar valores de configuración de un entorno con los comandos de la CLI de EB o la CLI de AWS.
Si se elimina una opción que se estableció directamente en un entorno en el nivel de una API, se aplicarán
las opciones de los archivos de configuración, que de otra forma permanecerían ocultas por los valores
que se aplicaron directamente en el entorno.
Clientes
• Consola de Elastic Beanstalk (p. 264)
• CLI de EB (p. 266)
• CLI de AWS (p. 269)
Métodos
• Uso de archivos de configuración (.ebextensions) (p. 265)
• Uso de una configuración guardada (p. 265)
264
AWS Elastic Beanstalk Developer Guide
Después de la creación
Los cambios realizados en los archivos de configuración no sustituyen a las opciones de las
configuraciones guardadas ni a los valores que se aplican directamente en el entorno en el nivel de la API.
Consulte Precedence (p. 253) para obtener más información.
Los valores definidos en una configuración anulan a los de los archivos de configuración, aunque no tienen
prioridad frente a los valores configurados a través de la consola de administración del entorno.
Consulte Configuraciones guardadas (p. 257) para obtener información detallada sobre cómo crear
configuraciones guardadas.
265
AWS Elastic Beanstalk Developer Guide
Después de la creación
Cuando vea la opción que está buscando, elija Modify (Modificar) en la categoría de configuración
que contiene.
Los cambios de las opciones de configuración que se realizan a través de la consola de administración del
entorno se aplican directamente al entorno. Estos cambios invalidan los valores de las mismas opciones
en los archivos de configuración o en las configuraciones guardadas. Consulte Prioridad (p. 253) para
obtener más información.
Para obtener más información sobre cómo cambiar las opciones de configuración en un entorno de
ejecución a través de la Consola de Elastic Beanstalk, consulte los temas de Configuración del entorno de
AWS Elastic Beanstalk (p. 174).
CLI de EB
Puede actualizar los valores de configuración con la CLI de EB implementando un código fuente
que contenga los archivos de configuración, aplicando los valores de una configuración guardada o
modificando directamente la configuración del entorno con el comando eb config.
Métodos
266
AWS Elastic Beanstalk Developer Guide
Después de la creación
~/workspace/my-app/
|-- .ebextensions
| |-- environmentvariables.config
| `-- healthcheckurl.config
|-- .elasticbeanstalk
| `-- config.yml
|-- index.php
`-- styles.css
~/workspace/my-app$ eb deploy
$ eb config --cfg v1
Los valores que se aplican a un entorno con este comando anulan los valores que se aplicaron durante la
creación del entorno y los valores definidos en los archivos de configuración del paquete de código fuente
de la aplicación.
Uso eb config
El comando eb config de la CLI de EB le permite establecer y eliminar valores de configuración
directamente en el entorno a través de un editor de texto.
Cuando ejecuta eb config, la CLI de EB muestra la configuración que se aplica al entorno desde
todos los orígenes, incluidos los archivos de configuración, las configuraciones guardadas, los valores
recomendados, las opciones definidas directamente en el entorno y los valores predeterminados de la API.
Note
eb config no muestra las propiedades del entorno. Para configurar las propiedades del entorno
que se pueden consultar desde la aplicación, utilice eb setenv (p. 269).
267
AWS Elastic Beanstalk Developer Guide
Después de la creación
ApplicationName: tomcat
DateUpdated: 2015-09-30 22:51:07+00:00
EnvironmentName: tomcat
SolutionStackName: 64bit Amazon Linux 2015.03 v2.0.1 running Tomcat 8 Java 8
settings:
...
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-1f316660
InstanceType: t2.micro
...
~/workspace/my-app/$ eb config
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-1f316660
InstanceType: t2.medium
Si los valores de configuración se establecen con eb config, se anulan los valores de todos los demás
orígenes.
~/workspace/my-app/$ eb config
2. Sustituya los valores mostrados por la cadena null. También puede eliminar toda la línea que
contiene la opción que desea eliminar.
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
268
AWS Elastic Beanstalk Developer Guide
Después de la creación
ImageId: ami-1f316660
InstanceType: null
Si elimina las opciones del entorno con eb config, se activan las mismas opciones de los archivos de
configuración del paquete de código fuente de la aplicación. Consulte Precedence (p. 253) para obtener
más información.
Uso eb setenv
Para establecer las propiedades de entorno con la CLI de EB, utilice eb setenv.
~/workspace/my-app/$ eb printenv
Environment Variables:
ENVVAR = TEST
CLI de AWS
Puede actualizar los valores de configuración con la CLI de AWS implementando un paquete de código
fuente que contenga los archivos de configuración, aplicando una configuración guardada en remoto o
modificando el entorno directamente con el comando aws elasticbeanstalk update-environment.
Métodos
• Uso de archivos de configuración (.ebextensions) (p. 269)
• Uso de una configuración guardada (p. 270)
• Uso de las opciones de la línea de comandos (p. 270)
~/workspace/my-app-v1.zip
|-- .ebextensions
| |-- environmentvariables.config
| `-- healthcheckurl.config
|-- index.php
`-- styles.css
269
AWS Elastic Beanstalk Developer Guide
Después de la creación
1. Si aún no tiene un bucket de Elastic Beanstalk en Amazon S3, cree uno con create-storage-
location:
4. Actualice el entorno.
La configuración guardada debe estar en el bucket de Elastic Beanstalk, en una ruta con el mismo
nombre que la aplicación que se encuentra en resources/templates. Por ejemplo, la plantilla v1 de
la aplicación my-app para la región EE.UU. Oeste (Oregón) (us-west-2) de la cuenta 123456789012 se
encuentra en s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-
app/v1.
Elastic Beanstalk sitúa las configuraciones guardadas en esta ubicación cuando se crean con
aws elasticbeanstalk create-configuration-template. También puede modificar las
configuraciones guardadas localmente y guardarlas usted mismo en esta ubicación.
Para cambiar las opciones de configuración con un documento JSON (CLI de AWS)
270
AWS Elastic Beanstalk Developer Guide
Opciones generales
En este ejemplo, as-zero.json define las opciones que configuran el entorno con el valor cero para el
número mínimo y máximo de instancias. De este modo, las instancias del entorno pueden detenerse sin
necesidad de terminar el entorno.
~/ebconfigs/as-zero.json
[
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MinSize",
"Value": "0"
},
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MaxSize",
"Value": "0"
},
{
"Namespace": "aws:autoscaling:updatepolicy:rollingupdate",
"OptionName": "RollingUpdateEnabled",
"Value": "false"
}
]
Note
Si elimina las opciones del entorno con update-environment, se activan las mismas opciones de los
archivos de configuración del paquete de código fuente de la aplicación. Si hay una opción que no se
ha configurado con ninguno de estos métodos, se aplicará el valor predeterminado de la API, si existe.
Consulte Precedence (p. 253) para obtener más información.
271
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:autoscaling:asg
Configure el grupo de Auto Scaling del entorno.
272
AWS Elastic Beanstalk Developer Guide
Opciones generales
us-east-1c
us-east-1d
us-east-1e
eu-central-1
aws:autoscaling:launchconfiguration
Configure las instancias EC2 del entorno.
IamInstanceProfile
Si se utiliza un perfil de instancia, los Ninguno Nombre de perfil
usuarios de AWS Identity and Access de instancia o ARN
Management (IAM) y los servicios de AWS
podrán obtener acceso temporalmente
a las credenciales de seguridad para
realizar llamadas a las API de AWS.
Especifique el nombre del perfil de
instancia o su ARN.
Ejemplos:
273
AWS Elastic Beanstalk Developer Guide
Opciones generales
Note
Ejemplo: ami-1f316660
274
AWS Elastic Beanstalk Developer Guide
Opciones generales
MonitoringInterval
Intervalo en el que quiere que se 5 minute 1 minute
devuelvan las métricas de Amazon
CloudWatch. 5 minute
275
AWS Elastic Beanstalk Developer Guide
Opciones generales
276
AWS Elastic Beanstalk Developer Guide
Opciones generales
protocolo
277
AWS Elastic Beanstalk Developer Guide
Opciones generales
BlockDeviceMappings
Puede adjuntar más volúmenes de Ninguno
Amazon EBS o volúmenes de almacén
de instancias en todas las instancias del
grupo de Auto Scaling.
• ID de instantánea
• tamaño, en GB
• eliminar al terminar (true o false)
• tipo de almacenamiento (gp2,
standard, st1, sc1 o io1)
• IOPS (solo para volúmenes io1).
/dev/sdj=:100:true:gp2,/
dev/sdh=snap-51eef269,/dev/
sdi=:20:true:io1:2000,/dev/
sdb=ephemeral0
RootVolumeType
Tipo de volumen (magnético, SSD de uso Varía en función de la standard para
general o SSD de IOPS provisionadas) plataforma almacenamiento
que se va utilizar con el volumen raíz de magnético
Amazon EBS asociado a las instancias
EC2 del entorno. gp2 para SSD de
uso general
io1 para
SSD de IOPS
provisionadas
278
AWS Elastic Beanstalk Developer Guide
Opciones generales
RootVolumeIOPS
Operaciones de entrada y salida por Ninguno De 100 a 20000
segundo (IOPS) que se pretenden
realizar en un volumen raíz SSD de IOPS
provisionadas.
aws:autoscaling:scheduledaction
Configure las acciones programadas (p. 189) para el grupo de Auto Scaling del entorno. Para cada acción,
especifique un resource_name, además del nombre de opción, espacio de nombres y valor para cada
ajuste. Para ver ejemplos, consulte El espacio de nombres aws:autoscaling:scheduledaction (p. 190).
EndTime Fecha y hora futuras (en la zona horaria Ninguno Una marca de
UTC/GMT) en las que desea que la tiempo ISO-8601
acción de escalado programada deje de única para todas
repetirse. Si no especifica un valor de las acciones
EndTime, la acción se repite según la de escalado
expresión Recurrence. programadas.
Ejemplo: 2015-04-28T04:07:2Z
279
AWS Elastic Beanstalk Developer Guide
Opciones generales
Recurrence Frecuencia con la que desea que se Ninguno Una expresión cron.
produzca la acción programada. Si no
se especifica la recurrencia, la acción de
escalado se ejecutará una sola vez en el
momento especificado en StartTime.
aws:autoscaling:trigger
Configure los disparadores de escalado del grupo de Auto Scaling del entorno.
Note
Hay tres opciones en este espacio de nombres que determinan el tiempo que una métrica
del desencadenador puede permanecer más allá de sus límites definidos antes de que el
desencadenador se active. Estas opciones están relacionadas de la siguiente manera:
BreachDuration = Period * EvaluationPeriods
Los valores predeterminados de estas opciones (5, 5 y 1, respectivamente) cumplen esta
ecuación. Si especifica valores incoherentes, Elastic Beanstalk podría modificar uno de los valores
para que la ecuación se siga cumpliendo.
LowerBreachScaleIncrement
Número de instancias de Amazon EC2 -1
que se van a eliminar cuando se efectúe
una actividad de escalado.
280
AWS Elastic Beanstalk Developer Guide
Opciones generales
NetworkOut
DiskWriteOps
DiskReadBytes
DiskReadOps
DiskWriteBytes
Latency
RequestCount
HealthyHostCount
UnhealthyHostCount
TargetResponseTime
Sum
Average
281
AWS Elastic Beanstalk Developer Guide
Opciones generales
Bytes
Bits
Count
Bytes/Second
Bits/Second
Count/Second
None
UpperBreachScaleIncrement
Número de instancias de Amazon EC2 1
que se van a agregar cuando se efectúe
una actividad de escalado.
aws:autoscaling:updatepolicy:rollingupdate
Configure las actualizaciones continuas del grupo de Auto Scaling del entorno.
282
AWS Elastic Beanstalk Developer Guide
Opciones generales
Si este valor se
establece en
true, las opciones
MaxBatchSize,
MinInstancesInService
y PauseTime
se habilitan
automáticamente. Al
establecer cualquiera
de estas opciones,
el valor de la opción
RollingUpdateEnabled
también se establece
automáticamente
en true. Si esta
opción se establece en
false, se deshabilitan
las actualizaciones
continuas.
Note
Si utiliza
Consola
de Elastic
Beanstalk o
la CLI de EB
para crear
un entorno,
no podrá
establecer
esta opción en
un archivo de
configuración (p. 320).
La consola
y la CLI de
EB invalidan
esta opción
con un valor
recomendado (p. 254).
283
AWS Elastic Beanstalk Developer Guide
Opciones generales
Si utiliza
Consola
de Elastic
Beanstalk o
la CLI de EB
para crear
un entorno,
no podrá
establecer
esta opción en
un archivo de
configuración (p. 320).
La consola
y la CLI de
EB invalidan
esta opción
con un valor
recomendado (p. 254).
284
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:ec2:vpc
Configure el entorno para lanzar recursos en una Amazon Virtual Private Cloud (Amazon VPC)
personalizada. Si no configura ninguna opción de este espacio de nombres, Elastic Beanstalk inicia los
recursos en la VPC predeterminada.
AssociatePublicIpAddress
Especifica si se van a lanzar instancias en la Amazon Ninguno true
VPC con direcciones IP públicas. Las instancias con
direcciones IP públicas no necesitan un dispositivo NAT false
para comunicarse con Internet. Establezca el valor en
285
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:application
Configure una ruta de comprobación de estado para la aplicación. Para obtener más información, consulte
Informes de estado básicos (p. 413).
Application Ruta a la que se van a enviar las Ninguno/ (HTTP GET para la ruta
Healthcheck URL solicitudes de comprobación de estado. raíz)
Si no se establece, el balanceador de
carga intenta realizar una conexión /health
TCP en el puerto 80 para comprobar el
estado. Utilice como valor una ruta que HTTPS:443/
empiece por / para enviar una solicitud
HTTPS:443/health
HTTP GET a esa ruta. También puede
incluir un protocolo (HTTP, HTTPS, etc.
TCP o SSL) y un puerto antes de la
ruta para comprobar la conectividad
HTTPS o utilizar otro puerto diferente al
predeterminado.
Note
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para
obtener más información, consulte Valores recomendados (p. 254).
aws:elasticbeanstalk:application:environment
Configure las propiedades del entorno de la aplicación.
286
AWS Elastic Beanstalk Developer Guide
Opciones generales
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
aws:elasticbeanstalk:cloudwatch:logs
Configure el streaming de logs de instancias en la aplicación.
DeleteOnTerminate
Determina si se van a eliminar los grupos de logs cuando false true
termine el entorno. Si el valor es false, los registros se
guardan RetentionInDays días. false
aws:elasticbeanstalk:cloudwatch:logs:health
Configura el streaming de logs de estado de entorno de la aplicación.
HealthStreamingEnabled
En los entornos con informes de estado mejorados false true
habilitados, tanto para crear un grupo en CloudWatch
Logs para el estado de entorno como para false
archivar datos de estado de entorno de Elastic
Beanstalk. Para obtener información acerca
de cómo habilitar el estado mejorado, consulte
aws:elasticbeanstalk:healthreporting:system (p. 294).
DeleteOnTerminate
Si se va a eliminar el grupo de logs cuando termine false true
el entorno. Si se usa false, los datos de estado se
mantienen RetentionInDays días. false
287
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:command
Configure implementaciones continuas para el código de la aplicación.
288
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:environment
Configure el rol de servicio y la arquitectura del entorno.
ServiceRole Nombre del rol de IAM que Elastic Beanstalk Ninguno Nombre de rol
utiliza para administrar los recursos del entorno. de IAM, ruta/
Especifique un nombre de rol (opcionalmente nombre o ARN
prefijado una ruta personalizada) o su ARN.
Ejemplos:
• aws-elasticbeanstalk-service-role
• custom-path/custom-role
• arn:aws:iam::123456789012:role/
aws-elasticbeanstalk-service-role
289
AWS Elastic Beanstalk Developer Guide
Opciones generales
application
network
aws:elasticbeanstalk:environment:process:default
Configure el proceso predeterminado del entorno.
290
AWS Elastic Beanstalk Developer Guide
Opciones generales
Con un balanceador de
carga de red solo puede
aplicar esta opción a
TCP.
StickinessLBCookieDuration
Duración, en segundos, 86400 (un día) De 1 a 604800
de la cookie de la sesión
sticky.
291
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:environment:process:process_name
Configure otros procesos en el entorno.
292
AWS Elastic Beanstalk Developer Guide
Opciones generales
Con un balanceador de
carga de red solo puede
aplicar esta opción a
TCP.
StickinessLBCookieDuration
Duración, en segundos, 86400 (un día) De 1 a 604800
de la cookie de la sesión
sticky.
293
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:healthreporting:system
Configure informes de estado avanzados sobre el entorno.
HealthCheckSuccessThreshold
Reduzca el umbral para que las instancias puedan Ok Ok
superar las comprobaciones de estado.
Warning
Note
Degraded
Si utiliza Consola de Elastic Beanstalk
para crear un entorno, no podrá Severe
establecer esta opción en un archivo
de configuración (p. 320). La consola
invalida esta opción con un valor
recomendado (p. 254).
294
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:hostmanager
Configure las instancias EC2 de su entorno para que puedan cargarse logs rotados en Amazon S3.
LogPublicationControl Permite copiar los archivos log de las instancias false true
de Amazon EC2 de la aplicación en el bucket de
Amazon S3 asociado a la aplicación. false
aws:elasticbeanstalk:managedactions
Configure las actualizaciones de plataforma administradas del entorno.
aws:elasticbeanstalk:managedactions:platformupdate
Configure las actualizaciones de plataforma administradas del entorno.
295
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elasticbeanstalk:monitoring
Configure el entorno para terminar las instancias EC2 que no superen las comprobaciones de estado.
aws:elasticbeanstalk:sns:topics
Configure las notificaciones del entorno.
296
AWS Elastic Beanstalk Developer Guide
Opciones generales
email-json
sqs
aws:elasticbeanstalk:sqsd
Configure la cola de Amazon SQS para un entorno de trabajo.
Cuando no especifica un
valor, la cola que crea Elastic
Beanstalk automáticamente
es una cola estándar de
Amazon SQS. Cuando indica
un valor, puede proporcionar
la URL de una cola estándar
o FIFO de Amazon SQS.
297
AWS Elastic Beanstalk Developer Guide
Opciones generales
application/xml
text/plain
298
AWS Elastic Beanstalk Developer Guide
Opciones generales
ErrorVisibilityTimeout
Período de tiempo, en segundos, 2 segundos De 0 a 43200 segundos
que transcurre antes de que Elastic
Beanstalk devuelva un mensaje a
la cola de Amazon SQS cuando
se produce un error explícito en un
intento de procesamiento.
aws:elb:healthcheck
Configure comprobaciones de estado para un balanceador de tipo Classic Load Balancer.
299
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elb:loadbalancer
Configure un balanceador de tipo Classic Load Balancer para el entorno.
Algunas de las opciones de este espacio de nombres han dejado de utilizarse en favor de opciones
específicas de los agentes de escucha del espacio de nombres aws:elb:listener (p. 301). Las opciones
en desuso solo permiten configurar dos agentes de escucha (uno seguro y otro no seguro) en los puertos
estándar.
SecurityGroups Asigne uno o varios de los grupos de seguridad Ninguno Uno o varios
creados para el balanceador de carga. identificadores
de grupo de
seguridad.
300
AWS Elastic Beanstalk Developer Guide
Opciones generales
8443
aws:elb:listener
Configure el agente de escucha predeterminado (puerto 80) de un balanceador de tipo Classic Load
Balancer.
301
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elb:listener:listener_port
Configure otros agentes de escucha en un balanceador de tipo Classic Load Balancer.
302
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elb:policies
Modifique la persistencia predeterminada y las políticas globales para un balanceador de tipo Classic Load
Balancer.
ConnectionDrainingEnabled
Especifica si el balanceador de carga va false true
a mantener las conexiones existentes con
las instancias que han adoptado un estado false
incorrecto o cuyo registro se ha anulado para
completar las solicitudes en curso.
Note
ConnectionDrainingTimeout
Número máximo de segundos que el 20 De 1 a 3600
balanceador de carga mantiene las
conexiones existentes con una instancia
durante el vaciado de conexiones antes de
que se fuerce el cierre de las conexiones.
Note
ConnectionSettingIdleTimeout
Número de segundos que el balanceador 60 De 1 a 3600
de carga va a esperar para que se envíen o
303
AWS Elastic Beanstalk Developer Guide
Opciones generales
LoadBalancerPorts Lista separada por comas de los puertos Ninguno Puede utilizar
de agente de escucha a los que se aplica :all para
la política predeterminada (AWSEB-ELB- indicar todos
StickinessPolicy). los puertos
del agente de
escucha.
Stickiness Policy Vincula la sesión de un usuario con una false true false
instancia de servidor específica para que
todas las solicitudes que provengan de
ese usuario durante la sesión se envíen
a la misma instancia de servidor. Utiliza
la política predeterminada (AWSEB-ELB-
StickinessPolicy).
aws:elb:policies:policy_name
Cree otras políticas para balanceadores de tipo Classic Load Balancer.
InstancePorts Lista separada por comas de los puertos de Ninguno Una lista de
instancia a los que se aplica esta política. puertos o :all
LoadBalancerPorts Lista separada por comas de los puertos de Ninguno Una lista de
agente de escucha a los que se aplica esta puertos o :all
política.
304
AWS Elastic Beanstalk Developer Guide
Opciones generales
Stickiness Policy Vincula la sesión de un usuario con una false true false
instancia de servidor específica para que
todas las solicitudes que provengan de ese
usuario durante la sesión se envíen a la
misma instancia de servidor.
aws:elbv2:listener:default
Configure el agente de escucha predeterminado (puerto 80) de un balanceador de tipo de aplicaciones o
un balanceador de carga de red.
305
AWS Elastic Beanstalk Developer Guide
Opciones generales
306
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elbv2:listener:listener_port
Configure los agentes de escucha adicionales de un balanceador de tipo de aplicaciones o un balanceador
de carga de red.
307
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:elbv2:listenerrule:rule_name
Definir reglas de agente de escucha para un balanceador de carga de aplicación. Si una solicitud se
corresponde con los nombres de host o las rutas de una regla, el balanceador de carga la reenvía al
proceso especificado. Para utilizar una regla, agréguela a un agente de escucha con la opción Rules del
espacio de nombres aws:elbv2:listener:listener_port (p. 307).
Note
HostHeadersLista de nombres de host con los que Ninguno Cada nombre puede
buscar correspondencia. Por ejemplo, tener una longitud de
my.example.com. hasta 128 caracteres (A-
Z, a-z, 0-9, –) y hasta
tres caracteres comodín
(* coincide con cero
o más caracteres; ?
coincide exactamente
con un carácter).
PathPatternsUn patrón de ruta con el que coincidir. Por Ninguno Un patrón puede
ejemplo, /img/*. tener una longitud de
hasta 128 caracteres
Esta opción solo se aplica a los entornos con un (A-Z, a-z, 0-9, –) y
balanceador de carga de aplicaciones. puede incluir hasta tres
caracteres comodín (*
coincide con cero o más
caracteres; ? coincide
exactamente con un
carácter).
Process Nombre del proceso (p. 290) al que se va a default Un nombre de proceso.
reenviar el tráfico cuando esta regla coincida
con la solicitud.
aws:elbv2:loadbalancer
Configure un balanceador de tipo Application Load Balancer.
Note
308
AWS Elastic Beanstalk Developer Guide
Opciones generales
309
AWS Elastic Beanstalk Developer Guide
Opciones generales
aws:rds:dbinstance
Configure una instancia de base de datos de Amazon RDS adjuntada.
DBAllocatedStorage
Tamaño de almacenamiento asignado en la MySQL: 5 MySQL: 5-1024
base de datos especificado en gigabytes.
Oracle: 10 Oracle: 10-1024
sqlserver-se: sqlserver: no se
200 puede modificar
sqlserver-ex: 30
sqlserver-web:
30
sqlserver-ex
sqlserver-web
sqlserver-se
postgres
310
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
DBSnapshotIdentifier
Identificador de la instantánea de base Ninguno
de datos desde la que se va a realizar la
restauración.
311
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
Opciones de la plataforma Go
Puede utilizar el siguiente espacio de nombres para configurar el servidor proxy de forma que proporcione
archivos estáticos. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada,
proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación. De este modo, se
reduce el número de solicitudes que la aplicación tiene que procesar.
Asigne una ruta proporcionada por el servidor proxy a una carpeta del código fuente que contenga activos
estáticos. Cada una de las opciones que defina en este espacio de nombres asignará una ruta diferente.
Nombre Valor
Ruta donde el servidor proxy distribuirá los Nombre de la carpeta que contiene los archivos.
archivos.
Ejemplo: staticimages para distribuir archivos
Ejemplo: /images para distribuir archivos en de una carpeta con el nombre staticimages en
subdomain.eleasticbeanstalk.com/ la parte superior del paquete de código fuente.
images.
Asigne una ruta proporcionada por el servidor proxy a una carpeta del código fuente que contenga activos
estáticos. Cada una de las opciones que defina en este espacio de nombres asignará una ruta diferente.
Nombre Valor
Ruta donde el servidor proxy distribuirá los Nombre de la carpeta que contiene los archivos.
archivos.
Ejemplo: staticimages para distribuir archivos
Ejemplo: /images para distribuir archivos en de una carpeta con el nombre staticimages en
subdomain.eleasticbeanstalk.com/ la parte superior del paquete de código fuente.
images.
Ejecute el daemon de AWS X-Ray para transmitir la información de seguimiento de la aplicación Java 8
integrada con X-Ray (p. 240).
312
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
JDBC_CONNECTION_STRING
Cadena de conexión con una base de datos n/a n/a
externa.
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
XX:MaxPermSize Sección del montón de JVM que se utiliza para 64m n/a
almacenar definiciones de clases y metadatos
asociados.
GzipCompression
Establézcalo en false para deshabilitar la true true
compresión de las respuestas.
false
313
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
Puede utilizar el siguiente espacio de nombres para configurar el servidor proxy de forma que proporcione
archivos estáticos. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada,
proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación. De este modo, se
reduce el número de solicitudes que la aplicación tiene que procesar.
Asigne una ruta proporcionada por el servidor proxy a una carpeta del código fuente que contenga activos
estáticos. Cada una de las opciones que defina en este espacio de nombres asignará una ruta diferente.
Nombre Valor
Ruta donde el servidor proxy distribuirá los Nombre de la carpeta que contiene los archivos.
archivos.
Ejemplo: staticimages para distribuir archivos
Ejemplo: /images para distribuir archivos en de una carpeta con el nombre staticimages en
subdomain.eleasticbeanstalk.com/ la parte superior del paquete de código fuente.
images.
Ejecute el daemon de AWS X-Ray para transmitir la información de seguimiento de la aplicación Tomcat 8
integrada con X-Ray (p. 240).
314
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
Ejecute el daemon de AWS X-Ray para transmitir la información de seguimiento de la aplicación .NET
integrada con X-Ray (p. 240).
315
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
GzipCompression
Especifica si se ha habilitado la compresión false true
gzip. Si se establece ProxyServer en none, se
deshabilita la compresión gzip. false
Puede utilizar el siguiente espacio de nombres para configurar el servidor proxy de forma que proporcione
archivos estáticos. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada,
proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación. De este modo, se
reduce el número de solicitudes que la aplicación tiene que procesar.
Asigne una ruta proporcionada por el servidor proxy a una carpeta del código fuente que contenga activos
estáticos. Cada una de las opciones que defina en este espacio de nombres asignará una ruta diferente.
Note
Nombre Valor
Ruta donde el servidor proxy distribuirá los Nombre de la carpeta que contiene los archivos.
archivos.
Ejemplo: staticimages para distribuir archivos
Ejemplo: /images para distribuir archivos en de una carpeta con el nombre staticimages en
subdomain.eleasticbeanstalk.com/ la parte superior del paquete de código fuente.
images.
Ejecute el daemon de AWS X-Ray para transmitir la información de seguimiento de la aplicación Node.js
integrada con X-Ray (p. 240).
316
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
zlib.output_compression
Especifica si PHP debe utilizar o no la Off On
compresión en la salida.
Off
true
false
false
Note
Para obtener más información acerca de la plataforma PHP, consulte Uso de la plataforma PHP
de AWS Elastic Beanstalk (p. 856).
317
AWS Elastic Beanstalk Developer Guide
Opciones específicas de la plataforma
DJANGO_SETTINGS_MODULE
Especifica qué archivo de configuración se n/a n/a
va a utilizar.
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
Puede utilizar el siguiente espacio de nombres para configurar el servidor proxy de forma que proporcione
archivos estáticos. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada,
proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación. De este modo, se
reduce el número de solicitudes que la aplicación tiene que procesar.
Asigne una ruta proporcionada por el servidor proxy a una carpeta del código fuente que contenga activos
estáticos. Cada una de las opciones que defina en este espacio de nombres asignará una ruta diferente.
De forma predeterminada, el servidor proxy en un entorno de Python proporciona los archivos en una
carpeta llamada static situada en la ruta /static.
Nombre Valor
Ruta donde el servidor proxy distribuirá los Nombre de la carpeta que contiene los archivos.
archivos.
Ejemplo: staticimages para distribuir archivos
Ejemplo: /images para distribuir archivos en de una carpeta con el nombre staticimages en
subdomain.eleasticbeanstalk.com/ la parte superior del paquete de código fuente.
images.
Ejecute el daemon de AWS X-Ray para transmitir la información de seguimiento de la aplicación Python
integrada con X-Ray (p. 240).
318
AWS Elastic Beanstalk Developer Guide
Opciones personalizadas
RAILS_SKIP_ASSET_COMPILATION
Especifica si el contenedor debe ejecutar false true
`rake assets:precompile` en nombre
de las aplicaciones de los usuarios o si false
debe omitirse. Del mismo modo, solo puede
utilizarse con aplicaciones de Rails 3.
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
Opciones personalizadas
Utilice el espacio de nombres aws:elasticbeanstalk:customoption para definir opciones y
valores que puedan consultarse en los bloques Resources de otros archivos de configuración. Utilice las
opciones personalizadas para recopilar la configuración especificada por el usuario en un único archivo de
configuración.
Por ejemplo, puede tener un archivo de configuración complejo donde se defina un recurso que el usuario
pueda configurar al lanzar el entorno. Si utiliza Fn::GetOptionSetting para recuperar el valor de una
opción personalizada, puede incluir la definición de esa opción en otro archivo de configuración, donde al
usuario le resultará más fácil encontrarla y modificarla.
Además, como se trata de opciones de configuración, las opciones personalizadas se pueden configurar
en el nivel de la API para anular los valores definidos en un archivo de configuración. Consulte
Precedence (p. 253) para obtener más información.
319
AWS Elastic Beanstalk Developer Guide
.ebextensions
option_settings:
aws:elasticbeanstalk:customoption:
option name: option value
Por ejemplo, el siguiente archivo de configuración crea una opción denominada ELBAlarmEmail y
establece su valor en someone@example.com:
option_settings:
aws:elasticbeanstalk:customoption:
ELBAlarmEmail: someone@example.com
Por otra parte, un archivo de configuración define un tema de SNS que consulta la opción utilizando
Fn::GetOptionSetting para rellenar el valor del atributo Endpoint:
Resources:
MySNSTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: ELBAlarmEmail
DefaultValue: nobody@example.com
Protocol: email
Recomendamos utilizar YAML para los archivos de configuración, ya que es más fácil de leer que JSON.
YAML admite comentarios, comandos multilínea, varias alternativas de uso de comillas, etc. Sin embargo,
puede realizar cualquier cambio de configuración en los archivos de configuración de Elastic Beanstalk
exactamente igual usando YAML o JSON.
Sugerencia
Cuando esté desarrollando o probando nuevos archivos de configuración, lance un entorno limpio
que ejecute la aplicación predeterminada e impleméntelos en este entorno. Si los archivos de
configuración no tienen un formato correcto, se producirán error irrecuperables al lanzar un nuevo
entorno.
320
AWS Elastic Beanstalk Developer Guide
Opciones de configuración
La sección Resources (p. 342) le permite personalizar aún más los recursos del entorno de la aplicación
y definir otros recursos de AWS para obtener otra funcionalidad que la que proporcionan las opciones de
configuración. Puede agregar y configurar los recursos admitidos por AWS CloudFormation, que Elastic
Beanstalk utiliza para crear entornos.
El resto de las secciones de un archivo de configuración (packages, sources, files, users, groups,
commands, container_commands y services) le permiten configurar las instancias EC2 que se lanzan
en el entorno. Cuando se lanza un servidor en el entorno, Elastic Beanstalk ejecuta las operaciones
definidas en estas secciones para preparar el sistema operativo y el sistema de almacenamiento de la
aplicación.
Para ver ejemplos de .ebextensions utilizados, consulte el Elastic Beanstalk Configuration Files Repository.
Requisitos
• Ubicación: coloque todos sus archivos de configuración en una sola carpeta, denominada
.ebextensions, en la raíz de su paquete de código fuente. Los exploradores de archivos pueden
ocultar las carpetas que comienzan con un punto, así que asegúrese de agregar la carpeta al crear el
paquete de código fuente. Consulte Creación del paquete de código fuente de una aplicación (p. 64)
para obtener instrucciones.
• Denominación: los archivos de configuración deben tener la extensión de archivo .config.
• Formato: Los archivos de configuración deben cumplir las especificaciones de formato de YAML o
JSON.
Si utiliza YAML, use siempre espacios para aplicar sangría a las claves en los diferentes niveles de
anidación. Para obtener más información acerca de YAML, consulte YAML Ain't Markup Language
(YAML™) (versión 1.1).
• Unicidad: Use cada clave una sola vez en cada archivo de configuración.
Advertencia
Si utiliza una clave (por ejemplo, option_settings) dos veces en el mismo archivo de
configuración, se descartará una de las secciones. Combine secciones duplicadas en una sola
sección o colóquelas en archivos de configuración distintos.
El proceso de implementación varía ligeramente en función del cliente que se utilice para administrar los
entornos. Consulte las secciones siguientes para obtener más detalles:
Temas
• Opciones de configuración (p. 321)
• Personalización de software en servidores Linux (p. 323)
• Personalización de software en servidores Windows (p. 335)
• Añadir y personalizar recursos del entorno de Elastic Beanstalk (p. 342)
Opciones de configuración
Puede utilizar la clave option_settings para modificar la configuración de Elastic Beanstalk y definir
variables que puedan recuperarse de su aplicación mediante variables de entorno. Algunos espacios
321
AWS Elastic Beanstalk Developer Guide
Opciones de configuración
Sintaxis
La sintaxis estándar para la configuración de opciones es una matriz de objetos, cada uno de los cuales
tiene una clave namespace, option_name y value.
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
option_settings:
- option_name: option name
value: option value
- option_name: option name
value: option value
Elastic Beanstalk admite también una sintaxis abreviada para la configuración de opciones que le permite
especificar las opciones como pares de clave-valor bajo el espacio de nombres:
option_settings:
namespace:
option name: option value
option name: option value
Ejemplos
Los siguientes ejemplos establecen una opción específica de la plataforma Tomcat en el espacio de
nombres aws:elasticbeanstalk:container:tomcat:jvmoptions y una propiedad de entorno
denominada MYPARAMETER. En formato YAML estándar:
Example .ebextensions/options.config
option_settings:
- namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
option_name: Xmx
value: 256m
- option_name: MYPARAMETER
value: parametervalue
En formato abreviado:
322
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Example .ebextensions/options.config
option_settings:
aws:elasticbeanstalk:container:tomcat:jvmoptions:
Xmx: 256m
aws:elasticbeanstalk:application:environment:
MYPARAMETER: parametervalue
En JSON:
Example .ebextensions/options.config
{
"option_settings": [
{
"namespace": "aws:elasticbeanstalk:container:tomcat:jvmoptions",
"option_name": "Xmx",
"value": "256m"
},
{
"option_name": "MYPARAMETER",
"value": "parametervalue"
}
]
}
En esta sección, se describe el tipo de información que se puede incluir en un archivo de configuración
para personalizar el software de las instancias EC2 que ejecutan Linux. Para obtener información general
acerca de cómo personalizar y configurar los entornos de Elastic Beanstalk, consulte Configuración del
entorno de AWS Elastic Beanstalk (p. 174). Para obtener más información sobre la personalización del
software de las instancias EC2 que ejecutan Windows, consulte Personalización de software en servidores
Windows (p. 335).
Los archivos de configuración admiten las siguientes claves que afectan al servidor Linux en el que se
ejecuta la aplicación.
Claves
• Paquetes (p. 324)
• Grupos (p. 325)
• Usuarios (p. 325)
• Orígenes (p. 326)
• Archivos (p. 327)
• Comandos (p. 329)
• Servicios (p. 330)
• Comandos de contenedor (p. 331)
323
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Vigile los eventos (p. 454) de su entorno mientras desarrolle y pruebe archivos de configuración. Elastic
Beanstalk hará caso omiso de un archivo de configuración si este contiene errores de validación, como una
clave no válida, por ejemplo, y no procesará ninguna de las claves contenidas en ese mismo archivo. Si
esto sucede, Elastic Beanstalk agregará un evento de advertencia al registro de eventos.
Paquetes
Puede utilizar la clave packages para descargar e instalar aplicaciones y componentes previamente
empaquetados.
Sintaxis
packages:
name of package manager:
package name: version
...
name of package manager:
package name: version
...
...
Especificación de versiones
Dentro de cada administrador de paquetes, cada paquete se especifica con un nombre de paquete y una
lista de versiones. La versión puede ser una cadena, una lista de versiones o una cadena o lista vacía.
Una cadena o lista vacía indica que se debe usar la versión más reciente. Para el administrador de rpm, la
versión se especifica como una ruta a un archivo en el disco o una URL. No se admiten rutas relativas.
Si especifica una versión de un paquete, Elastic Beanstalk intentará instalar esa versión incluso si ya
hay una versión más reciente del paquete instalada en la instancia. Si ya hay una versión más reciente
instalada, la implementación fallará. Algunos administradores de paquetes admiten varias versiones,
pero puede haber otros que no. Consulte la documentación del administrador de paquetes para obtener
más información. Si no se especifica ninguna versión y ya hay una versión del paquete instalada, Elastic
Beanstalk no instalará una nueva versión, sino que presupondrá que se desea mantener y utilizar la
versión existente.
324
AWS Elastic Beanstalk Developer Guide
Servidor Linux
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rubygems:
chef: '0.10.2'
Grupos
Puede utilizar la clave groups para crear grupos de Linux/UNIX y asignar identificadores de grupo. Para
crear un grupo, añada un nuevo par clave-valor que asigne un nuevo nombre de grupo a un ID de grupo
opcional. La clave "groups" puede contener uno o varios nombres de grupo. En la tabla siguiente, se
muestran las claves disponibles.
Sintaxis
groups:
name of group: {}
name of group:
gid: "group id"
Opciones
gid
Número de ID de grupo.
Si se especifica un ID de grupo y el nombre del grupo ya existe, se producirá un error al crear el grupo.
Si otro grupo tuviera el ID de grupo especificado, el sistema operativo podría rechazar la creación del
grupo.
groups:
groupOne: {}
groupTwo:
gid: "45"
Usuarios
Puede utilizar la clave users para crear usuarios de Linux/UNIX en la instancia EC2.
Sintaxis
users:
325
AWS Elastic Beanstalk Developer Guide
Servidor Linux
name of user:
groups:
- name of group
uid: "id of the user"
homeDir: "user's home directory"
Opciones
uid
ID de usuario. El proceso de creación falla si existe un nombre de usuario con otro ID. Si el ID de
usuario ya estuviera asignado a un usuario existente, el sistema operativo podría rechazar la solicitud
de creación.
groups
Los usuarios se crean como usuarios de un sistema no interactivo con el shell /sbin/nologin. Esto es
así por diseño y no se puede modificar.
users:
myuser:
groups:
- group1
- group2
uid: "50"
homeDir: "/tmp"
Orígenes
Puede utilizar la clave sources para descargar un archivo de almacenamiento de una URL pública y
extraerlo en un directorio de destino de la instancia EC2.
Sintaxis
sources:
target directory: location of archive file
Formatos admitidos
Los formatos admitidos son: tar, tar+gzip, tar+bz2 y zip. Puede hacer referencia a ubicaciones externas,
como Amazon Simple Storage Service (Amazon S3) (por ejemplo, https://s3.amazonaws.com/
mybucket/myobject) siempre que la URL esté accesible públicamente.
sources:
/etc/myapp: https://s3.amazonaws.com/mybucket/myobject
326
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Note
Varias extracciones no deben reutilizar la misma ruta de destino. La extracción de otro origen en
la misma ruta de destino reemplazará en lugar de añadirse al contenido.
Archivos
Puede utilizar la clave files para crear archivos en la instancia EC2. El contenido puede estar insertado
en el archivo de configuración o extraerse de una URL. Los archivos se escriben en el disco en orden
lexicográfico.
Puede utilizar la clave files para descargar archivos privados de Amazon S3 si proporciona un perfil de
instancia para su autorización.
Sintaxis
files:
"target file location on disk":
mode: "six-digit octal value"
owner: name of owning user for file
group: name of owning group for file
source: URL
authentication: authentication name:
Opciones
content
Un valor octal de seis dígitos que representa el modo para este archivo. No es compatible con
sistemas Windows. Utilice los tres primeros dígitos para symlinks y los últimos tres dígitos para
327
AWS Elastic Beanstalk Developer Guide
Servidor Linux
la configuración de permisos. Para crear un symlink, especifique 120xxx, donde xxx define los
permisos del archivo de destino. Para especificar los permisos de un archivo, utilice los tres últimos
dígitos, como 000644.
authentication
Nombre del método de autenticación de AWS CloudFormation que se va a utilizar. Puede agregar
métodos de autenticación a los metadatos del grupo de Auto Scaling con la clave Resources. Consulte
a continuación un ejemplo.
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root
group: root
content: |
this is my
file content
En el ejemplo se utiliza un objeto symlink. Este crea un enlace, /tmp/myfile2.txt, que apunta al
archivo existente /tmp/myfile1.txt.
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/data.json" :
mode: "000755"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/
data.json
328
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Comandos
Puede utilizar la clave commands para ejecutar comandos en la instancia EC2. Los comandos se ejecutan
antes de que se configuren la aplicación y el servidor web y se extraiga el archivo de versión de la
aplicación.
Lo comandos especificados se ejecutan como el usuario root y se procesan en orden alfabético por
nombre. De forma predeterminada, los comandos se ejecutan en el directorio raíz. Para ejecutar comandos
en otro directorio, utilice la opción cwd.
Para solucionar problemas con los comandos, puede encontrar su salida en los registros de
instancia (p. 457).
Sintaxis
commands:
command name:
command: command to run
cwd: working directory
env:
variable name: variable value
test: conditions for command
ignoreErrors: true
Opciones
command
Puede ser una matriz (colección de secuencias de bloques en la sintaxis YAML) o una cadena que
especifique el comando que hay que ejecutar. Notas importantes:
• Si utiliza una cadena, no es preciso que la cadena completa vaya incluida entre comillas. Si aun así
utiliza comillas, deberá utilizar el carácter de escape para las comillas literales del mismo tipo que
aparezcan en la cadena.
• Si utiliza una matriz, no es preciso que utilizar el carácter de escape para los caracteres de espacio
ni incluir los parámetros de comandos entre comillas. Cada elemento de la matriz es un solo
argumento de comando. No utilice una matriz para especificar varios comandos.
commands:
command1:
command: git commit -m "This is a comment."
command2:
command: "git commit -m \"This is a comment.\""
command3:
command: 'git commit -m "This is a comment."'
command4:
command:
- git
- commit
- -m
- This is a comment.
Para especificar varios comandos, use un escalar de bloque literal, tal y como se muestra en el
siguiente ejemplo.
commands:
command block:
command: |
329
AWS Elastic Beanstalk Developer Guide
Servidor Linux
env
(Opcional) Establece las variables de entorno del comando. Esta propiedad sobrescribe, en lugar de
anexar, el entorno existente.
cwd
(Opcional) Comando que debe devolver el valor true (código de salida 0) para que Elastic Beanstalk
pueda procesar el comando (por ejemplo, un script de shell) incluido en la clave command.
ignoreErrors
(Opcional) Valor booleano que determina si otros comandos deben ejecutarse en caso de que se
produzca un error (se devuelva un valor distinto de cero) en el comando incluido en la clave command.
Establezca este valor en true si desea continuar ejecutando comandos aunque se produzca un error.
Establézcalo en false si desea detener la ejecución de comandos en caso de que se produzca un
error. El valor predeterminado es false.
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: "[ -x /usr/bin/python ]"
Servicios
Puede utilizar la clave services para definir qué servicios deben iniciarse o detenerse cuando se lance
la instancia. La clave services también le permite especificar dependencias en orígenes, paquetes y
archivos, de manera que si es necesario reiniciar debido a los archivos que se están instalado, Elastic
Beanstalk se encargará de reiniciar el servicio.
Sintaxis
services:
sysvinit:
name of service:
enabled: "true"
ensureRunning: "true"
files:
- "file name"
sources:
- "directory"
packages:
name of package manager:
"package name[: version]"
commands:
- "name of command"
330
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Opciones
ensureRunning
Establézcalo en true para garantizar que el servicio se ejecuta una vez que finaliza Elastic Beanstalk.
Establézcalo en false para garantizar que el servicio no se ejecuta una vez que finaliza Elastic
Beanstalk.
Omita esta clave para no realizar ningún cambio en el estado del servicio.
enabled
Una lista de archivos. Si Elastic Beanstalk cambia uno directamente a través del bloque de archivos, el
servicio se reinicia.
sources
Una lista de directorios. Si Elastic Beanstalk expande un archivo en uno de estos directorios, el
servicio se reinicia.
packages
Una asignación del administrador de paquetes a una lista de nombres de paquetes. Si Elastic
Beanstalk instala o actualiza uno de estos paquetes, el servicio se reinicia.
commands
Una lista de nombres de comandos. Si Elastic Beanstalk ejecuta el comando especificado, el servicio
se reinicia.
services:
sysvinit:
myservice:
enabled: true
ensureRunning: true
Comandos de contenedor
Puede utilizar la clave container_commands para ejecutar comandos que afecten el código abierto de
la aplicación. Estos comandos se ejecutan una vez configurada la aplicación y el servidor web, y una vez
que se ha extraído el archivo de versiones de la aplicación, pero antes de que se implemente la versión de
la aplicación. Los comandos que no son de contenedor y otras operaciones de personalización se realizan
antes de que se extraiga el código fuente de la aplicación.
Lo comandos especificados se ejecutan como el usuario root y se procesan en orden alfabético por
nombre. Los comandos de contenedor se ejecutan desde el directorio de ensayo, del que se extrae el
código fuente antes de implementarse en el servidor de la aplicación. Todos los cambios que realice
en el código fuente en el directorio de ensayo con un comando de contenedor se incluirán cuando se
implemente el código fuente en su ubicación final.
331
AWS Elastic Beanstalk Developer Guide
Servidor Linux
Para solucionar problemas con los comandos de contenedor, puede encontrar su salida en los registros de
instancia (p. 457).
Puede utilizar leader_only para ejecutar el comando en una sola instancia o configurar un objeto
test para que el comando se ejecute exclusivamente cuando un comando "test" se evalúe como
true. Los comandos de contenedor "leader-only" solo se ejecutan durante la creación del entorno y
las implementaciones, mientras que otros comandos y operaciones de personalización del servidor se
ejecutan cada vez que se aprovisiona o se actualiza una instancia. Los comandos de contenedor "leader-
only" no se ejecutan debido a los cambios en la configuración de lanzamiento, como un cambio en el ID de
AMI o tipo de instancia.
Sintaxis
container_commands:
name of container_command:
command: "command to run"
leader_only: true
name of container_command:
command: "command to run"
Opciones
command
(Opcional) Establezca las variables de entorno antes de ejecutar el comando para invalidar cualquier
valor existente.
cwd
(Opcional) Ejecute solo el comando en una sola instancia seleccionada por Elastic Beanstalk. Los
comandos de contenedor "leader-only" se ejecutan antes que otros comandos de contenedor. Un
comando puede ser "leader-only" o tener un objeto test, pero no ambas cosas (leader_only tiene
prioridad).
test
(Opcional) Ejecute un comando de prueba que deba devolver true para poder ejecutar el comando
de contenedor. Un comando puede ser "leader-only" o tener un objeto test, pero no ambas cosas
(leader_only tiene prioridad).
ignoreErrors
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
332
AWS Elastic Beanstalk Developer Guide
Servidor Linux
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"
Los scripts de monitorización de Amazon CloudWatch para Linux están disponibles para ilustrar cómo se
generan y se utilizan métricas personalizadas en Amazon CloudWatch. Los scripts contienen un ejemplo
totalmente funcional que informa sobre métricas de memoria, intercambio y utilización del espacio en disco
de una instancia Linux de Amazon Elastic Compute Cloud (Amazon EC2). Para obtener más información
sobre los scripts de monitorización de Amazon CloudWatch, consulte Amazon CloudWatch Monitoring
Scripts for Linux en la Guía para desarrolladores de Amazon CloudWatch.
Note
Los informes de estado avanzados de Elastic Beanstalk (p. 416) tienen compatibilidad nativa
para publicar una gran variedad de métricas de instancia y entorno en CloudWatch. Consulte
Publicación de métricas personalizadas de un entorno en Amazon CloudWatch (p. 439) para
obtener más información.
Temas
• Archivo de configuración .ebextensions (p. 333)
• Permisos (p. 334)
• Consulta de métricas en la consola de CloudWatch (p. 335)
Para utilizar este ejemplo, guárdelo en un archivo llamado cloudwatch.config que esté situado
en un directorio denominado .ebextensions en el nivel superior del directorio del proyecto. A
continuación, implemente la aplicación a través de la Consola de administración de AWS (incluya el
directorio .ebextensions en el paquete de código fuente (p. 64)) o la CLI de EB (p. 578).
Para obtener más información sobre los archivos de configuración, consulte Personalización avanzada de
entornos con archivos de configuración (.ebextensions) (p. 320).
.ebextensions/cloudwatch.config
packages:
yum:
perl-DateTime: []
perl-Sys-Syslog: []
perl-LWP-Protocol-https: []
perl-Switch: []
perl-URI: []
perl-Bundle-LWP: []
333
AWS Elastic Beanstalk Developer Guide
Servidor Linux
sources:
/opt/cloudwatch: https://aws-cloudwatch.s3.amazonaws.com/downloads/
CloudWatchMonitoringScripts-1.2.1.zip
container_commands:
01-setupcron:
command: |
echo '*/5 * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
`{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics", "DefaultValue" : "--mem-
util --disk-space-util --disk-path=/" }}` >> /var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
02-changeperm:
command: chmod 644 /etc/cron.d/cwpump
03-changeperm:
command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
option_settings:
"aws:autoscaling:launchconfiguration" :
IamInstanceProfile : "aws-elasticbeanstalk-ec2-role"
"aws:elasticbeanstalk:customoption" :
CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util --disk-space-
used --disk-space-avail --disk-path=/ --auto-scaling"
Tras comprobar que el archivo de configuración funciona, puede conservar el uso de disco cambiando el
direccionamiento del comando del archivo log (>> /var/log/cwpump.log 2>&1) a /dev/null (> /
dev/null).
Permisos
Para publicar las métricas personalizadas de Amazon CloudWatch, las instancias del entorno deben tener
permiso para utilizar CloudWatch. Puede conceder permisos a las instancias del entorno agregándolas
al perfil de instancia (p. 23) del entorno. Los permisos pueden agregarse al perfil de instancia antes o
después de implementar la aplicación.
Nombre de la política
El nombre de la política.
Policy Document
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:PutMetricData",
334
AWS Elastic Beanstalk Developer Guide
Windows Server
"ec2:DescribeTags"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
Para obtener más información acerca de la administración de políticas, consulte Uso de las políticas
en la Guía del usuario de IAM.
335
AWS Elastic Beanstalk Developer Guide
Windows Server
ejecutar. Para obtener información general acerca de cómo personalizar y configurar los entornos de
Elastic Beanstalk, consulte Configuración del entorno de AWS Elastic Beanstalk (p. 174).
Note
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para
la sangría, no tabuladores.
Los archivos de configuración admiten las siguientes claves que afectan al servidor Windows en el que se
ejecuta la aplicación.
Claves
• Paquetes (p. 336)
• Orígenes (p. 337)
• Archivos (p. 337)
• Comandos (p. 339)
• Servicios (p. 340)
• Comandos de contenedor (p. 341)
Las versiones más antiguas (sin control de versiones) de la plataforma .NET no procesan los
archivos de configuración en el orden correcto. Encontrará más información en Migración entre las
versiones principales de la plataforma Windows Server de Elastic Beanstalk (p. 763).
Vigile los eventos (p. 454) de su entorno mientras desarrolle y pruebe archivos de configuración. Elastic
Beanstalk hará caso omiso de un archivo de configuración si este contiene errores de validación, como una
clave no válida, por ejemplo, y no procesará ninguna de las claves contenidas en ese mismo archivo. Si
esto sucede, Elastic Beanstalk agregará un evento de advertencia al registro de eventos.
Paquetes
Utilice la clave packages para descargar e instalar aplicaciones y componentes previamente
empaquetados.
En los entornos Windows, Elastic Beanstalk admite la descarga y la instalación de paquetes MSI. (Los
entornos Linux admiten administradores de paquetes adicionales. Para obtener detalles, consulte
Paquetes (p. 324) en la página Personalización del software en servidores Linux).
Puede hacer referencia a cualquier ubicación externa, como un objeto de Amazon Simple Storage Service
(Amazon S3), siempre que la URL esté accesible públicamente.
Sintaxis
Elija un nombre como el nombre del paquete y una URL a una ubicación de archivo MSI como el valor.
Puede especificar varios paquetes en la clave msi:.
packages:
msi:
package name: package url
...
336
AWS Elastic Beanstalk Developer Guide
Windows Server
Ejemplos
El siguiente ejemplo especifica una URL para descargar mysql de https://dev.mysql.com/.
packages:
msi:
mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi
En el siguiente ejemplo se especifica un objeto de Amazon S3 como la ubicación del archivo MSI.
packages:
msi:
mymsi: https://s3.amazonaws.com/mybucket/myobject.msi
Orígenes
Utilice la clave sources para descargar un archivo de almacenamiento de una URL pública y extraerlo en
un directorio de destino de la instancia EC2.
Sintaxis
sources:
target directory: location of archive file
Formatos admitidos
En entornos Windows, Elastic Beanstalk admite el formato .zip. (Los entornos Linux admiten formatos
adicionales. Para obtener detalles, consulte Orígenes (p. 326) en la página Personalización del software
en servidores Linux).
Puede hacer referencia a cualquier ubicación externa, como un objeto de Amazon Simple Storage Service
(Amazon S3), siempre que la URL esté accesible públicamente.
Ejemplo
En el siguiente ejemplo, se descarga un archivo .zip público de un bucket de Amazon S3 y se
descomprime en c:/myproject/myapp.
sources:
"c:/myproject/myapp": https://s3.amazonaws.com/mybucket/myobject.zip
Archivos
Utilice la clave files para crear archivos en la instancia EC2. El contenido puede estar insertado en
el archivo de configuración o extraerse de una URL. Los archivos se escriben en el disco en orden
lexicográfico. Para descargar archivos privados de Amazon S3 proporcione un perfil de instancia para su
autorización.
Sintaxis
files:
"target file location on disk":
source: URL
authentication: authentication name:
337
AWS Elastic Beanstalk Developer Guide
Windows Server
content: |
this is my content
encoding: encoding format
Opciones
content
(Opcional) Cadena A.
source
(Opcional) La dirección URL desde la que se carga el archivo. Esta opción no se puede especificar
con la clave de contenido.
encoding
(Opcional) El formato de la codificación. Esta opción solo se utiliza para un valor de clave de contenido
proporcionado. El valor predeterminado es plain.
(Opcional) el nombre del método de autenticación de AWS CloudFormation que se va a utilizar. Puede
agregar métodos de autenticación a los metadatos del grupo de Auto Scaling con la clave Resources.
Ejemplos
En el siguiente ejemplo se muestran las dos formas de proporcionar el contenido del archivo: desde una
URL o en línea en el archivo de configuración.
files:
"c:\\targetdirectory\\targetfile.txt":
source: http://foo.bar/myfile
"c:/targetdirectory/targetfile.txt":
content: |
# this is my file
# with content
Note
Si utiliza una barra diagonal inversa (\) en la ruta del archivo, debe anteponer otra barra diagonal
inversa (el carácter de escape), tal y como se muestra en el ejemplo anterior.
files:
"c:\\targetdirectory\\targetfile.zip":
source: https://s3.amazonaws.com/elasticbeanstalk-us-east-2-123456789012/prefix/
myfile.zip
authentication: S3Auth
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-east-2-123456789012"]
338
AWS Elastic Beanstalk Developer Guide
Windows Server
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
Comandos
Utilice la clave commands para ejecutar comandos en la instancia EC2. Los comandos se procesan en
orden alfabético por nombre, y se ejecutan antes de que se configure la aplicación y el servidor web y se
extraiga el archivo de versión de la aplicación.
Para solucionar problemas con los comandos, puede encontrar su salida en los registros de
instancia (p. 457).
Sintaxis
commands:
command name:
command: command to run
Opciones
command
Una matriz o bien una cadena que especifica el comando que se va a ejecutar. Si utiliza una matriz, no
es necesario que encierre caracteres de espacio o incluya parámetros de comandos entre comillas.
cwd
(Opcional) Establece las variables de entorno del comando. Esta propiedad sobrescribe, en lugar de
anexar, el entorno existente.
ignoreErrors
(Opcional) Valor booleano que determina si otros comandos deben ejecutarse en caso de que se
produzca un error (se devuelva un valor distinto de cero) en el comando incluido en la clave command.
Establezca este valor en true si desea continuar ejecutando comandos aunque se produzca un error.
Establézcalo en false si desea detener la ejecución de comandos en caso de que se produzca un
error. El valor predeterminado es false.
test
(Opcional) Un comando que debe devolver el valor true (código de salida 0) para que Elastic
Beanstalk pueda procesar el comando incluido en la clave command.
waitAfterCompletion
(Opcional) Segundos que se deben esperar a que se complete el comando antes de ejecutar el
siguiente comando. Si el sistema debe reiniciarse después de que se complete el comando, se
reinicia después del número especificado de segundos. Si el sistema se reinicia como resultado de
un comando, Elastic Beanstalk restablecerá el sistema al punto después del comando del archivo de
configuración. El valor predeterminado es 60 segundos. También puede especificar forever, pero el
sistema debe reiniciarse para poder ejecutar otro comando.
339
AWS Elastic Beanstalk Developer Guide
Windows Server
Ejemplo
El siguiente ejemplo guarda el resultado del comando set en el archivo especificado. Si hay un comando
posterior, Elastic Beanstalk ejecuta ese comando inmediatamente después de que se complete este
comando. Si este comando requiere un reinicio, Elastic Beanstalk reinicia la instancia inmediatamente
después de que se complete el comando.
commands:
test:
command: set > c:\\myapp\\set.txt
waitAfterCompletion: 0
Servicios
Utilice la clave services para definir qué servicios deben iniciarse o detenerse cuando se lance la
instancia. La clave services también le permite especificar dependencias en orígenes, paquetes y
archivos, de manera que si es necesario reiniciar debido a los archivos que se están instalado, Elastic
Beanstalk se encargará de reiniciar el servicio.
Sintaxis
services:
windows:
name of service:
files:
- "file name"
sources:
- "directory"
packages:
name of package manager:
"package name[: version]"
commands:
- "name of command"
Opciones
ensureRunning
(Opcional) Establézcalo en true para garantizar que el servicio se ejecuta una vez que finaliza Elastic
Beanstalk.
Establézcalo en false para garantizar que el servicio no se ejecuta una vez que finaliza Elastic
Beanstalk.
Omita esta clave para no realizar ningún cambio en el estado del servicio.
enabled
Una lista de archivos. Si Elastic Beanstalk cambia uno directamente a través del bloque de archivos, el
servicio se reinicia.
340
AWS Elastic Beanstalk Developer Guide
Windows Server
sources
Una lista de directorios. Si Elastic Beanstalk expande un archivo en uno de estos directorios, el
servicio se reinicia.
packages
Una asignación del administrador de paquetes a una lista de nombres de paquetes. Si Elastic
Beanstalk instala o actualiza uno de estos paquetes, el servicio se reinicia.
commands
Una lista de nombres de comandos. Si Elastic Beanstalk ejecuta el comando especificado, el servicio
se reinicia.
Ejemplo
services:
windows:
myservice:
enabled: true
ensureRunning: true
Comandos de contenedor
Utilice la clave container_commands para ejecutar comandos que afecten al código fuente de la
aplicación. Estos comandos se ejecutan una vez configurada la aplicación y el servidor web, y una vez que
se ha extraído el archivo de versiones de la aplicación, pero antes de que se implemente la versión de la
aplicación. Los comandos que no son de contenedor y otras operaciones de personalización se realizan
antes de que se extraiga el código fuente de la aplicación.
Los comandos de contenedor se ejecutan desde el directorio de ensayo, del que se extrae el código fuente
antes de implementarse en el servidor de la aplicación. Todos los cambios que realice en el código fuente
en el directorio de ensayo con un comando de contenedor se incluirán cuando se implemente el código
fuente en su ubicación final.
Para solucionar problemas con los comandos de contenedor, puede encontrar su salida en los registros de
instancia (p. 457).
Utilice la opción leader_only para ejecutar el comando en una sola instancia o configure un objeto
test para que el comando se ejecute exclusivamente cuando un comando "test" se evalúe como
true. Los comandos de contenedor "leader-only" solo se ejecutan durante la creación del entorno y
las implementaciones, mientras que otros comandos y operaciones de personalización del servidor se
ejecutan cada vez que se aprovisiona o se actualiza una instancia. Los comandos de contenedor "leader-
only" no se ejecutan debido a los cambios en la configuración de lanzamiento, como un cambio en el ID de
AMI o tipo de instancia.
Sintaxis
container_commands:
name of container_command:
command: command to run
Opciones
command
341
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
env
(Opcional) Establezca las variables de entorno antes de ejecutar el comando para invalidar cualquier
valor existente.
cwd
(Opcional) Ejecute solo el comando en una sola instancia seleccionada por Elastic Beanstalk. Los
comandos de contenedor "leader-only" se ejecutan antes que otros comandos de contenedor. Un
comando puede ser "leader-only" o tener un objeto test, pero no ambas cosas (leader_only tiene
prioridad).
test
(Opcional) Ejecute un comando de prueba que deba devolver true para poder ejecutar el comando
de contenedor. Un comando puede ser "leader-only" o tener un objeto test, pero no ambas cosas
(leader_only tiene prioridad).
ignoreErrors
(Opcional) Segundos que se deben esperar a que se complete el comando antes de ejecutar el
siguiente comando. Si el sistema debe reiniciarse después de que se complete el comando, se
reinicia después del número especificado de segundos. Si el sistema se reinicia como resultado de
un comando, Elastic Beanstalk restablecerá el sistema al punto después del comando del archivo de
configuración. El valor predeterminado es 60 segundos. También puede especificar forever, pero el
sistema debe reiniciarse para poder ejecutar otro comando.
Ejemplo
El siguiente ejemplo guarda el resultado del comando set en el archivo especificado. Elastic Beanstalk
ejecuta el comando en una sola instancia y reinicia la instancia inmediatamente después de que se
complete el comando.
container_commands:
foo:
command: set > c:\\myapp\\set.txt
leader_only: true
waitAfterCompletion: 0
Puede utilizar la clave Resources en un archivo de configuración (p. 320) para crear y personalizar
recursos de AWS en su entorno. Los recursos definidos en los archivos de configuración se añaden a la
342
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
plantilla de AWS CloudFormation utilizada para lanzar el entorno. Se admiten todos los tipos de recursos
de AWS CloudFormation.
Por ejemplo, el siguiente archivo de configuración añade un enlace de ciclo de vida de Auto Scaling al
grupo de Auto Scaling creado por Elastic Beanstalk:
~/my-app/.ebextensions/as-hook.config
Resources:
hookrole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument: {
"Version" : "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"Principal": {
"Service": [ "autoscaling.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
} ]
}
Policies: [ {
"PolicyName": "SNS",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Resource": "*",
"Action": [
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sns:Publish"
]
}
]
}
} ]
hooktopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: "my-email@example.com"
Protocol: email
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
Este ejemplo define tres recursos, hookrole, hooktopic y lifecyclehook. Los dos primeros recursos
son un rol de IAM, que concede a Amazon EC2 Auto Scaling permiso para publicar mensajes en Amazon
SNS, y un tema de SNS, que transmite los mensajes del grupo de Auto Scaling a una dirección de correo
electrónico. Elastic Beanstalk crea estos recursos con los tipos y propiedades especificados.
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
343
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
La definición del enlace de ciclo de vida usa dos funciones (p. 347) para rellenar los valores de las
propiedades del enlace. { "Ref" : "AWSEBAutoScalingGroup" } recupera el nombre del grupo
de Auto Scaling creado por Elastic Beanstalk para el entorno. AWSEBAutoScalingGroup es uno de los
nombres de recurso (p. 344) estándar proporcionados por Elastic Beanstalk.
Para AWS::IAM::Role, Ref solo devuelve el nombre del rol, no el ARN. Para obtener el ARN del
parámetro RoleARN, se utiliza otra función intrínseca, Fn::GetAtt, en su lugar, que puede obtener
cualquier atributo de un recurso. RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] } obtiene
el atributo Arn del recurso hookrole.
{ "Ref" : "hooktopic" } obtiene el ARN del tema de Amazon SNS creado anteriormente en el
archivo de configuración. El valor devuelto por Ref varía en función del recurso y puede encontrarse en el
tema del tipo de recurso AWS::SNS::Topic de la Guía del usuario de AWS CloudFormation.
En un entorno con balanceo de carga, puede obtener acceso a recursos adicionales relacionados con el
balanceador de carga. Los Classic Load Balancers tienen un recurso para el balanceador de carga y otro
para el grupo de seguridad asociado. Los balanceadores de carga de aplicaciones y de red disponen de
recursos adicionales para el agente de escucha, la regla para el agente de escucha y el grupo de destino
predeterminados.
344
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Beanstalk crea para el balanceador de carga. En una VPC predeterminada o instancia de EC2 Classic,
Elastic Load Balancing asigna un grupo de seguridad predeterminado al balanceador de carga.
• AWSEBV2LoadBalancerListener (AWS::ElasticLoadBalancingV2::Listener): un agente de escucha
que permite que el balanceador de carga compruebe las solicitudes de conexión y las reenvía a uno o
varios grupos de destino.
• AWSEBV2LoadBalancerListenerRule (AWS::ElasticLoadBalancingV2::ListenerRule): define las
solicitudes sobre las que un agente de escucha de Elastic Load Balancing actúa y la acción que realiza.
• AWSEBV2LoadBalancerTargetGroup (AWS::ElasticLoadBalancingV2::TargetGroup): un grupo de
destino de Elastic Load Balancing que enruta las solicitudes a uno o más objetivos registrados como, por
ejemplo, instancias Amazon EC2.
Los entornos de trabajo tienen recursos para la cola de SQS que almacena en búfer solicitudes entrantes y
una tabla de Amazon DynamoDB que las instancias utilizan para elegir un líder.
Entornos de trabajo
• AWSEBWorkerQueue (AWS::SQS::Queue): la cola de Amazon SQS desde la que el demonio obtiene las
solicitudes que deben procesarse.
• AWSEBWorkerDeadLetterQueue (AWS::SQS::Queue): la cola de Amazon SQS que almacena los
mensajes que no se pueden entregar o que el demonio no pudo procesar correctamente.
• AWSEBWorkerCronLeaderRegistry (AWS::DynamoDB::Table): la tabla de Amazon DynamoDB que
es el registro interno usado por el demonio para las tareas periódicas.
Claves
• Parámetros (p. 345)
• Salidas (p. 346)
• Mapeos (p. 346)
Parámetros
Los parámetros son una alternativa a las opciones personalizadas (p. 319) de Elastic Beanstalk. Puede
utilizarlos para definir los valores que se aplicarán en otras partes de sus archivos de configuración.
Al igual que las opciones personalizadas, puede utilizar parámetros para reunir los valores que puede
configurar el usuario en un único lugar. A diferencia de las opciones personalizadas, no puede utilizar la
API de Elastic Beanstalk para establecer los valores de los parámetros, y el número de parámetros que
puede definir en una plantilla se ve limitado por AWS CloudFormation.
También puede utilizar parámetros para que los archivos de configuración actúen como plantillas de AWS
CloudFormation. Si utiliza parámetros en lugar de opciones personalizadas, puede usar el archivo de
configuración para crear el mismo recurso en AWS CloudFormation que su propia pila. Por ejemplo, podría
disponer de un archivo de configuración que agregue un sistema de archivos de Amazon EFS a su entorno
para pruebas y, a continuación, utilizar el mismo archivo para crear un sistema de archivos independiente
con fines de producción, que no esté vinculado al ciclo de vida de dicho entorno.
El siguiente ejemplo muestra el uso de parámetros para reunir los valores configurables por el usuario en
la parte superior de un archivo de configuración.
345
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Parameters:
bucket:
Type: String
Description: "Name of the Amazon S3 bucket in which to store load balancer logs"
Default: "my-bucket"
bucketprefix:
Type: String
Description: "Optional prefix. Can't start or end with a /, or contain the word
AWSLogs"
Default: ""
Salidas
Puede utilizar un bloque de Outputs para exportar información sobre los recursos creados a AWS
CloudFormation. A continuación, puede utilizar la función Fn::ImportValue para extraer el valor a una
plantilla de AWS CloudFormation fuera de Elastic Beanstalk.
El siguiente ejemplo crea un tema de Amazon SNS y exporta su ARN a AWS CloudFormation con el
nombre NotificationTopicArn.
Example sns-topic.config
Resources:
NotificationTopic:
Type: AWS::SNS::Topic
Outputs:
NotificationTopicArn:
Description: Notification topic ARN
Value: { "Ref" : "NotificationTopic" }
Export:
Name: NotificationTopicArn
En un archivo de configuración para otro entorno, o una plantilla de AWS CloudFormation fuera de Elastic
Beanstalk, puede utilizar la función Fn::ImportValue a fin de obtener el ARN exportado. Este ejemplo
asigna el valor exportado a una propiedad del entorno llamada TOPIC_ARN.
Example env.config
option_settings:
aws:elasticbeanstalk:application:environment:
TOPIC_ARN: '`{ "Fn::ImportValue" : "NotificationTopicArn" }`'
Mapeos
Puede utilizar una asignación para almacenar pares de clave-valor organizados por espacio de nombres.
Una asignación puede ayudarle a organizar los valores que utiliza en todas las configuraciones o cambiar
el valor de un parámetro que depende de otro valor. Por ejemplo, la siguiente configuración establece el
valor de un parámetro de ID de cuenta en función de la región actual.
Mappings:
Region2ELBAccountId:
us-east-1:
AccountId: "111122223333"
us-west-2:
AccountId: "444455556666"
346
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
us-west-1:
AccountId: "123456789012"
eu-west-1:
AccountId: "777788889999"
...
Principal:
AWS:
? "Fn::FindInMap"
:
- Region2ELBAccountId
-
Ref: "AWS::Region"
- AccountId
Funciones
Puede utilizar funciones en los archivos de configuración para rellenar valores de propiedades de recursos
con información de otros recursos o de otros valores de opciones de configuración de Elastic Beanstalk.
Elastic Beanstalk admite funciones de AWS CloudFormation (Ref, Fn::GetAtt, Fn::Join) y una
función específica de Elastic Beanstalk, Fn::GetOptionSetting.
Funciones
• Ref. (p. 347)
• Fn::GetAtt (p. 347)
• Fn::Join (p. 348)
• Fn::GetOptionSetting (p. 348)
Ref.
Utilice Ref para recuperar la representación predeterminada en forma de cadena de un recurso de AWS.
El valor devuelto por Refdepende del tipo de recurso y a veces depende también de otros factores.
Por ejemplo, un grupo de seguridad (AWS::EC2::SecurityGroup) devuelve el nombre o ID del grupo de
seguridad, en función de si el grupo de seguridad se encuentra en una Amazon Virtual Private Cloud
(Amazon VPC) predeterminada, una instancia EC2 Classic o una VPC personalizada.
Note
Para obtener información sobre cada tipo de recurso, incluido el valor o los valores devueltos
de Ref, consulte Referencia de tipos de recursos de AWS en la Guía del usuario de AWS
CloudFormation.
Resources:
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
También puede utilizar Ref para recuperar el valor de un parámetro de AWS CloudFormation definido en
otro lugar en el mismo archivo o en un archivo de configuración diferente.
Fn::GetAtt
Use Fn::GetAtt para recuperar el valor de un atributo de un recurso de AWS.
347
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Resources:
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
Fn::Join
Utilice Fn::Join para combinar cadenas con un delimitador. Las cadenas pueden ser de codificación fija
o se puede usar el resultado de Fn::GetAtt o Ref.
Fn::GetOptionSetting
Utilice Fn::GetOptionSetting para recuperar el valor de una opción de configuración (p. 252)
aplicada al entorno.
"Fn::GetOptionSetting":
Namespace: "namespace"
OptionName: "option name"
DefaultValue: "default value"
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
348
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Plataformas EC2-Classic
En este ejemplo, se agrega un clúster de Amazon ElastiCache a un entorno con instancias lanzadas en
la plataforma EC2-Classic. Todas las propiedades que se muestran en este ejemplo son las propiedades
mínimas necesarias que deben establecerse en cada tipo de recurso. Puede descargar el ejemplo en
ElastiCache Example.
Note
En este ejemplo se crean recursos de AWS por los que se pueden realizar cargos. Para
obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/.
Algunos servicios forman parte de la capa de uso gratuito de AWS. Si es un cliente nuevo,
puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://
aws.amazon.com/free/.
1. Cree un directorio .ebextensions en el directorio de nivel superior del paquete de código fuente.
2. Cree dos archivos de configuración con la extensión .config y colóquelos en el directorio
.ebextensions. En un archivo de configuración se definen los recursos y en el otro, las opciones.
3. Implemente la aplicación en Elastic Beanstalk.
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la
sangría, no tabuladores.
Cree un archivo de configuración (por ejemplo, elasticache.config) que defina los recursos. En este
ejemplo, vamos a crear el clúster de ElastiCache especificando el nombre del recurso (MyElastiCache),
declarando el tipo y configurando las propiedades del clúster. En el ejemplo, se hace referencia al
recurso de grupo de seguridad de ElastiCache que se crea y se define en este archivo de configuración.
A continuación, crearemos un grupo de seguridad de ElastiCache. Definiremos el nombre de este
recurso, declararemos su tipo y agregaremos una descripción del grupo de seguridad. Por último,
definiremos las reglas de entrada del grupo de seguridad de ElastiCache para permitir el acceso
únicamente al tráfico procedente de las instancias del grupo de ElastiCache (MyCacheSecurityGroup)
y del grupo de seguridad de Elastic Beanstalk (AWSEBSecurityGroup). El nombre del parámetro,
AWSEBSecurityGroup, es un nombre de recurso fijo proporcionado por Elastic Beanstalk. Debe agregar
AWSEBSecurityGroup a las reglas de entrada del grupo de seguridad de ElastiCache para que la
aplicación de Elastic Beanstalk pueda conectarse a las instancias del clúster de ElastiCache.
#This sample requires you to create a separate configuration file that defines the custom
option settings for CacheCluster properties.
Resources:
MyElastiCache:
349
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Type: AWS::ElastiCache::CacheCluster
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : CacheNodeType
DefaultValue: cache.m1.small
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
Engine:
Fn::GetOptionSetting:
OptionName : Engine
DefaultValue: memcached
CacheSecurityGroupNames:
- Ref: MyCacheSecurityGroup
MyCacheSecurityGroup:
Type: AWS::ElastiCache::SecurityGroup
Properties:
Description: "Lock cache down to webserver access only"
MyCacheSecurityGroupIngress:
Type: AWS::ElastiCache::SecurityGroupIngress
Properties:
CacheSecurityGroupName:
Ref: MyCacheSecurityGroup
EC2SecurityGroupName:
Ref: AWSEBSecurityGroup
Para obtener más información sobre los recursos que se utilizan en este archivo de configuración de
ejemplo, consulte las siguientes referencias:
• AWS::ElastiCache::CacheCluster
• AWS::ElastiCache::SecurityGroup
• AWS::ElastiCache:SecurityGroupIngress
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.m1.small
NumCacheNodes : 1
Engine : memcached
Estas líneas le indican a Elastic Beanstalk que obtenga los valores de las propiedades CacheNodeType,
NumCacheNodes y Engine a partir de los valores CacheNodeType, NumCacheNodes y Engine de un
archivo de configuración (options.config en nuestro ejemplo) que contiene una sección option_settings
con una sección aws:elasticbeanstalk:customoption que, a su vez, contiene el par nombre-valor con
el valor real que se va a usar. En el ejemplo anterior, esto significa que se utilizará cache.m1.small, 1
y memcached para los valores. Para obtener más información acerca de Fn::GetOptionSetting,
consulte Funciones (p. 347).
EC2-VPC (predeterminada)
En este ejemplo, se agrega un clúster de Amazon ElastiCache a un entorno con instancias lanzadas en
la plataforma EC2-VPC. En concreto, la información de esta sección se aplica a los casos en los que
las instancias EC2 se lanzan en la VPC predeterminada. Todas las propiedades de este ejemplo son
las propiedades mínimas necesarias que deben establecerse en cada tipo de recurso. Para obtener
más información acerca de las VPC predeterminadas, consulte VPC predeterminada y subredes
predeterminadas.
350
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Note
En este ejemplo se crean recursos de AWS por los que se pueden realizar cargos. Para
obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/.
Algunos servicios forman parte de la capa de uso gratuito de AWS. Si es un cliente nuevo,
puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://
aws.amazon.com/free/.
1. Cree un directorio .ebextensions en el directorio de nivel superior del paquete de código fuente.
2. Cree dos archivos de configuración con la extensión .config y colóquelos en el directorio
.ebextensions. En un archivo de configuración se definen los recursos y en el otro, las opciones.
3. Implemente la aplicación en Elastic Beanstalk.
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la
sangría, no tabuladores.
A continuación, vamos a crear un grupo de seguridad de EC2. Vamos a definir el nombre de este recurso,
a declarar el tipo, a agregar una descripción y a definir las reglas de entrada del grupo de seguridad para
permitir únicamente el acceso del tráfico procedente de las instancias del grupo de seguridad de Elastic
Beanstalk (AWSEBSecurityGroup). (El nombre del parámetro, AWSEBSecurityGroup, es un nombre
de recurso fijo proporcionado por Elastic Beanstalk. Debe agregar AWSEBSecurityGroup a las reglas
de entrada del grupo de seguridad de ElastiCache para que la aplicación de Elastic Beanstalk pueda
conectarse a las instancias del clúster de ElastiCache).
Las reglas de entrada del grupo de seguridad de EC2 también definen el protocolo IP y los números
de puerto en los que los nodos de caché pueden aceptar conexiones. En Redis, el número de puerto
predeterminado es 6379.
#This sample requires you to create a separate configuration file that defines the custom
option settings for CacheCluster properties.
Resources:
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupName:
Ref: "AWSEBSecurityGroup"
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
351
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t2.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
DefaultValue : "redis"
VpcSecurityGroupIds:
-
Fn::GetAtt:
- MyCacheSecurityGroup
- GroupId
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
Para obtener más información sobre los recursos que se utilizan en este archivo de configuración de
ejemplo, consulte las siguientes referencias:
• AWS::ElastiCache::CacheCluster
• AWS::EC2::SecurityGroup
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.t2.micro
NumCacheNodes : 1
Engine : redis
CachePort : 6379
Estas líneas le indican a Elastic Beanstalk que obtenga los valores de las propiedades CacheNodeType,
NumCacheNodes, Engine y CachePort a partir de los valores CacheNodeType, NumCacheNodes,
Engine y CachePort del archivo de configuración (options.config en nuestro ejemplo). Este archivo
contiene una sección aws:elasticbeanstalk:customoption (bajo option_settings) que, a su
vez, contiene pares nombre-valor con los valores reales que se van a usar. En el ejemplo anterior, se
utilizaría cache.t2.micro, 1, redis y 6379 para los valores. Para obtener más información acerca de
Fn::GetOptionSetting, consulte Funciones (p. 347).
EC2-VPC (personalizada)
Si crea una VPC personalizada en la plataforma EC2-VPC y la define como la VPC en la que EC2 lanza
las instancias, el proceso para agregar un clúster de Amazon ElastiCache al entorno será diferente que si
se utiliza la VPC predeterminada. La principal diferencia es que debe crear un grupo de subredes para el
clúster de ElastiCache. Todas las propiedades de este ejemplo son las propiedades mínimas necesarias
que deben establecerse en cada tipo de recurso.
Note
En este ejemplo se crean recursos de AWS por los que se pueden realizar cargos. Para
obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/.
352
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Algunos servicios forman parte de la capa de uso gratuito de AWS. Si es un cliente nuevo,
puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://
aws.amazon.com/free/.
1. Cree un directorio .ebextensions en el directorio de nivel superior del paquete de código fuente.
2. Cree dos archivos de configuración con la extensión .config y colóquelos en el directorio
.ebextensions. En un archivo de configuración se definen los recursos y en el otro, las opciones.
3. Implemente la aplicación en Elastic Beanstalk.
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la
sangría, no tabuladores.
A continuación, vamos a crear un grupo de seguridad de EC2. Vamos a definir el nombre de este recurso,
a declarar el tipo, a agregar una descripción, a especificar el ID de la VPC y a definir las reglas de entrada
del grupo de seguridad para permitir únicamente el acceso del tráfico procedente de las instancias
del grupo de seguridad de Elastic Beanstalk (AWSEBSecurityGroup). (El nombre del parámetro,
AWSEBSecurityGroup, es un nombre de recurso fijo proporcionado por Elastic Beanstalk. Debe agregar
AWSEBSecurityGroup a las reglas de entrada del grupo de seguridad de ElastiCache para que la
aplicación de Elastic Beanstalk pueda conectarse a las instancias del clúster de ElastiCache).
Las reglas de entrada del grupo de seguridad de EC2 también definen el protocolo IP y los números
de puerto en los que los nodos de caché pueden aceptar conexiones. En Redis, el número de puerto
predeterminado es 6379. Por último, en este ejemplo se crea un grupo de subredes para el clúster de
ElastiCache. Definiremos el nombre de este recurso, declararemos su tipo y agregaremos una descripción
y un ID de la subred en el grupo de subredes.
Note
Le recomendamos que utilice subredes privadas con el clúster de ElastiCache. Para obtener más
información sobre las VPC con subredes privadas, consulte https://docs.aws.amazon.com/vpc/
latest/userguide/VPC_Scenario2.html.
#This sample requires you to create a separate configuration file that defines the custom
option settings for CacheCluster properties.
Resources:
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t2.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
353
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
DefaultValue : "redis"
CacheSubnetGroupName:
Ref: "MyCacheSubnets"
VpcSecurityGroupIds:
- Ref: "MyCacheSecurityGroup"
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
VpcId:
Fn::GetOptionSetting:
OptionName : "VpcId"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupId:
Ref: "AWSEBSecurityGroup"
MyCacheSubnets:
Type: "AWS::ElastiCache::SubnetGroup"
Properties:
Description: "Subnets for ElastiCache"
SubnetIds:
Fn::GetOptionSetting:
OptionName : "CacheSubnets"
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
Para obtener más información sobre los recursos que se utilizan en este archivo de configuración de
ejemplo, consulte las siguientes referencias:
• AWS::ElastiCache::CacheCluster
• AWS::EC2::SecurityGroup
• AWS::ElastiCache::SubnetGroup
En el siguiente ejemplo, sustituya los valores CacheSubnets y VpcId por sus propias subredes y
VPC.
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.t2.micro
NumCacheNodes : 1
Engine : redis
CachePort : 6379
CacheSubnets:
- subnet-1a1a1a1a
- subnet-2b2b2b2b
- subnet-3c3c3c3c
354
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
VpcId: vpc-4d4d4d4d
Estas líneas le indican a Elastic Beanstalk que obtenga los valores de las propiedades CacheNodeType,
NumCacheNodes, Engine, CachePort, CacheSubnets y VpcId a partir de los valores
CacheNodeType, NumCacheNodes, Engine, CachePort, CacheSubnets y VpcId del archivo
de configuración (options.config en nuestro ejemplo). Este archivo contiene una sección
aws:elasticbeanstalk:customoption (bajo option_settings) que, a su vez, contiene pares
nombre-valor con valores de ejemplo. En el ejemplo anterior, se utilizaría cache.t2.micro, 1, redis,
6379, subnet-1a1a1a1a, subnet-2b2b2b2b, subnet-3c3c3c3c y vpc-4d4d4d4d para los valores.
Para obtener más información acerca de Fn::GetOptionSetting, consulte Funciones (p. 347).
En este ejemplo se crean recursos de AWS por los que se pueden realizar cargos. Para
obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/.
Algunos servicios forman parte de la capa de uso gratuito de AWS. Si es un cliente nuevo,
puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://
aws.amazon.com/free/.
1. Cree un directorio .ebextensions en el directorio de nivel superior del paquete de código fuente.
2. Cree dos archivos de configuración con la extensión .config y colóquelos en el directorio
.ebextensions. En un archivo de configuración se definen los recursos y en el otro, las opciones.
3. Implemente la aplicación en Elastic Beanstalk.
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en
el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la
sangría, no tabuladores.
Cree un archivo de configuración (por ejemplo, sqs.config) que defina los recursos. En este ejemplo,
crearemos una cola de SQS y definiremos la propiedad VisbilityTimeout del recurso MySQSQueue.
A continuación, crearemos un Topic de SNS y especificaremos que se envíe un correo electrónico a
someone@example.com cuando se active la alarma. Por último, crearemos una alarma de CloudWatch si
la cola tiene más de 10 mensajes. En la propiedad Dimensions, especificamos el nombre de la dimensión
y el valor que representa la medición de la dimensión. Utilizamos Fn::GetAtt para devolver el valor de
QueueName de MySQSQueue.
#This sample requires you to create a separate configuration file to define the custom
options for the SNS topic and SQS queue.
Resources:
MySQSQueue:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout:
Fn::GetOptionSetting:
OptionName: VisibilityTimeout
DefaultValue: 30
AlarmTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
355
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
Fn::GetOptionSetting:
OptionName: AlarmEmail
DefaultValue: "nobody@amazon.com"
Protocol: email
QueueDepthAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
Namespace: "AWS/SQS"
MetricName: ApproximateNumberOfMessagesVisible
Dimensions:
- Name: QueueName
Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
Statistic: Sum
Period: 300
EvaluationPeriods: 1
Threshold: 10
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: AlarmTopic
InsufficientDataActions:
- Ref: AlarmTopic
Outputs :
QueueURL:
Description : "URL of newly created SQS Queue"
Value : { Ref : "MySQSQueue" }
QueueARN :
Description : "ARN of newly created SQS Queue"
Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
QueueName :
Description : "Name newly created SQS Queue"
Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
Para obtener más información sobre los recursos que se utilizan en este archivo de configuración de
ejemplo, consulte las siguientes referencias:
• AWS::SQS::Queue
• AWS::SNS::Topic
• AWS::CloudWatch::Alarm
option_settings:
"aws:elasticbeanstalk:customoption":
VisibilityTimeout : 30
AlarmEmail : "nobody@example.com"
Estas líneas indican a Elastic Beanstalk que obtenga los valores de las propiedades VisibilityTimeout
y Subscription Endpoint de los valores VisibilityTimeout y Subscription Endpoint de un archivo de
configuración (options.config en nuestro ejemplo) que contiene una sección option_settings con una
sección aws:elasticbeanstalk:customoption que contiene el par de nombre-valor con el valor real que se va
a usar. En el ejemplo anterior, este valor es 30 y se usaría "nobody@amazon.com" para los valores. Para
obtener más información acerca de Fn::GetOptionSetting, consulte Funciones (p. 347).
356
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
perfil de instancia de IAM, que se agrega a las instancias del entorno y que se utiliza para obtener acceso
a la tabla de DynamoDB.
Puede descargar el ejemplo que utilizaremos en este paso en DynamoDB Session Support Ejemplo. El
ejemplo contiene los siguientes archivos:
index.php
<?php
use Aws\DynamoDb\DynamoDbClient;
// Grab the session table name and region from the configuration file
list($tableName, $region) = file(__DIR__ . '/../sessiontable');
$tableName = rtrim($tableName);
$region = rtrim($region);
// Create a DynamoDB client and register the table as the session handler
$dynamodb = DynamoDbClient::factory(array('region' => $region));
$handler = $dynamodb->registerSessionHandler(array('table_name' => $tableName, 'hash_key'
=> 'username'));
// Grab the instance ID so we can display the EC2 instance that services the request
$instanceId = file_get_contents("http://169.254.169.254/latest/meta-data/instance-id");
?>
<h1>Elastic Beanstalk PHP Sessions Sample</h1>
<p>This sample application shows the integration of the Elastic Beanstalk PHP
container and the session support for DynamoDB from the AWS SDK for PHP 2.
Using DynamoDB session support, the application can be scaled out across
multiple web servers. For more details, see the
<a href="https://aws.amazon.com/php/">PHP Developer Center</a>.</p>
if (isset($_POST['continue'])) {
session_start();
$_SESSION['visits'] = $_SESSION['visits'] + 1;
echo 'Welcome back ' . $_SESSION['username'] . '<br/>';
echo 'This is visit number ' . $_SESSION['visits'] . '<br/>';
session_write_close();
echo '<br/>';
echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} elseif (isset($_POST['killsession'])) {
session_start();
echo 'Goodbye ' . $_SESSION['username'] . '<br/>';
session_destroy();
echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
echo '<br/>';
357
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
.ebextensions/dynamodb.config
Resources:
SessionTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
HashKeyElement:
AttributeName:
Fn::GetOptionSetting:
OptionName : SessionHashKeyName
DefaultValue: "username"
AttributeType:
Fn::GetOptionSetting:
OptionName : SessionHashKeyType
DefaultValue: "S"
ProvisionedThroughput:
ReadCapacityUnits:
Fn::GetOptionSetting:
OptionName : SessionReadCapacityUnits
DefaultValue: 1
WriteCapacityUnits:
Fn::GetOptionSetting:
OptionName : SessionWriteCapacityUnits
DefaultValue: 1
SessionWriteCapacityUnitsLimit:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " write
capacity limit on the session table." ]]}
Namespace: "AWS/DynamoDB"
MetricName: ConsumedWriteCapacityUnits
Dimensions:
- Name: TableName
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 12
Threshold:
Fn::GetOptionSetting:
OptionName : SessionWriteCapacityUnitsAlarmThreshold
DefaultValue: 240
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
358
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionReadCapacityUnitsLimit:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " read
capacity limit on the session table." ]]}
Namespace: "AWS/DynamoDB"
MetricName: ConsumedReadCapacityUnits
Dimensions:
- Name: TableName
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 12
Threshold:
Fn::GetOptionSetting:
OptionName : SessionReadCapacityUnitsAlarmThreshold
DefaultValue: 240
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionThrottledRequestsAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ":
requests are being throttled." ]]}
Namespace: AWS/DynamoDB
MetricName: ThrottledRequests
Dimensions:
- Name: TableName
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 1
Threshold:
Fn::GetOptionSetting:
OptionName: SessionThrottledRequestsThreshold
DefaultValue: 1
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionAlarmTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: SessionAlarmEmail
DefaultValue: "nobody@amazon.com"
Protocol: email
files:
"/var/app/sessiontable":
mode: "000444"
content: |
`{"Ref" : "SessionTable"}`
`{"Ref" : "AWS::Region"}`
359
AWS Elastic Beanstalk Developer Guide
Recursos personalizados
"/var/app/composer.json":
mode: "000744"
content:
{
"require": {
"aws/aws-sdk-php": "*"
}
}
container_commands:
"1-install-composer":
command: "cd /var/app; curl -s http://getcomposer.org/installer | php"
"2-install-dependencies":
command: "cd /var/app; php composer.phar install"
"3-cleanup-composer":
command: "rm -Rf /var/app/composer.*"
Después de crear y configurar los recursos de AWS de nuestro entorno, tendremos que personalizar
las instancias EC2. Utilizaremos la clave files para transferir los datos de la tabla de DynamoDB a las
instancias EC2 del entorno, además de agregar una marca de "obligatorio" en el archivo composer.json
de AWS SDK para PHP 2. Por último, ejecutaremos comandos de contenedor para instalar Composer, las
dependencias requeridas y eliminar después el instalador.
.ebextensions/options.config
option_settings:
"aws:elasticbeanstalk:customoption":
SessionHashKeyName : username
SessionHashKeyType : S
SessionReadCapacityUnits : 1
SessionReadCapacityUnitsAlarmThreshold : 240
SessionWriteCapacityUnits : 1
SessionWriteCapacityUnitsAlarmThreshold : 240
SessionThrottledRequestsThreshold : 1
SessionAlarmEmail : me@example.com
Sustituya el valor de SessionAlarmEmail por la dirección de email a la que quiere enviar las notificaciones
de alarma. El archivo options.config contiene los valores que se utilizan en algunas de las variables
definidas en dynamodb.config. Por ejemplo, dynamodb.config contiene las siguientes líneas:
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: SessionAlarmEmail
DefaultValue: "nobody@amazon.com"
Estas líneas indican a Elastic Beanstalk que obtenga el valor de la propiedad Endpoint del valor
SessionAlarmEmail de un archivo de configuración (options.config en nuestro ejemplo) que contiene
una sección option_settings con una sección aws:elasticbeanstalk:customoption que, a su vez, tiene
un par nombre-valor con el valor real que se va a usar. En el ejemplo anterior, esto significa que a
SessionAlarmEmail se le asigna el valor nobody@amazon.com.
Para obtener más información sobre los recursos de CloudFormation utilizados en este ejemplo, consulte
las siguientes referencias:
360
AWS Elastic Beanstalk Developer Guide
Configuraciones guardadas
• AWS::DynamoDB::Table
• AWS::CloudWatch::Alarm
• AWS::SNS::Topic
Puede aplicar etiquetas a una configuración guardada cuando la cree y editar etiquetas de configuraciones
guardadas existentes. Para obtener más información, consulte Etiquetado de configuraciones
guardadas (p. 365).
Note
La etiquetas aplicadas a una configuración guardada no están relacionadas con las etiquetas
especificadas en una configuración guardada con la clave Tags:. Estas últimas se aplican a un
entorno cuando se establece la configuración guardada en el entorno.
Cree una configuración guardada del estado actual de su entorno en la consola de administración de
Elastic Beanstalk.
361
AWS Elastic Beanstalk Developer Guide
Configuraciones guardadas
5. Si lo desea, proporcione una breve descripción y añada las claves y los valores de etiqueta.
6. Seleccione Save (Guardar).
La configuración guardada incluye todas las opciones que ha aplicado al entorno con la consola o con
cualquier otro cliente que utilice la API de Elastic Beanstalk. Más adelante, puede aplicar la configuración
guardada a su entorno para restablecerlo a su estado anterior o aplicarla a un nuevo entorno durante la
creación del entorno (p. 90).
Puede descargar una configuración con el comando the section called “eb config” (p. 619) de la CLI de
EB, tal y como se muestra en el siguiente ejemplo. NAME es el nombre de su configuración guardada.
362
AWS Elastic Beanstalk Developer Guide
Configuraciones guardadas
Para aplicar una configuración guardada durante la creación del entorno (Consola de
administración de AWS)
Puede ver el contenido de una configuración guardada abriéndola en un editor de texto. La siguiente
configuración de ejemplo muestra la configuración de un entorno de servidor web lanzado con la consola
de administración de Elastic Beanstalk.
EnvironmentConfigurationMetadata:
Description: Saved configuration from a multicontainer Docker environment created with
the Elastic Beanstalk Management Console
DateCreated: '1520633151000'
DateModified: '1520633151000'
Platform:
PlatformArn: arn:aws:elasticbeanstalk:us-east-2::platform/Java 8 running on 64bit Amazon
Linux/2.5.0
OptionSettings:
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:elasticbeanstalk:sns:topics:
Notification Endpoint: me@example.com
aws:elb:policies:
ConnectionDrainingEnabled: true
ConnectionDrainingTimeout: '20'
aws:elb:loadbalancer:
CrossZone: true
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:application:
Application Healthcheck URL: /
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
InstanceType: t2.micro
EC2KeyName: workstation-uswest2
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Health
363
AWS Elastic Beanstalk Developer Guide
Configuraciones guardadas
RollingUpdateEnabled: true
EnvironmentTier:
Type: Standard
Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
Tags:
Cost Center: WebApp Dev
AWSConfigurationTemplateVersion: 1.1.0.0
• Platform: el nombre de recurso de Amazon (ARN) de la versión de la plataforma del entorno. Puede
especificar la plataforma por ARN o el nombre de una pila de soluciones.
Platform:
PlatformArn: arn:aws:elasticbeanstalk:us-east-2::platform/Java 8 running on 64bit
Amazon Linux/2.5.0
• SolutionStack: el nombre completo de la pila de soluciones (p. 32) usada para crear el entorno.
• OptionSettings: los valores de las opciones de configuración (p. 252) que se van a aplicar al entorno.
Por ejemplo, la siguiente entrada establece el tipo de instancia en t2.micro.
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: t2.micro
• Tags: etiquetas (hasta un máximo de 47) que se aplican a los recursos creados en el entorno.
Tags:
Cost Center: WebApp Dev
• EnvironmentTier: el tipo de entorno que se va a crear. Para un entorno de servidor web, puede excluir
esta sección (servidor web es el valor predeterminado). Para un entorno de trabajo, use lo siguiente.
EnvironmentTier:
Name: Worker
Type: SQS/HTTP
• CName: el CNAME del entorno. Incluya un carácter + al final del nombre para habilitar grupos.
CName: front-A08G28LG+
• EnvironmentName: el nombre del entorno que se va a crear. Incluya un carácter + al final del nombre
para habilitar grupos.
EnvironmentName: front+
364
AWS Elastic Beanstalk Developer Guide
Etiquetado de configuraciones guardadas
Con los grupos habilitados, debe especificar un nombre de grupo al crear los entornos. Elastic Beanstalk
añade el nombre de grupo al nombre del entorno con un guion. Por ejemplo, con el nombre de entorno
front+ y el nombre de grupo dev, Elastic Beanstalk creará el entorno con el nombre front-dev.
• EnvironmentLinks: un mapa de variables de entorno y nombres de dependencias del entorno. El
siguiente ejemplo incluye en el entorno worker+ una dependencia e indica a Elastic Beanstalk que
guarde la información del enlace en una variable denominada WORKERQUEUE.
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
El valor de la variable de enlace varía según el tipo de entorno vinculado. Para un entorno de servidor
web, el enlace es el CNAME del entorno. Para un entorno de trabajo, el enlace es el nombre de la cola
de Amazon Simple Queue Service (Amazon SQS) del entorno.
Las claves CName, EnvironmentName y EnvironmentLinks se pueden usar para crear grupos de
entornos (p. 128) y enlaces a otros entornos (p. 172). Estas características se admiten actualmente cuando
se utiliza la CLI de EB, la AWS CLI o un SDK. Cuando se utilizan estas características, puede incluir la
configuración guardada en el código fuente como un manifiesto del entorno (p. 369) en lugar de hacer
referencia a una configuración guardada almacenada en Amazon S3. Consulte los temas correspondientes
para obtener más información.
Consulte los siguientes temas para conocer otros métodos de creación y aplicación de configuraciones
guardadas:
Puede especificar etiquetas cuando cree una configuración guardada. En una configuración guardada
existente, puede añadir o eliminar etiquetas, y actualizar los valores de etiquetas existentes. Puede añadir
hasta 50 etiquetas a cada configuración guardada.
365
AWS Elastic Beanstalk Developer Guide
Etiquetado de configuraciones guardadas
Si utiliza la CLI de EB para guardar una configuración, use la opción --tags con eb config (p. 619) para
añadir etiquetas.
Con la AWS CLI u otros clientes basados en la API, añada etiquetas mediante el parámetro --tags en el
comando create-configuration-template.
366
AWS Elastic Beanstalk Developer Guide
Etiquetado de configuraciones guardadas
Para administrar las etiquetas de la configuración guardada con la Consola de Elastic Beanstalk,
realice el siguiente procedimiento:
El cuadro de diálogo Manage Tags (Administrar etiquetas) mostrará la lista de etiquetas aplicadas
actualmente a la versión de la aplicación.
• Para añadir una etiqueta, escríbala en las casillas vacías de la parte inferior de la lista.
367
AWS Elastic Beanstalk Developer Guide
Etiquetado de configuraciones guardadas
• Para actualizar la clave o el valor de una etiqueta, edite la casilla correspondiente en la fila de la
etiqueta.
• Para eliminar una etiqueta, elija junto a la casilla de valor de la etiqueta.
7. Seleccione Apply (Aplicar).
Si utiliza la CLI de EB para actualizar su configuración guardada, utilice eb tags (p. 658) para añadir,
actualizar, eliminar o enumerar etiquetas.
Por ejemplo, el siguiente comando muestra las etiquetas en una configuración guardada.
Para obtener una lista de las opciones y más ejemplos, consulte eb tags (p. 658).
Con la AWS CLI u otros clientes basados en API, utilice el comando list-tags-for-resource para enumerar
las etiquetas de una configuración guardada.
Especifique las etiquetas que desea añadir y las que desea actualizar en el parámetro --tags-to-add
de update-tags-for-resource. Se añade una etiqueta no existente y se actualiza el valor de una etiqueta
existente.
Note
Para utilizar algunas de las CLI de EB y comandos de la AWS CLI con una configuración
guardada de Elastic Beanstalk, necesita el ARN de la configuración guardada. Para construir el
ARN, en primer lugar, utilice el siguiente comando para recuperar el nombre de la configuración
guardada.
368
AWS Elastic Beanstalk Developer Guide
env.yaml
Este formato de archivo incluye compatibilidad con los grupos de entornos. Para utilizar grupos,
especifique el nombre del entorno en el archivo de manifiesto con un signo + al final. Cuando cree o
actualice el entorno, especifique el nombre de grupo con --group-name (CLI de AWS) o --env-
group-suffix (CLI de EB). Para obtener más información acerca de los grupos, consulte Creación y
actualización de grupos de entornos de AWS Elastic Beanstalk (p. 128).
El siguiente manifiesto de ejemplo define un entorno de servidor web con un enlace a un componente
del entorno de trabajo del que depende. El manifiesto utiliza grupos para permitir la creación de varios
entornos con el mismo paquete de código fuente:
~/myapp/frontend/env.yaml
AWSConfigurationTemplateVersion: 1.1.0.0
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.6 running Multi-container Docker 1.7.1
(Generic)
OptionSettings:
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:elasticbeanstalk:sns:topics:
Notification Endpoint: me@example.com
aws:elb:policies:
ConnectionDrainingEnabled: true
ConnectionDrainingTimeout: '20'
aws:elb:loadbalancer:
CrossZone: true
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:application:
Application Healthcheck URL: /
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
InstanceType: t2.micro
EC2KeyName: workstation-uswest2
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Health
RollingUpdateEnabled: true
Tags:
Cost Center: WebApp Dev
CName: front-A08G28LG+
EnvironmentName: front+
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
Para obtener más información sobre el formato de la configuración guardada y las claves admitidas,
consulte Uso de configuraciones guardadas de Elastic Beanstalk (p. 361).
369
AWS Elastic Beanstalk Developer Guide
Imagen personalizada
El uso de archivos de configuración (p. 320) es ideal para configurar y personalizar su entorno de forma
rápida y coherente. La aplicación de configuraciones, sin embargo, puede tardar mucho tiempo durante
la creación del entorno y las actualizaciones. Si realiza muchas tareas de configuración del servidor con
los archivos de configuración, puede reducir este tiempo creando una AMI personalizada que ya tenga el
software y la configuración que necesita.
Una AMI personalizada también le permite realizar cambios en los componentes de bajo nivel, como
el kernel de Linux, que son difíciles de implementar o que tardan mucho tiempo en aplicarse mediante
archivos de configuración. Para crear una AMI personalizada, lance una AMI de plataforma de Elastic
Beanstalk en Amazon EC2, personalice el software y la configuración según sus necesidades y, a
continuación, detenga la instancia y guarde una AMI.
1. En una ventana del sistema, ejecute un comando como el siguiente. Especifique la región de AWS
donde desee utilizar su AMI personalizada y sustituya el ARN de la plataforma y el número de versión
por la plataforma de Elastic Beanstalk en la que se basa su aplicación.
No cree una AMI desde una instancia que se haya lanzado en un entorno de Elastic Beanstalk.
Elastic Beanstalk realiza cambios en las instancias durante el aprovisionamiento que pueden
370
AWS Elastic Beanstalk Developer Guide
Creación de una AMI de personalizada
provocar problemas en la AMI guardada. Al guardar una imagen de una instancia en un entorno
de Elastic Beanstalk, también se incluye como parte fija de la imagen la versión de la aplicación
que se implementó en la instancia.
También es posible crear una AMI personalizada desde una AMI de la comunidad que no haya sido
publicada por Elastic Beanstalk. Puede utilizar la última AMI de Amazon Linux como punto de partida.
Cuando se lanza un entorno con una AMI de Linux que no administra Elastic Beanstalk, Elastic Beanstalk
intenta instalar el software de la plataforma (idioma, plataforma, servidor proxy, etc.) y los componentes
adicionales para admitir características como los informes de estado mejorados (p. 416).
Note
Las plataformas de Elastic Beanstalk basadas en Windows Server no son compatibles con las
AMI que no son administradas por Elastic Beanstalk.
Aunque Elastic Beanstalk puede utilizar una AMI no administrada por Elastic Beanstalk, el aumento del
tiempo de aprovisionamiento resultante de la instalación de los componentes que faltan por parte de
Elastic Beanstalk puede reducir o eliminar los beneficios de la creación de una AMI personalizada. Otras
distribuciones de Linux podrían funcionar realizando algunas soluciones de problemas, pero no están
admitidas oficialmente. Si la aplicación necesita una distribución de Linux específica, una alternativa
consiste en crear una imagen de Docker y ejecutarla en la plataforma Single Container Docker o en la
(p. 669)plataforma Multicontainer Docker (p. 677) de Elastic Beanstalk.
También puede buscar en la lista otra AMI de la comunidad que se adapte a sus necesidades.
Note
Le recomendamos que elija una AMI que utilice virtualización HVM. Estas AMI muestran
Virtualization type: hvm en su descripción.
Para obtener más información sobre los tipos de virtualización de instancias, consulte Tipos
de virtualización de AMI de Linux en la Guía del usuario de Amazon EC2 para instancias de
Linux.
5. Elija Select para seleccionar la AMI.
6. Seleccione un tipo de instancia y, a continuación, elija Next: Configure Instance Details.
7. (Plataformas Linux) Expanda la sección Advanced Details y pegue el texto siguiente en el campo User
Data.
#cloud-config
repo_releasever: repository version number
repo_upgrade: none
371
AWS Elastic Beanstalk Developer Guide
Limpieza de una AMI personalizada
El número de versión del repositorio es la versión de año y mes en el nombre de la AMI. Por ejemplo,
las AMI basadas en la versión de marzo de 2015 de Amazon Linux tienen el número de versión de
repositorio 2015.03. Para una imagen de Elastic Beanstalk, este número coincide con la fecha
mostrada en el nombre de la pila de soluciones de la versión de la plataforma (p. 32).
Note
Estos ajustes configuran la característica lock-on-launch, que hace que la AMI use una
versión del repositorio fija específica cuando se lanza y desactiva la instalación automática de
las actualizaciones de seguridad. Ambos son necesarios para utilizar una AMI personalizada
con Elastic Beanstalk.
8. Avance por el asistente hasta lanzar la instancia EC2. Cuando se le solicite, seleccione un par de
claves a las que tenga acceso para poder conectarse a la instancia para los pasos siguientes.
9. Conéctese a la instancia con SSH o RDP.
10. Realice las personalizaciones que desee.
11. (Plataformas Windows) Ejecute el servicio de EC2Config Sysprep. Para obtener más información
acerca de EC2Config, consulte Configuración de una instancia de Windows con el servicio EC2Config.
Asegúrese de que Sysprep está configurado para generar una contraseña aleatoria que pueda
recuperarse desde la Consola de administración de AWS.
12. En la consola de Amazon EC2, detenga la instancia EC2. A continuación, en el menú Instance Actions
(Acciones de instancia), elija Create Image (EBS AMI) (Crear imagen [AMI de EBS]).
13. Para evitar incurrir en cargos adicionales de AWS, termine la instancia EC2.
Cuando crea un nuevo entorno con la AMI personalizada, debe utilizar la misma versión de la plataforma
que utilizó como punto de partida para crear la AMI. Si posteriormente aplica una actualización de la
plataforma (p. 149) a un entorno utilizando una AMI personalizada, Elastic Beanstalk intenta aplicar la
biblioteca y las actualizaciones de la configuración durante el proceso de arranque.
372
AWS Elastic Beanstalk Developer Guide
Static Files
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente el
archivo en lugar de direccionar la solicitud la aplicación.
Comience la ruta con una barra inclinada (/). Especifique un nombre de directorio en la raíz del código
fuente de la aplicación que no comience por una barra inclinada.
Cuando agrega un mapeo, aparece una fila adicional en el caso de que desee agregar otra. Para
eliminar un mapeo, haga clic en el icono Remove (Quitar).
Si no ve la sección Static Files (Archivos estáticos), debe añadir al menos un mapeo mediante un
archivo de configuración (p. 320). El espacio de nombres de la opción específica que se va a utilizar
depende de la plataforma del entorno. Para obtener más información, consulte una de las páginas
siguientes:
373
AWS Elastic Beanstalk Developer Guide
HTTPS
La forma más sencilla de utilizar HTTPS con un entorno de Elastic Beanstalk consiste en asignar un
certificado de servidor al balanceador de carga de su entorno (p. 378). Cuando configure su balanceador
de carga para que termine las conexiones HTTPS, la conexión entre el cliente y el balanceador de carga
estará protegida. Las conexiones de back-end entre el balanceador de carga y las instancias EC2 utilizan
HTTP, por lo que las instancias no requieren configuración adicional.
Note
Con AWS Certificate Manager (ACM), puede crear un certificado de confianza para los
nombres de dominio de forma gratuita. Los certificados de ACM solo se pueden utilizar con los
balanceadores de carga de AWS y las distribuciones de Amazon CloudFront, y ACM únicamente
está disponible en determinadas regiones.
Para utilizar un certificado de ACM con Elastic Beanstalk, consulte Configuración del balanceador
de carga del entorno de Elastic Beanstalk para terminar conexiones HTTPS (p. 378).
Si ejecuta su aplicación en un entorno de una sola instancia o necesita proteger toda la trayectoria de
conexión con las instancias EC2 detrás del balanceador de carga, puede configurar el servidor proxy
que se ejecuta en la instancia para que termine las conexiones HTTPS (p. 381). La configuración de
las instancias para terminar conexiones HTTPS requiere el uso de archivos de configuración (p. 320)
para modificar el software que se ejecuta en las instancias y para modificar los grupos de seguridad que
permiten las conexiones seguras.
Para las conexiones HTTPS de punto a punto en un entorno con balanceo de carga, puede combinar la
terminación de las instancias y del balanceador de carga (p. 402) para cifrar ambas conexiones. De
forma predeterminada, si configura el balanceador de carga para que reenvíe el tráfico mediante HTTPS,
este confiará en cualquier certificado que las instancias del back-end le presenten. Para disfrutar de la
máxima seguridad, puede asociar políticas al balanceador de carga que le impidan conectarse a instancias
que no presenten un certificado público en el que confíe.
Note
También puede configurar el balanceador de carga para que transmita el tráfico HTTPS sin
descifrarlo (p. 405). El inconveniente de este método es que el balanceador de carga no puede
ver las solicitudes y, por lo tanto, no puede optimizar el enrutamiento ni registrar métricas de
respuesta.
Para el desarrollo y las pruebas, puede crear y firmar un certificado (p. 375) usted mismo con
herramientas de código abierto. Los certificados autofirmados son gratuitos y fáciles de crear, pero no se
pueden usar para el descifrado front-end en sitios públicos. Si intenta usar un certificado autofirmado para
una conexión HTTPS con un cliente, el navegador del usuario muestra un mensaje de error que indica
que el sitio web no es seguro. No obstante, puede utilizar un certificado autofirmado para proteger las
conexiones del backend sin problema.
374
AWS Elastic Beanstalk Developer Guide
Crear un certificado
cargar un certificado de terceros o autofirmado y la clave privada (p. 377) en AWS Identity and
Access Management (IAM) mediante la interfaz de línea de comandos (CLI) de AWS. Los certificados
almacenados en IAM se pueden usar con balanceadores de carga y distribuciones de CloudFront.
Note
Temas
• Crear y firmar un certificado X509 (p. 375)
• Carga de un certificado en IAM (p. 377)
• Configuración del balanceador de carga del entorno de Elastic Beanstalk para terminar conexiones
HTTPS (p. 378)
• Configuración de la aplicación para terminar conexiones HTTPS en la instancia (p. 381)
• Configuración del cifrado integral en un entorno de Elastic Beanstalk con balanceo de carga (p. 402)
• Configuración del balanceador de carga del entorno para el paso a través de TCP (p. 405)
• Almacenamiento seguro de claves privadas en Amazon S3 (p. 406)
• Configuración del redireccionamiento de HTTP a HTTPS (p. 407)
Solo necesita crear un certificado localmente si desea utilizar HTTPS en un entorno de una sola
instancia (p. 381) o volver a cifrar en el back-end (p. 402) con un certificado autofirmado.
Si dispone de un nombre de dominio, puede crear un certificado en AWS y utilizarlo con un
entorno con balanceo de carga de forma gratuita mediante AWS Certificate Manager (ACM).
Consulte Solicitar un certificado en la Guía del usuario de AWS Certificate Manager para obtener
instrucciones.
Ejecute openssl version en la línea de comandos para saber si ya tiene instalado OpenSSL. Si no lo
tiene, puede crear e instalar el código fuente mediante las instrucciones del repositorio de GitHub público
o utilizar su administrador de paquetes favorito. OpenSSL se instala también en imágenes Linux de Elastic
Beanstalk, por lo que es una buena alternativa para conectarse a una instancia EC2 en un entorno en
ejecución a través del comando eb ssh de la CLI de EB (p. 578):
~/eb$ eb ssh
[ec2-user@ip-255-55-55-255 ~]$ openssl version
OpenSSL 1.0.1k-fips 8 Jan 2015
Necesita crear una clave privada RSA para crear la solicitud de firma del certificado (CSR). Para crear su
clave privada, utilice el comando openssl genrsa:
375
AWS Elastic Beanstalk Developer Guide
Crear un certificado
e is 65537 (0x10001)
privatekey.pem
El nombre del archivo en el que desea guardar la clave privada. Normalmente, el comando openssl
genrsa muestra el contenido de la clave privada en la pantalla, pero este comando envía el resultado
a un archivo. Elija un nombre de archivo y almacene el archivo en un lugar seguro para que pueda
recuperarlo más adelante. Si pierde su clave privada, no podrá utilizar su certificado.
Una CSR es un archivo que se envía a una entidad de certificación (CA) para solicitar un certificado digital
de servidor. Para crear un CSR, utilice el comando openssl req:
Introduzca la información solicitada y pulse Intro. En la siguiente tabla se describen y muestran ejemplos
para cada campo:
Country Name La abreviatura ISO de dos letras del país. US = Estados Unidos
Puede enviar la solicitud de firma a un tercero para que la firme o firmarla usted mismo para las tareas de
desarrollo y pruebas. Los certificados autofirmados se pueden utilizar también para la conexión HTTPS del
back-end entre un balanceador de carga e instancias EC2.
Para firmar el certificado, use el comando openssl x509. El siguiente ejemplo utiliza la clave privada del
paso anterior (privatekey.pem) y la solicitud de firma (csr.pem) para crear un certificado público
denominado server.crt válido durante 365 días:
$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.crt
376
AWS Elastic Beanstalk Developer Guide
Carga de un certificado
Signature ok
subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/
CN=www.example.com/emailAddress=someone@example.com
Getting Private key
Mantenga la clave privada y el certificado público para usarlos más adelante. Puede desechar la solicitud
de firma. Almacene siempre la clave privada en un lugar seguro (p. 406) y evite añadirla a su código
fuente.
Para utilizar el certificado con la plataforma Windows Server, debe convertirlo a un formato PFX. Utilice
el siguiente comando para crear un certificado PFX a partir de los archivos de clave privada y certificado
público:
Ahora que ya tiene un certificado, puede cargarlo en IAM (p. 377) para su uso con un balanceador de
carga o configurar las instancias de su entorno para terminar HTTPS (p. 381).
Puede utilizar la interfaz de línea de comandos de AWS (p. 576) (CLI de AWS) para cargar el certificado.
El comando siguiente carga un certificado autofirmado llamado https-cert.crt con una clave privada
denominada private-key.pem:
El prefijo file:// le indica a la CLI de AWS que cargue el contenido de un archivo en el directorio actual.
elastic-beanstalk-x509 especifica el nombre con el que se va a llamar al certificado de IAM.
377
AWS Elastic Beanstalk Developer Guide
Terminar conexiones en el balanceador de carga
Anote el nombre de recurso de Amazon (ARN) del certificado. Tendrá que utilizarlo cuando actualice la
configuración del balanceador de carga para poder usar HTTPS.
Note
Para obtener más información acerca de los certificados de servidor en IAM, consulte Uso de certificados
de servidor en la Guía del usuario de IAM.
Puede utilizar la Consola de Elastic Beanstalk o un archivo de configuración para configurar un agente de
escucha seguro y asignar el certificado.
Note
Los entornos de una sola instancia no tienen balanceador de carga ni admiten la terminación
HTTPS en el balanceador de carga.
378
AWS Elastic Beanstalk Developer Guide
Terminar conexiones en el balanceador de carga
• En Listener port (Puerto del agente de escucha), escriba el puerto del tráfico entrante,
normalmente 443.
• En Listener protocol (Protocolo del agente de escucha), seleccione HTTPS.
• En Instance port (Puerto de instancia), escriba 80.
• En Instance protocol (Protocolo de instancia), elija HTTP.
• En SSL certificate (Certificado SSL), elija su certificado.
c. Elija Add.
• Balanceador de carga de aplicaciones
Note
Example .ebextensions/securelistener-clb.config
Utilice este ejemplo si su entorno tiene un Classic Load Balancer. En el ejemplo se utilizan las opciones
del espacio de nombres aws:elb:listener para configurar un agente de escucha HTTPS en el puerto
443 con el certificado especificado y para que reenvíe el tráfico descifrado a las instancias del entorno en
el puerto 80.
option_settings:
aws:elb:listener:443:
SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/
####################################
ListenerProtocol: HTTPS
379
AWS Elastic Beanstalk Developer Guide
Terminar conexiones en el balanceador de carga
InstancePort: 80
Sustituya el texto resaltado por el ARN del certificado. El certificado puede ser uno que haya creado o
cargado en AWS Certificate Manager (ACM) (opción preferida) o que haya cargado en IAM con la CLI de
AWS.
Para obtener más información acerca de las opciones de configuración de Classic Load Balancer, consulte
Espacios de nombres de configuración de Classic Load Balancer (p. 201).
Example .ebextensions/securelistener-alb.config
Utilice este ejemplo si su entorno tiene un Balanceador de carga de aplicaciones. El ejemplo utiliza
las opciones del espacio de nombres aws:elbv2:listener para configurar un agente de escucha
HTTPS en el puerto 443 con el certificado especificado. El agente de escucha dirige el tráfico al proceso
predeterminado.
option_settings:
aws:elbv2:listener:443:
ListenerEnabled: 'true'
Protocol: HTTPS
SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/
####################################
Example .ebextensions/securelistener-nlb.config
Utilice este ejemplo si su entorno tiene un Balanceador de carga de red. El ejemplo utiliza opciones en el
espacio de nombres aws:elbv2:listener para configurar un agente de escucha en el puerto 443. El
agente de escucha dirige el tráfico al proceso predeterminado.
option_settings:
aws:elbv2:listener:443:
ListenerEnabled: 'true'
Para incorporar esta regla, puede agregar una clave Resources a un archivo de configuración (p. 320)
del directorio .ebextensions de la aplicación.
El siguiente archivo de configuración de ejemplo agrega una regla de entrada al grupo de seguridad
AWSEBSecurityGroup. Esto permite el tráfico en el puerto 1000 procedente del grupo de seguridad del
balanceador de carga.
Example .ebextensions/sg-ingressfromlb.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 1000
FromPort: 1000
SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" ,
"SourceSecurityGroup.GroupName"]}
380
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Para habilitar HTTPS, debe permitir el tráfico entrante en el puerto 443 dirigido a la instancia EC2 en la
que se ejecuta la aplicación de Elastic Beanstalk. Para ello, debe usar la clave Resources del archivo de
configuración para agregar una regla sobre el puerto 443 a las reglas de entrada del grupo de seguridad
AWSEBSecurityGroup.
.ebextensions/https-instance-securitygroup.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno con balanceo de carga de una Amazon Virtual Private Cloud (Amazon VPC)
predeterminada, puede modificar esta política para que solo acepte el tráfico procedente del balanceador
de carga. Consulte Configuración del cifrado integral en un entorno de Elastic Beanstalk con balanceo de
carga (p. 402) para ver un ejemplo.
Plataformas
• Terminación de HTTPS en instancias EC2 que ejecutan Docker (p. 381)
• Terminación de HTTPS en instancias EC2 que ejecutan Go (p. 383)
• Terminación de HTTPS en instancias EC2 que ejecutan Java SE (p. 385)
• Terminación de HTTPS en instancias EC2 que ejecutan Node.js (p. 388)
• Terminación de HTTPS en instancias EC2 que ejecutan PHP (p. 390)
• Terminación de HTTPS en instancias EC2 que ejecutan Python (p. 392)
• Terminación de HTTPS en instancias EC2 que ejecutan Ruby (p. 394)
• Terminación de HTTPS en instancias EC2 que ejecutan Tomcat (p. 398)
• Terminación de HTTPS en instancias Amazon EC2 que ejecutan .NET (p. 401)
381
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Configura el servidor de nginx. Este archivo se carga cuando se inicia el servicio de nginx.
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
Example .ebextensions/https-instance.config
files:
/etc/nginx/conf.d/https.conf:
mode: "000644"
owner: root
group: root
content: |
# HTTPS Server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
location / {
proxy_pass http://docker;
proxy_http_version 1.1;
382
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
383
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
• La clave Resources habilita el puerto 443 en el grupo de seguridad utilizado por la instancia del
entorno.
• La clave files crea los siguientes archivos en la instancia:
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
• La clave container_commands reinicia el servidor nginx una vez que está todo configurado para que
el servidor cargue el archivo de configuración de nginx.
Example .ebextensions/https-instance.config
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01restart_nginx:
command: "service nginx restart"
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
384
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Example .ebextensions/nginx/conf.d/https.conf
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
location / {
proxy_pass http://localhost:app_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
385
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
• La clave container_commands reinicia el servidor nginx una vez que está todo configurado para que
el servidor cargue el archivo de configuración de nginx.
Example .ebextensions/https-instance.config
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01restart_nginx:
command: "service nginx restart"
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
386
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Example .ebextensions/nginx/conf.d/https.conf
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
location / {
proxy_pass http://localhost:app_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
387
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Si configuró el entorno para informes de estado mejorados (p. 416), necesita configurar nginx para
generar los registros de acceso. Para ello, quite el comentario del bloque de líneas debajo del comentario
que # For enhanced health... quitando los caracteres # del principio.
Example .ebextensions/https-instance.config
files:
/etc/nginx/conf.d/https.conf:
mode: "000644"
owner: root
group: root
content: |
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
388
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
/etc/nginx/conf.d/https.conf
Configura el servidor de nginx. Este archivo se carga cuando se inicia el servicio de nginx.
/etc/pki/tls/certs/server.crt
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por el contenido
de la clave privada usada para crear la solicitud del certificado o el certificado autofirmado.
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
389
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
Configura el servidor de Apache. Este archivo se carga cuando se inicia el servicio de Apache.
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
Example .ebextensions/https-instance.config
packages:
yum:
mod24_ssl : []
390
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLSessionTickets Off
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
391
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
Añada el siguiente fragmento al archivo de configuración (p. 320), sustituyendo los marcadores de
posición de certificado y las claves privadas tal como se indica, y guarde el archivo en el directorio
.ebextensions del paquete de código fuente. El archivo de configuración realiza las siguientes tareas:
En función de los requisitos de la aplicación, es posible que tenga que agregar también otros
directorios al parámetro python-path.
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
392
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
• La clave container_commands detiene el servicio httpd una vez que está todo configurado para que el
servicio use el nuevo archivo https.conf y certificado.
Note
El ejemplo solo funciona en entornos que utilizan la plataforma Python (p. 917).
Example .ebextensions/https-instance.config
packages:
yum:
mod24_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
WSGIScriptAlias / /opt/python/current/app/application.py
<Directory /opt/python/current/app>
Require all granted
</Directory>
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
393
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01killhttpd:
command: "killall httpd"
02waitforhttpddeath:
command: "sleep 3"
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
Temas
• Configuración de HTTPS para Ruby con Puma (p. 394)
• Configuración de HTTPS para Ruby con Passenger (p. 397)
394
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Configura el servidor de nginx. Este archivo se carga cuando se inicia el servicio de nginx.
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
• La clave container_commands reinicia el servidor nginx una vez que todo está configurado para que
el servidor use el nuevo archivo https.conf.
Example .ebextensions/https-instance.config
files:
/etc/nginx/conf.d/https.conf:
content: |
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
location / {
395
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
proxy_pass http://my_app;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01restart_nginx:
command: "service nginx restart"
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
396
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de
texto utiliza espacios para la sangría, no tabuladores.
Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio:
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
second intermediate certificate
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
Example Fragmento de código .ebextensions sobre la configuración de HTTPS para Ruby con
Passenger
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
397
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
Note
Este archivo JSON no debe contener ninguna marca de orden de bytes (BOM). De lo
contrario, la biblioteca JSON de Passenger no leerá el archivo correctamente y no se iniciará
el servicio Passenger.
Example passenger-standalone.json
{
"ssl" : true,
"ssl_port" : 443,
"ssl_certificate" : "/etc/pki/tls/certs/server.crt",
"ssl_certificate_key" : "/etc/pki/tls/certs/server.key"
}
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
398
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
/etc/pki/tls/certs/server.crt
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
/etc/pki/tls/certs/server.key
Crea el archivo de clave privada en la instancia. Sustituya private key contents por
el contenido de la clave privada usada para crear la solicitud del certificado o el certificado
autofirmado.
/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh
Example .ebextensions/https-instance.config
files:
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh:
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
sudo service httpd restart
También debe configurar el servidor proxy del entorno para estar a la escucha en el puerto 443. La
siguiente configuración de Apache 2.4 agrega un agente de escucha en el puerto 443. Para obtener más
información, consulte Configuración del servidor proxy de su entorno Tomcat (p. 728).
Example .ebextensions/httpd/conf.d/ssl.conf
Listen 443
<VirtualHost *:443>
ServerName server-name
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
399
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
ErrorLog /var/log/httpd/elasticbeanstalk-ssl-error_log
</VirtualHost>
Su proveedor de certificados puede incluir certificados intermedios que puede instalar para mejorar la
compatibilidad con los clientes móviles. Configure Apache con un paquete de entidades de certificados
intermedios (CA) añadiendo lo siguiente a su archivo de configuración de SSL (consulte Ampliación y
anulación de la configuración predeterminada de Apache (p. 729) para conocer la ubicación):
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
• Añada una nueva entrada a la clave files con el contenido de los certificados intermedios:
files:
/etc/pki/tls/certs/gd_bundle.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
First intermediate certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Second intermediate certificate
-----END CERTIFICATE-----
Note
Evite confirmar un archivo de configuración que contenga su clave privada en el control de código
fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave
privada en Amazon S3 y modifique la configuración para descargarla durante la implementación.
Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon
S3 (p. 406).
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
400
AWS Elastic Beanstalk Developer Guide
Terminar en la instancia
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
Para quitar el punto de enlace HTTP (puerto 80), incluya el comando Remove-WebBinding en
la sección Remove the HTTP binding (Quitar la vinculación con HTTP) del ejemplo.
Example .ebextensions/https-instance-dotnet.config
files:
"C:\\certs\\install-cert.ps1":
content: |
import-module webadministration
## Settings - replace the following values with your own
$bucket = "my-bucket" ## S3 bucket name
$certkey = "example.com.pfx" ## S3 object key for your PFX certificate
$pwdkey = "password.txt" ## S3 object key for a text file containing the
certificate's password
##
# Set variables
$certfile = "C:\cert.pfx"
$pwdfile = "C:\certs\pwdcontent"
Read-S3Object -BucketName $bucket -Key $pwdkey -File $pwdfile
$pwd = Get-Content $pwdfile -Raw
# Install certificate
401
AWS Elastic Beanstalk Developer Guide
Cifrado integral
# Update firewall
netsh advfirewall firewall add rule name="Open port 443" protocol=TCP localport=443
action=allow dir=OUT
commands:
00_install_ssl:
command: powershell -NoProfile -ExecutionPolicy Bypass -file C:\\certs\\install-
cert.ps1
En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para
permitir el tráfico en el puerto 443. El archivo de configuración siguiente recupera el ID del grupo de
seguridad usando una función (p. 347) de AWS CloudFormation y añadiéndole una regla.
Example .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
En un entorno de balanceador de carga, el balanceador de carga se configura bien para el paso a través
del tráfico seguro (p. 405) o para descifrar y volver a cifrar (p. 402) para el cifrado integral.
Sin embargo, si está desarrollando una aplicación que debe cumplir estrictas normativas externas, es
posible que necesite proteger todas las conexiones de red. Puede utilizar la Consola de Elastic Beanstalk o
archivos de configuración (p. 320) para que el balanceador de carga del entorno de Elastic Beanstalk se
conecte de forma segura a las instancias del backend y cumplir así con estos requisitos. El procedimiento
siguiente se centra en los archivos de configuración.
En primer lugar, agregue un agente de escucha seguro al balanceador de carga (p. 378), si aún no lo ha
hecho.
402
AWS Elastic Beanstalk Developer Guide
Cifrado integral
Asimismo, debe configurar las instancias del entorno para que reciban las solicitudes en el puerto
seguro y terminen las conexiones HTTPS. La configuración varía en función de la plataforma. Consulte
Configuración de la aplicación para terminar conexiones HTTPS en la instancia (p. 381) para obtener
instrucciones. Puede utilizar un certificado autofirmado (p. 375) para las instancias EC2 sin problemas.
A continuación, configure el agente de escucha para que reenvíe el tráfico utilizando HTTPS en el puerto
seguro que se utiliza en la aplicación. Utilice uno de los archivos de configuración siguientes, según el tipo
de balanceador de carga que su entorno utiliza.
.ebextensions/https-reencrypt-clb.config
Utilice este archivo de configuración con un Classic Load Balancer. Además de configurar el balanceador
de carga, el archivo de configuración también cambia la comprobación de estado predeterminada para que
utilice el puerto 443 y HTTPS, garantizando así que el balanceador de carga se conecte de forma segura.
option_settings:
aws:elb:listener:443:
InstancePort: 443
InstanceProtocol: HTTPS
aws:elasticbeanstalk:application:
Application Healthcheck URL: HTTPS:443/
.ebextensions/https-reencrypt-alb.config
option_settings:
aws:elbv2:listener:443:
DefaultProcess: https
ListenerEnabled: 'true'
Protocol: HTTPS
aws:elasticbeanstalk:environment:process:https:
Port: '443'
Protocol: HTTPS
.ebextensions/https-reencrypt-nlb.config
option_settings:
aws:elbv2:listener:443:
DefaultProcess: https
ListenerEnabled: 'true'
aws:elasticbeanstalk:environment:process:https:
Port: '443'
La opción DefaultProcess se denomina de esta forma debido a los Application Load Balancers, que
pueden tener agentes de escucha predeterminados en el mismo puerto correspondiente al tráfico a rutas
específicas (consulte Balanceador de carga de aplicaciones (p. 202) para obtener más información).
Para un Balanceador de carga de red, la opción especifica el único proceso de destino de este agente de
escucha.
En este ejemplo, hemos denominado al proceso https porque escucha el tráfico seguro (HTTPS). El
agente de escucha envía el tráfico al proceso en el puerto designado mediante el protocolo TCP, porque
un Balanceador de carga de red solo funciona con TCP. Esto es correcto, porque el tráfico de red HTTP y
HTTPS está implemento sobre TCP.
403
AWS Elastic Beanstalk Developer Guide
Cifrado integral
Note
La CLI de EB y la Consola de Elastic Beanstalk aplican los valores recomendados a las opciones
anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos.
Para obtener más información, consulte Valores recomendados (p. 254).
En la siguiente tarea, debe modificar el grupo de seguridad del balanceador de carga para permitir el
tráfico. En función del Amazon Virtual Private Cloud (Amazon VPC) en el que lanza su entorno (la VPC
predeterminada o una VPC personalizada), el grupo de seguridad del balanceador de carga variará. En
una VPC predeterminada, Elastic Load Balancing cuenta con un grupo de seguridad predeterminado que
pueden utilizar todos los balanceadores de carga. En una Amazon VPC personalizada, Elastic Beanstalk
crea un grupo de seguridad para que lo use el balanceador de carga.
Para admitir los dos escenarios, puede crear un grupo de seguridad e indicarle a Elastic Beanstalk que
lo use. El archivo de configuración siguiente crea un grupo de seguridad y lo adjunta al balanceador de
carga.
.ebextensions/https-lbsecuritygroup.config
option_settings:
# Use the custom security group for the load balancer
aws:elb:loadbalancer:
SecurityGroups: '`{ "Ref" : "loadbalancersg" }`'
ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`'
Resources:
loadbalancersg:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: load balancer security group
VpcId: vpc-########
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
SecurityGroupEgress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
Por último, agregue reglas de entrada y salida que permitan la comunicación a través del puerto 443 entre
el grupo de seguridad del balanceador de carga y el grupo de seguridad de las instancias.
.ebextensions/https-backendsecurity.config
Resources:
# Add 443-inbound to instance security group (AWSEBSecurityGroup)
httpsFromLoadBalancerSG:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
404
AWS Elastic Beanstalk Developer Guide
Paso a través de TCP
ToPort: 443
FromPort: 443
SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
# Add 443-outbound to load balancer security group (loadbalancersg)
httpsToBackendInstances:
Type: AWS::EC2::SecurityGroupEgress
Properties:
GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
Si hace esto en una operación distinta a la creación del grupo de seguridad, podrá restringir los grupos de
seguridad de origen y destino sin necesidad de crear una dependencia circular.
Después de haber completado todas las tareas anteriores, el balanceador de carga se conecta a las
instancias backend de forma segura mediante HTTPS. Al balanceador de carga no le importa si el
certificado de la instancia es autofirmado o lo ha emitido una autoridad de certificación de confianza;
aceptará cualquier certificado que se le presente.
Puede cambiar este comportamiento agregando políticas al balanceador de carga que le indiquen que
puede confiar solo en un certificado específico. El siguiente archivo de configuración crea dos políticas.
Una política especifica un certificado público y la otra le indica al balanceador de carga que solo debe
confiar en ese certificado para las conexiones con el puerto 443 de las instancias.
.ebextensions/https-backendauth.config
option_settings:
# Backend Encryption Policy
aws:elb:policies:backendencryption:
PublicKeyPolicyNames: backendkey
InstancePorts: 443
# Public Key Policy
aws:elb:policies:backendkey:
PublicKey: |
-----BEGIN CERTIFICATE-----
################################################################
################################################################
################################################################
################################################################
################################################
-----END CERTIFICATE-----
Cambie el texto resaltado con el contenido del certificado público de la instancia EC2.
En primer lugar. configure las instancias EC2 de su entorno para que terminen las conexiones
HTTPS (p. 381). Pruebe la configuración en un entorno de una sola instancia para asegurarse de que
todo funciona antes de añadir un balanceador de carga.
Añada un archivo de configuración (p. 320) a su proyecto para configurar un agente de escucha en el
puerto 443 que pase los paquetes TCP tal como llegan al puerto 443 en instancias del back-end:
405
AWS Elastic Beanstalk Developer Guide
Almacenamiento seguro de claves
.ebextensions/https-lb-passthrough.config
option_settings:
aws:elb:listener:443:
ListenerProtocol: TCP
InstancePort: 443
InstanceProtocol: TCP
En una Amazon Virtual Private Cloud (Amazon VPC) predeterminada, también deberá añadir una regla al
grupo de seguridad de las instancias para permitir el tráfico entrante en el puerto 443 desde el balanceador
de carga:
.ebextensions/https-instance-securitygroup.config
Resources:
443inboundfromloadbalancer:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer",
"SourceSecurityGroup.GroupName"] }
En una VPC personalizada, Elastic Beanstalk actualiza la configuración del grupo de seguridad por usted.
En el siguiente ejemplo, se muestran las secciones Resources (Recursos) (p. 342) y files
(archivos) (p. 327) de un configuration file (archivo de configuración) (p. 320) que descarga un archivo
de claves privadas de un bucket de Amazon S3.
Example .ebextensions/privatekey.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
# Private key
"/etc/pki/tls/certs/server.key":
mode: "000400"
owner: root
406
AWS Elastic Beanstalk Developer Guide
Redireccionamiento de HTTP a HTTPS
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/
server.key
En el ejemplo, sustituya el nombre y la URL del bucket por sus propios valores. La primera entrada de este
archivo agrega un método de autenticación llamado S3Auth a los metadatos del grupo de Auto Scaling del
entorno. Si ha configurado un perfil de instancia (p. 23) personalizado para su entorno, se utilizará dicho
perfil; de lo contrario, se aplicará el valor predeterminado: aws-elasticbeanstalk-ec2-role. El perfil
de instancia predeterminado tiene permiso para leer el contenido del bucket de almacenamiento de Elastic
Beanstalk. Si utiliza otro bucket, agregue permisos al perfil de instancia (p. 490).
La segunda entrada utiliza el método de autenticación S3Auth para descargar la clave privada de la URL
especificada y guardarla en /etc/pki/tls/certs/server.key. El servidor proxy puede leer la clave
privada en esta ubicación para terminar las conexiones HTTPS en la instancia (p. 381).
El perfil de instancia asignado a las instancias EC2 del entorno deben tener permiso para leer el objeto de
clave en el bucket especificado. Compruebe que el perfil de instancia tiene permiso (p. 490) para leer el
objeto en IAM, y que los permisos del bucket y del objeto no prohíben el perfil de instancia.
Para configurar el redireccionamiento, primero debe configurar el entorno para gestionar el tráfico HTTPS.
A continuación, debe configurar los servidores web en las instancias del entorno para redirigir el tráfico
HTTP a HTTPS respondiendo con un estado de respuesta de redireccionamiento HTTP.
407
AWS Elastic Beanstalk Developer Guide
Redireccionamiento de HTTP a HTTPS
Si su entorno utiliza las comprobaciones de estado de Elastic Load Balancing (p. 414), el balanceador
de carga espera que una instancia en buen estado responda a los mensajes de comprobación de estado
HTTP con respuestas HTTP 200 (OK). Por lo tanto, el servidor web no debería redireccionar estos
mensajes a HTTPS. Los archivos de configuración de ejemplo en https-redirect gestionan este
requisito correctamente.
408
AWS Elastic Beanstalk Developer Guide
Consola de administración
Monitorización de un entorno
Cuando ejecuta un sitio web de producción, es importante saber que su aplicación está disponible y
responde a las solicitudes. Para ayudarle a monitorear la capacidad de respuesta y el estado de su
aplicación, Elastic Beanstalk proporciona características que le permiten monitorear las estadísticas de la
aplicación y crear alertas que se activen cuando se superen los umbrales.
Temas
• Monitorización del estado del entorno en la consola de administración de AWS (p. 409)
• Informes de estado básicos (p. 413)
• Informes y monitorización de estado mejorados (p. 416)
• Administración de alarmas (p. 450)
• Consultar la secuencia de eventos de un entorno de Elastic Beanstalk (p. 454)
• Listado y conexión a instancias de servidor (p. 455)
• Consulta de los registros desde las instancias de Amazon EC2 en su entorno de Elastic
Beanstalk (p. 457)
En la Consola de administración de AWS, puede ver el estado del entorno y de la aplicación de un solo
vistazo. En la página de aplicaciones de la Consola de Elastic Beanstalk, cada entorno tiene un color
diferente que indica su estado.
De manera predeterminada, solo están habilitadas las métricas básicas de CloudWatch, que
devuelven datos en periodos de cinco minutos. Puede habilitar métricas de CloudWatch más
detalladas de un minuto de duración modificando la configuración del entorno.
Información general
En la parte superior de la pantalla, se muestra información general sobre el estado del entorno.
409
AWS Elastic Beanstalk Developer Guide
Gráficos de monitorización
Gráficos de monitorización
Debajo de la información general, se incluyen gráficos que contienen datos sobre el estado general del
entorno en las últimas 12 horas. Haga clic en el cuadro desplegable Time Range y seleccione un valor
distinto para ver información de un período de tres horas hasta un periodo de dos semanas.
410
AWS Elastic Beanstalk Developer Guide
Personalización de la consola de monitorización
411
AWS Elastic Beanstalk Developer Guide
Personalización de la consola de monitorización
Para eliminar alguno de los elementos existentes, haga clic en en la esquina superior derecha.
412
AWS Elastic Beanstalk Developer Guide
Informes de estado básicos
Para obtener más información acerca de las métricas y las dimensiones de cada recurso, consulte
Referencia de dimensiones, métricas y espacios de nombres de Amazon CloudWatch en Guía del usuario
de Amazon CloudWatch.
Las métricas de Elastic Load Balancing y Amazon EC2 están habilitadas en todos los entornos.
Con enhanced health (p. 416), se habilita la métrica EnvironmentHealth y el gráfico se agrega
automáticamente a la consola de monitorización. Para poder usar otras métricas en la consola de
monitorización, tiene que habilitarlas en la configuración del entorno. El sistema de estado avanzado
también agrega la página Health (p. 427) a la consola de administración.
Note
Cuando se habilitan otras métricas de CloudWatch en el entorno, la mayoría de ellas tardan unos
minutos en comenzar a enviar información y en aparecer en la lista de métricas que se utiliza para
agregar gráficos y estadísticas de información general.
Consulte Publicación de métricas personalizadas de un entorno en Amazon CloudWatch (p. 439) para
ver una lista de las métricas de estado avanzado disponibles.
Antes de que se publicara la versión 2 de las versiones de plataforma de Linux, el único sistema de
informes de estado era el básico. El sistema de informes de estado básicos proporciona información sobre
el estado de las instancias de un entorno de Elastic Beanstalk en función de las comprobaciones de estado
realizadas por Elastic Load Balancing en entornos con balanceo de carga o realizadas por Amazon Elastic
Compute Cloud en entornos con una única instancia.
Además de comprobar el estado de las instancias EC2, Elastic Beanstalk supervisa el resto de recursos
del entorno y notifica los recursos que faltan o tienen una configuración incorrecta y que pueden ocasionar
que el entorno deje de estar disponible para los usuarios.
Las métricas recopiladas por los recursos del entorno se publican en Amazon CloudWatch en intervalos
de cinco minutos. Esto incluye las métricas del sistema operativo de EC2 y las métricas de solicitudes de
Elastic Load Balancing. Puede ver gráficos basados en estas métricas de CloudWatch en la página de
monitorización (p. 409) de la consola del entorno. En los informes básicos, no se utilizan estas métricas
para determinar el estado del entorno.
Temas
• Colores de estado (p. 413)
• Comprobaciones de estado de Elastic Load Balancing (p. 414)
• Comprobaciones de estado de entornos de la capa de trabajo y de una sola instancia (p. 415)
• Comprobaciones adicionales (p. 415)
• Métricas de Amazon CloudWatch (p. 415)
Colores de estado
Elastic Beanstalk indica el estado de un entorno de servidor web en función de cómo la aplicación que se
ejecuta en él responde a la comprobación de estado. Elastic Beanstalk utiliza cuatro colores para describir
el estado, tal y como se muestra en la siguiente tabla:
413
AWS Elastic Beanstalk Developer Guide
Comprobaciones de estado de Elastic Load Balancing
Color Descripción
Estas descripciones solo se aplican a los entornos que utilizan informes de estado básicos. Consulte
Colores y estados (p. 431) para obtener información sobre los informes de estado avanzados.
Si lo desea, puede anular este ajuste especificando un recurso existente en la aplicación. Si especifica
una ruta; por ejemplo, /health, la URL de comprobación de estado se establece en HTTP:80/health.
La URL de comprobación de estado debe establecerse en una ruta que siempre esté atendida por la
aplicación. Si se establece una página estática atendida o almacenada en caché por el servidor web que
hay delante de la aplicación, las comprobaciones de estado no detectarán problemas con el servidor
de aplicaciones ni el contenedor web. Para obtener instrucciones sobre la modificación de la URL de
comprobación de estado, consulte Comprobación de estado (p. 199).
Si hay una URL de comprobación de estado configurada, Elastic Load Balancing espera que la solicitud
GET que envía devuelva como respuesta 200 OK. La aplicación no superará la comprobación de estado
si no responde en un plazo de 5 segundos o si responde con cualquier otro código de estado HTTP. Si no
supera cinco comprobaciones de estado consecutivas, Elastic Load Balancing deja la instancia fuera de
servicio.
Para obtener más información sobre las comprobaciones de estado de Elastic Load Balancing consulte el
tema sobre las comprobaciones de estado en la Guía del usuario de Elastic Load Balancing.
Note
414
AWS Elastic Beanstalk Developer Guide
Comprobaciones de estado de entornos de
la capa de trabajo y de una sola instancia
Para obtener más información sobre las comprobaciones de estado de las instancias Amazon EC2,
consulte Monitorización de instancias con comprobaciones de estado en la Guía del usuario de Amazon
EC2 para instancias de Linux.
Comprobaciones adicionales
Además de las comprobaciones de estado de Elastic Load Balancing, Elastic Beanstalk monitoriza los
recursos del entorno y cambia el estado a rojo si no se pueden implementar, no están configurados
correctamente o dejan de estar disponibles. Estas comprobaciones confirman que:
• El grupo de Auto Scaling del entorno está disponible y tiene al menos una instancia.
• El grupo de seguridad del entorno está disponible y está configurado para permitir el tráfico entrante en
el puerto 80.
• El CNAME del entorno existe y apunta al balanceador de carga correcto.
• En un entorno de trabajo, la cola de Amazon Simple Queue Service (Amazon SQS), se sondea al menos
una vez cada tres minutos.
Por ejemplo, EC2 publica las siguientes métricas sobre las instancias del grupo de Auto Scaling del
entorno:
CPUUtilization
Elastic Load Balancing publica las siguientes métricas sobre el balanceador de carga del entorno:
BackendConnectionErrors
Número de errores de conexión entre el balanceador de carga y las instancias del entorno.
HTTPCode_Backend_2XX, HTTPCode_Backend_4XX
Número de códigos de respuesta correctos (2XX) y de errores de cliente (4XX) generados por las
instancias del entorno.
415
AWS Elastic Beanstalk Developer Guide
Informes y monitorización de estado mejorados
Latency
Número de segundos entre el momento en el que el balanceador de carga transmite una solicitud a
una instancia y el momento en que se recibe la respuesta.
RequestCount
Estas listas no están completas. Para ver una lista completa de las métricas que pueden publicarse en
estos recursos, consulte los siguientes temas de la Guía para desarrolladores de Amazon CloudWatch:
Métricas
Si desea habilitar el daemon para publicar las métricas del entorno, el perfil de instancia del entorno debe
tener permisos para llamar a cloudwatch:PutMetricData. Este permiso está incluido en el perfil de
instancia predeterminado. Para obtener más información, consulte Administración de perfiles de instancias
de Elastic Beanstalk (p. 486).
Además de cambiar el funcionamiento de la codificación por colores del estado, los informes de estado
mejorados añaden un descriptor de estado que proporciona un indicador de la gravedad de los problemas
detectados cuando un entorno tiene el color amarillo o rojo. Cuando haya más información disponible
sobre el estado actual, puede elegir el botón Causes para ver información detallada sobre el estado en la
página Health (p. 426).
416
AWS Elastic Beanstalk Developer Guide
Informes y monitorización de estado mejorados
Para proporcionar información detallada sobre el estado de las instancias de Amazon EC2 que se ejecutan
en su entorno, Elastic Beanstalk incluye un agente de estado (p. 418) en la Imagen de Amazon Machine
(AMI) para cada versión de plataforma que admite la funcionalidad de informes de estado avanzados.
El agente de estado monitoriza los registros del servidor web y las métricas del sistema y envía esta
información al servicio de Elastic Beanstalk. Elastic Beanstalk analiza estas métricas y los datos de Elastic
Load Balancing y Amazon EC2 Auto Scaling para proporcionar una visión general del estado del entorno.
Además de recopilar y presentar información sobre los recursos de su entorno, Elastic Beanstalk
monitoriza los recursos de su entorno en relación con varias condiciones de error y proporciona
notificaciones que le ayudan a evitar los errores y resolver los problemas de configuración. Entre
los factores que influyen en el estado del entorno (p. 419) se incluyen los resultados de cada
solicitud servida por la aplicación, las métricas del sistema operativo de las instancias y el estado de la
implementación más reciente.
Puede ver el estado en tiempo real mediante el panel del entorno (p. 426) de la Consola de
administración de AWS o el comando eb health (p. 602) de la interfaz de línea de comandos de Elastic
Beanstalk (p. 578) (CLI de EB). Para registrar y realizar un seguimiento del estado del entorno y de
las instancias a lo largo del tiempo, puede configurar el entorno para publicar la información recopilada
por Elastic Beanstalk para los informes de estado avanzados en Amazon CloudWatch como métricas
personalizadas. CloudWatch cobra por las métricas personalizadas que se aplican a todas las métricas
distintas de EnvironmentHealth, que es gratuita.
Los informes de estado mejorados requieren una versión de la plataforma (p. 32) versión 2 o posterior.
Para monitorizar los recursos y publicar las métricas, su entorno debe tener un perfil de instancia y un
rol de servicio (p. 416). La plataforma de Multicontainer Docker no incluye un servidor web de forma
predeterminada, pero puede utilizarse con informes de estado avanzados si configura el servidor web para
que proporcione los registros en el formato adecuado (p. 446).
Notas sobre la plataforma de Windows
417
AWS Elastic Beanstalk Developer Guide
El agente de estado de Elastic Beanstalk
La primera vez que crea un entorno con una versión de la plataforma v2 en la Consola de administración
de AWS, Elastic Beanstalk le pide que cree los roles necesarios y habilite los informes de estado
mejorados de forma predeterminada. Siga leyendo para obtener más información acerca de cómo
funcionan los informes de estado mejorados o consulte Activación de los informes de estado avanzados de
AWS Elastic Beanstalk (p. 423) para empezar a utilizarlos inmediatamente.
Temas
• El agente de estado de Elastic Beanstalk (p. 418)
• Factores que determinan el estado de las instancias y del entorno (p. 419)
• Personalización de reglas de comprobación de estado (p. 421)
• Roles de los informes de estado mejorados (p. 421)
• Eventos de los informes de estado mejorados (p. 421)
• Comportamiento de los informes de estado mejorados durante las actualizaciones, implementaciones y
escalado (p. 422)
• Activación de los informes de estado avanzados de AWS Elastic Beanstalk (p. 423)
• Monitorización del estado mejorada con la consola de administración del entorno (p. 426)
• Colores y estados (p. 431)
• Métricas de la instancia (p. 433)
• Configuración de las reglas de informes de estado avanzados de un entorno (p. 436)
• Publicación de métricas personalizadas de un entorno en Amazon CloudWatch (p. 439)
• Uso de informes de estado mejorados con la API de AWS Elastic Beanstalk (p. 445)
• Formato de los logs de estado avanzados (p. 446)
• Notificaciones y solución de problemas (p. 449)
El agente de estado registra métricas similares a las que Amazon EC2 Auto Scaling y Elastic Load
Balancing publican en CloudWatch (p. 415) como parte de los informes de estado básicos (p. 413),
incluida la carga de CPU, códigos HTTP y latencia. El agente de estado, sin embargo, registra las métricas
directamente en Elastic Beanstalk, con mayor detalle y más a menudo que los informes de estado básicos.
Para los informes de estado básicos, estas métricas se publican cada cinco minutos y se pueden
monitorear con gráficos en la consola de administración del entorno. Gracias al estado mejorado, el
agente de estado de Elastic Beanstalk notifica las métricas a Elastic Beanstalk cada 10 segundos. Elastic
Beanstalk utiliza las métricas proporcionadas por el agente de estado para determinar el estado de cada
418
AWS Elastic Beanstalk Developer Guide
Factores que determinan el estado
de las instancias y del entorno
instancia del entorno y, en combinación con otros factores (p. 419), determinar el estado general del
entorno.
El estado general del entorno se puede consultar en tiempo real en el panel del entorno y CloudWatch lo
publica en Elastic Beanstalk cada 60 segundos. Puede ver métricas detalladas registradas por el agente de
estado en tiempo real con el comando eb health (p. 602) de la CLI de EB (p. 578).
Abonando una cantidad adicional, puede publicar las métricas de nivel de instancia y entorno en
CloudWatch cada 60 segundos. Las métricas publicadas en CloudWatch se pueden utilizar posteriormente
para crear gráficos de monitorización (p. 411) en la consola de administración del entorno (p. 78).
Los informes de estado mejorados solo se cobran si elige publicar métricas de estado mejoradas en
CloudWatch. Cuando se utilizan los informes de estado mejorados, puede publicar igualmente las métricas
de estado básicas de forma gratuita, aunque no decida publicar métricas de estado mejoradas.
Consulte Métricas de la instancia (p. 433) para obtener más información sobre las métricas registradas
por el agente de estado. Para obtener más información sobre la publicación de métricas de estado
mejoradas en CloudWatch, consulte Publicación de métricas personalizadas de un entorno en Amazon
CloudWatch (p. 439).
Operaciones y comandos
Cuando realiza una operación en su entorno, como implementar una nueva versión de una aplicación,
Elastic Beanstalk realiza varios cambios que afectan al estado del entorno.
Por ejemplo, cuando implementa una nueva versión de una aplicación en un entorno que ejecuta varias
instancias, es posible que vea mensajes similares a los siguientes cuando monitorice el estado del entorno
con la CLI de EB (p. 602).
id status cause
Overall Info Command is executing on 3 out of 5 instances
i-bb65c145 Pending 91 % of CPU is in use. 24 % in I/O wait
Performing application deployment (running for 31 seconds)
i-ba65c144 Pending Performing initialization (running for 12 seconds)
i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26
seconds
i-e8a2d53b Pending 94 % of CPU is in use. 52 % in I/O wait
Performing application deployment (running for 33 seconds)
i-e81cca40 Ok
En este ejemplo, el estado general del entorno es Ok y la causa de este estado es que el comando está
ejecutando 3 de 5 instancias. Tres de las instancias del entorno tienen el estado Pending, lo que indica que
una operación está en curso.
Cuando se completa una operación, Elastic Beanstalk registra información adicional sobre la operación.
En el ejemplo, Elastic Beanstalk muestra la siguiente información sobre una instancia que ya se ha
actualizado con la nueva versión de la aplicación:
419
AWS Elastic Beanstalk Developer Guide
Factores que determinan el estado
de las instancias y del entorno
La información de estado de la instancia incluye también detalles sobre la implementación más reciente
en cada instancia del entorno. Cada instancia registra un ID y un estado de implementación. El ID de
implementación es un entero que aumenta en uno cada vez que implementa una nueva versión de la
aplicación o cambia las opciones de configuración de una instancia como las variables de entorno. Puede
utilizar la información de implementación para identificar las instancias que ejecutan la versión incorrecta
de la aplicación después de una implementación continua (p. 132) que ha producido un error.
En la columna de causa, Elastic Beanstalk incluye mensajes informativos sobre las operaciones realizadas
correctamente y otros estados correctos de varias comprobaciones de estado, pero esta información no se
conserva de forma indefinida. Las causas de los estados del entorno incorrectos se mantienen hasta que el
entorno vuelve a tener un estado correcto.
Durante las actualizaciones continuas, Elastic Beanstalk aplica un tiempo de espera distinto a cada lote de
la operación. Este tiempo de espera se establece como parte de la configuración de las actualizaciones
continuas del entorno (en el espacio de nombres aws: autoscaling: updatepolicy: rollingupdate (p. 282)). Si
todas las instancias del lote están en buen estado cuando se agota el tiempo de espera del comando, la
operación continúa con el siguiente lote. De lo contrario, la operación produce un error.
Note
Si la aplicación no supera las comprobaciones de estado con el estado OK pero está estable en
otro nivel, puede definir la opción HealthCheckSuccessThreshold en el espacio de nombres
aws:elasticbeanstalk:command namespace (p. 288) para cambiar el nivel en el que Elastic
Beanstalk considera que una instancia está en buen estado.
Para que un entorno de servidor web se considere que está en buen estado, cada instancia del entorno
o lote debe superar 12 comprobaciones de estado consecutivas en el transcurso de dos minutos. Para el
entorno de una capa de trabajo, cada instancia debe superar 18 comprobaciones de estado. Antes de que
se agote el tiempo de espera del comando, Elastic Beanstalk no rebaja el estado del entorno cuando no
se superan las comprobaciones de estado. Si las instancias del entorno estén en buen estado durante el
tiempo de espera del comando, la operación se realizará correctamente.
Solicitudes HTTP
Cuando no hay ninguna operación en curso en un entorno, la fuente principal de información sobre el
estado de las instancias y del entorno son los logs del servidor web de cada instancia. Para determinar
el estado de una instancia y el estado general del entorno, Elastic Beanstalk considera el número de
solicitudes, el resultado de cada solicitud y la velocidad a la que se resolvió cada solicitud.
En las plataformas basadas en Linux, Elastic Beanstalk lee y analiza los logs del servidor web para obtener
información sobre las solicitudes HTTP. En la plataforma Windows Server, Elastic Beanstalk recibe esta
información directamente del servidor web de IIS (p. 435).
Puede que su entorno no tenga un servidor web activo. Por ejemplo, la plataforma Docker Multicontainer
no incluye un servidor web. Otras plataformas incluyen un servidor web y su aplicación podría
deshabilitarlo. En estos casos, el entorno requiere configuración adicional para proporcionar al agente
420
AWS Elastic Beanstalk Developer Guide
Personalización de reglas de comprobación de estado
de estado de Elastic Beanstalk (p. 418) los registros en el formato que se necesita para transmitir
la información de estado al servicio Elastic Beanstalk. Consulte Formato de los logs de estado
avanzados (p. 446) para obtener más información.
Consulte Métricas de la instancia (p. 433) para obtener más información sobre las métricas registradas
por el agente de estado.
Cuando crea un entorno de Elastic Beanstalk en la Consola de administración de AWS, la consola le pide
que cree un perfil de instancia y un rol de servicio con los permisos adecuados. La CLI de EB también le
ayuda a crear estos roles cuando llama a eb create para crear un entorno.
Si utiliza la API, el SDK o la CLI de AWS para crear entornos, debe crear estos roles con antelación y
especificarlos durante la creación del entorno para usar los informes de estado mejorados. Para obtener
instrucciones sobre cómo crear los roles adecuados para sus entornos, consulte Roles de servicio, perfiles
de instancia y políticas de usuario (p. 22).
421
AWS Elastic Beanstalk Developer Guide
Comportamiento de los informes de estado mejorados
durante las actualizaciones, implementaciones y escalado
Cuando el entorno pasa a un estado peor, el evento de estado avanzado incluye un mensaje que indica la
causa de la transición.
No todos los cambios de estado en el nivel de instancia provocan que Elastic Beanstalk emita un evento.
Para evitar falsas alarmas, Elastic Beanstalk solo genera un evento relacionado con el estado si el
problema persiste en varias comprobaciones.
La información de estado del entorno en tiempo real, incluido el estado, el color y la causa, está disponible
en el panel del entorno (p. 79) y en la CLI de EB (p. 578). Si asocia la CLI de EB a su entorno y ejecuta
el comando eb health (p. 602), también puede consultar el estado en tiempo real de cada una de las
instancias de su entorno.
Los informes de estado mejorados también pueden poner de manifiesto la necesidad de definir una URL
de comprobación de estado (p. 199) correcta para Elastic Load Balancing. Cuando su entorno se amplía
para satisfacer la demanda, las nuevas instancias comienzan a recibir solicitudes en cuanto superan
422
AWS Elastic Beanstalk Developer Guide
Habilitación de informes de estado avanzados
Los informes de estado avanzados necesitan un perfil de instancia (p. 23) y un rol de servicio (p. 22)
con el conjunto de permisos estándar. Cuando se crea un entorno en la Consola de Elastic Beanstalk,
Elastic Beanstalk crea los roles necesarios automáticamente. Consulte Introducción al uso de Elastic
Beanstalk (p. 3) para obtener instrucciones sobre cómo crear el primer entorno.
Temas
• Activación de informes de estado avanzados con la consola de Elastic Beanstalk (p. 423)
• Activación de informes de estado avanzados con la CLI de EB (p. 425)
• Activación de informes de estado avanzados con un archivo de configuración (p. 426)
423
AWS Elastic Beanstalk Developer Guide
Habilitación de informes de estado avanzados
Note
Las opciones para los informes de estado avanzados no aparecerán si utiliza una plataforma
o versión que no es compatible (p. 416).
6. Seleccione Aplicar.
La Consola de Elastic Beanstalk establece los valores predeterminados de los informes de estado
avanzados cuando crea un nuevo entorno con una versión de plataforma versión 2 (v2). Puedes desactivar
los informes de estado avanzados cambiando la opción correspondiente durante la creación del entorno.
Para deshabilitar los informes de estado avanzados al crear un entorno a través de la consola de
Elastic Beanstalk
424
AWS Elastic Beanstalk Developer Guide
Habilitación de informes de estado avanzados
Puede especificar un rol de servicio distinto utilizando su nombre con la opción --service-role.
Si tiene un entorno de datos que se ejecuta con informes de estado básicos en una versión de plataforma
versión 2 y desea cambiar a los informes avanzados, siga estos pasos.
~/project$ eb config
aws:elasticbeanstalk:environment:
EnvironmentType: LoadBalanced
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
425
AWS Elastic Beanstalk Developer Guide
Consola de estado
~/project$ eb config
Printing Status:
INFO: Environment update is starting.
INFO: Health reporting type changed to ENHANCED.
INFO: Updating environment no-role-test's configuration settings.
Example .ebextensions/enhanced-health.config
option_settings:
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
Si creó su propio perfil de instancia o su propio rol de servicio, cambie el texto resaltado por los nombres
de estos roles.
Temas
• Panel del entorno (p. 426)
• Página Health del entorno (p. 427)
• Página Monitoring (p. 431)
426
AWS Elastic Beanstalk Developer Guide
Consola de estado
Para obtener información detallada sobre el estado del entorno actual, abra la página Health (Estado)
eligiendo Causes (Causas).
Elastic Beanstalk muestra la página Health (Estado) solo si ha habilitado la monitorización del
estado mejorada (p. 423) para el entorno.
427
AWS Elastic Beanstalk Developer Guide
Consola de estado
La imagen siguiente muestra la página Health (Estado) de un entorno Windows. Tenga en cuenta que las
métricas de CPU son diferentes de las de un entorno Linux.
Para mostrar únicamente las instancias que tienen un determinado estado, elija Filter By y después elija un
estado (p. 431).
Para reiniciar o terminar una instancia en mal estado, seleccione Instance Actions y después elija Reboot o
Terminate.
Para ocultar la información detallada sobre el estado del entorno y las instancias, elija Hide Details. Para
mostrar u ocultar los detalles de una sola instancia, utilice la flecha situada al principio de la fila.
428
AWS Elastic Beanstalk Developer Guide
Consola de estado
Elastic Beanstalk actualiza la página Health (Estado) cada 10 segundos. Registra información sobre el
estado del entorno en cinco categorías.
La primera categoría, Server (Servidor), muestra información sobre cada una de las instancias EC2 en el
entorno. Esto incluye el ID de la instancia y el estado (p. 431), la cantidad de tiempo desde que se lanzó
la instancia y el ID de la implementación más reciente ejecutada en la instancia.
Para obtener más información sobre una instancia, incluida su zona de disponibilidad y su tipo de
instancia, coloque el ratón en el campo Instance ID (ID de instancia).
429
AWS Elastic Beanstalk Developer Guide
Consola de estado
Para obtener información sobre la última implementación (p. 130) en la instancia, coloque el ratón en el
campo Deployment ID (ID de implementación).
430
AWS Elastic Beanstalk Developer Guide
Colores y estados
nueva versión de la aplicación o cambia los ajustes de configuración que afectan al software o al sistema
operativo que se ejecutan en las instancias de su entorno.
• Version (Versión): la etiqueta de versión del código fuente de la aplicación usada en la implementación.
• Status (Estado): el estado de la implementación, que puede ser In Progress, Deployed o Failed.
• Time (Hora): para las implementaciones en curso, la hora a la que se inició la implementación. Para las
implementaciones completadas, el momento en que finalizó la implementación.
Las otras categorías proporcionan información detallada sobre los resultados y la latencia de las solicitudes
servidas por cada instancia, así como información sobre la carga y el uso de CPU de cada instancia. Para
obtener más información sobre estas métricas, consulte Métricas de la instancia (p. 433).
Si habilita la integración de X-Ray (p. 240) en su entorno y configura su aplicación con el SDK de AWS
X-Ray, la página Health (Estado) añade enlaces a la consola de AWS X-Ray en la fila de información
general.
Elija un enlace para ver las trazas relacionadas con la estadística resaltada en la consola de AWS X-Ray.
Página Monitoring
La página Monitoring (Monitorización) muestra las estadísticas de resumen y los gráficos de las métricas
de Amazon CloudWatch personalizadas generados por el sistema de informes de estado mejorados.
Consulte Monitorización del estado del entorno en la consola de administración de AWS (p. 409) para
obtener instrucciones sobre cómo añadir gráficos y estadísticas a esta página.
Colores y estados
Los informes de estado avanzados representan el estado de la instancia y el estado general del entorno
con cuatro colores, al igual que en los informes de estado básicos (p. 413). Los informes de estado
avanzados también cuentan con siete estados, que son descriptores formados por una palabra que
proporcionan una indicación más detallada del estado del entorno.
Elastic Beanstalk muestra la información de estado de todo el entorno (color, estado y causa) en la
consola de administración del entorno (p. 78). Esta información también está disponible en la CLI de EB.
431
AWS Elastic Beanstalk Developer Guide
Colores y estados
Los mensajes sobre el estado y las causas de cada instancia se actualizan cada 10 segundos y están
disponibles en la CLI de EB (p. 578) cuando se consulta el estado con eb health (p. 602).
Elastic Beanstalk utiliza los cambios en los estados de las instancias para evaluar el estado del entorno,
pero no modifica inmediatamente el estado de este. Cuando una instancia no supera una comprobación
de estado al menos tres veces en un minuto, Elastic Beanstalk rebaja el estado del entorno. En función del
número de instancias del entorno y el problema identificado, una instancia con un estado incorrecto puede
hacer que Elastic Beanstalk muestre un mensaje informativo o que cambie el estado del entorno de verde
(OK) a amarillo (Warning) o rojo (Degraded o Severe).
OK (verde)
Este estado se muestra cuando:
• Una instancia está superando las comprobaciones de estado y el agente de estado no informa de ningún
problema.
• La mayoría de las instancias del entorno están superando las comprobaciones de estado y el agente de
estado no informa de ningún problema importante.
• Una instancia está superando las comprobaciones de estado y completando las solicitudes con
normalidad.
Ejemplo: el entorno se ha implementado recientemente y está aceptando las solicitudes con normalidad.
El cinco por ciento de las solicitudes devuelve errores de la serie 400. La implementación se completó
normalmente en cada instancia.
Warning (amarillo)
Este estado se muestra cuando:
• El agente de estado está notificando un número moderado de solicitudes erróneas u otros problemas en
una instancia o en el entorno.
• Hay una operación en curso en una instancia y está tardando mucho.
Degraded (rojo)
El estado se muestra cuando el agente de estado está notificando un número elevado de solicitudes
erróneas u otros problemas en una instancia o en el entorno.
Mensaje (entorno): el número de instancias activas (4) es inferior al tamaño mínimo del grupo de Auto
Scaling (5).
Severe (rojo)
El estado se muestra cuando el agente de estado está notificando un número muy elevado de solicitudes
erróneas u otros problemas en una instancia o en el entorno.
432
AWS Elastic Beanstalk Developer Guide
Métricas de la instancia
Ejemplo: Elastic Beanstalk no puede establecer conexión con el balanceador de carga para obtener el
estado de la instancia.
Mensaje (entorno): el estado de ELB no es correcto o no está disponible en todas las instancias. Ninguna
de las instancias está enviando datos. No se puede asumir el rol "arn:aws:iam::123456789012:role/aws-
elasticbeanstalk-service-role". Compruebe que el rol existe y está configurado correctamente.
Mensaje (instancias): hace 37 minutos que el estado de ELB de la instancia no está disponible. No hay
datos. La última consulta es de hace 37 minutos.
Info (verde)
Este estado se muestra cuando:
Ejemplo: se está implementando una nueva versión de la aplicación en instancias que están en ejecución.
Pending (gris)
Este estado se muestra cuando hay una operación en curso en una instancia dentro del periodo de espera
del comando (p. 420).
Unknown (gris)
Este estado se muestra cuando Elastic Beanstalk y el agente de estado notifican que hay una cantidad
insuficiente de datos en una instancia.
Suspendido (gris)
Este estado se muestra cuando Elastic Beanstalk detiene la monitorización del estado del entorno. Es
posible que el entorno no funcione correctamente. Algunas condiciones de estado graves, si duran mucho
tiempo, provocan que Elastic Beanstalk cambie el entorno al estado Suspendido.
Ejemplo: Elastic Beanstalk no pueden acceder al rol de servicio (p. 491) del entorno.
Ejemplo: Se ha eliminado el grupo de Auto Scaling (p. 183) que Elastic Beanstalk creó para el entorno.
Mensaje: El estado del entorno ha cambiado de OK a Severe. No hay instancias. La capacidad deseada
del grupo de Auto Scaling se ha configurado en 1.
Métricas de la instancia
Las métricas de instancia proporcionan información acerca del estado de las instancias en el entorno. El
agente de estado de Elastic Beanstalk (p. 418) se ejecuta en cada instancia. Recopila métricas de las
instancias y las envía a Elastic Beanstalk, que las analiza para determinar el estado de las instancias de
los entornos.
433
AWS Elastic Beanstalk Developer Guide
Métricas de la instancia
El agente de estado de Elastic Beanstalk en la instancia recopila métricas sobre las instancias de los
servidores web y del sistema operativo. Para obtener información de servidor web sobre plataformas
basadas en Linux, Elastic Beanstalk lee y analiza los logs del servidor web. En la plataforma Windows
Server, Elastic Beanstalk recibe esta información directamente del servidor web de IIS. Los servidores
web proporcionan información sobre las solicitudes HTTP entrantes: cuántas solicitudes llegaron, cuántas
generaron errores y cuánto tiempo tardaron en resolverse. El sistema operativo proporciona información
instantánea sobre el estado de los recursos de las instancias: la carga de CPU y la distribución del tiempo
empleado en cada tipo de proceso.
El agente de estado recopila las métricas del servidor web y el sistema operativo y las transmite a Elastic
Beanstalk cada 10 segundos. Elastic Beanstalk analiza los datos y utiliza los resultados para actualizar el
estado de cada instancia y del entorno.
Temas
• Métricas del servidor web (p. 434)
• Métricas del sistema operativo (p. 435)
• Captura de métricas de servidor web en IIS en Windows Server (p. 435)
Para obtener más información sobre el formato de los registros utilizados por Elastic Beanstalk, consulte
Formato de los logs de estado avanzados (p. 446).
En la plataforma Windows Server, Elastic Beanstalk agrega un módulo a la canalización de peticiones del
servidor web IIS y captura métricas sobre los tiempos de petición HTTP y los códigos de respuesta. El
módulo envía estas métricas al agente de estado en la instancia mediante un canal de comunicación entre
procesos (IPC) de alto rendimiento. Para conocer los detalles de implementación, consulte Captura de
métricas de servidor web en IIS en Windows Server (p. 435).
RequestCount
Número de solicitudes administradas por el servidor web por segundo durante los últimos 10
segundos. Se muestra como un valor medio r/sec (solicitudes por segundo) en la CLI de EB y en
Página Health del entorno (p. 427).
Status2xx, Status3xx, Status4xx, Status5xx
Número de solicitudes que generaron cada tipo de código de estado durante los últimos 10 segundos.
Por ejemplo, las solicitudes correctas devuelven 200 OK, las solicitudes redireccionadas devuelven
301 y, si la URL especificada no coincide con ningún recurso de la aplicación, se devuelve 404.
En la CLI de EB y en Página Health del entorno (p. 427), estas métricas se muestran como la
cantidad total de solicitudes de las instancias y como un porcentaje de las solicitudes totales de los
entornos.
p99.9, p99, p95, p90, p85, p75, p50, p10
Latencia media del porcentaje x de solicitudes más lentas durante los últimos 10 segundos, donde x
es la diferencia entre el número y 100. Por ejemplo, p99 1.403 indica que la latencia del 1 % más
lento de las solicitudes durante los últimos 10 segundos tuvo una latencia media de 1,403 segundos.
434
AWS Elastic Beanstalk Developer Guide
Métricas de la instancia
Running
Carga media durante el último minuto y los últimos cinco minutos. Se muestra como un valor decimal
que indica el número medio de procesos que estaban en ejecución en ese momento. Si el número que
se muestra es mayor que el número de vCPU (subprocesos) disponibles, el resto es el número medio
de procesos que estaban a la espera.
Por ejemplo, si el tipo de instancia tiene cuatro vCPU y la carga es 4,5, hubo una media de 0,5
procesos en espera durante ese periodo de tiempo. En un proceso completo, equivaldría al 50 por
ciento del tiempo en espera.
User %, Nice %, System %, Idle %, I/O Wait %
Porcentaje de tiempo que la CPU ha pasado en cada estado durante los últimos 10 segundos.
Running
Porcentaje de tiempo que la CPU ha pasado en cada estado durante los últimos 10 segundos.
Detalles de la implementación
Para capturar las métricas de IIS, Elastic Beanstalk implementa un IHttpModule administrado y se
suscribe a los eventos BeginRequest y EndRequest. Esto permite al módulo notificar la latencia
de solicitudes HTTP y los códigos de respuesta de todas las peticiones web tratadas por IIS. Para
agregar el módulo a la canalización de solicitudes de IIS, Elastic Beanstalk registra el módulo en la
sección <modules> del archivo de configuración de IIS, %windir%\System32\inetsrv\config
\applicationHost.config.
El módulo Elastic Beanstalk en IIS envía las métricas de solicitud web capturadas al agente de estado en
la instancia, que es un servicio de Windows llamado HealthD. Para enviar estos datos, el módulo utiliza
NetNamedPipeBinding, que proporciona un enlace seguro y de confianza que está optimizado para la
comunicación en la máquina.
435
AWS Elastic Beanstalk Developer Guide
Reglas de informes de estado avanzados
De forma predeterminada, Elastic Beanstalk incluye todos los errores HTTP 4xx de aplicación a la hora
de determinar el estado del entorno, por lo que cambia el estado del entorno de OK (Correcto) a Warning
(Advertencia), Degraded (Degradado) o Severe (Grave), en función del porcentaje de errores. Para
gestionar este caso correctamente, Elastic Beanstalk le permite configurar esta regla y hacer caso omiso
de los errores HTTP 4xx de la aplicación en las instancias del entorno. En este tema se describen formas
en que puede cambiar esta configuración.
Note
Para hacer caso omiso de los códigos de estado HTTP 4xx de aplicación con la Consola de
administración de AWS
6. Seleccione Aplicar.
436
AWS Elastic Beanstalk Developer Guide
Reglas de informes de estado avanzados
Para hacer caso omiso de los códigos de estado HTTP 4xx de aplicación a través de la CLI de EB
y las configuraciones guardadas
OptionSettings:
...
aws:elasticbeanstalk:healthreporting:system:
ConfigDocument:
Rules:
Environment:
Application:
ApplicationRequests4xx:
Enabled: false
Version: 1
SystemType: enhanced
...
Note
Si utiliza los comandos eb config get y put con configuraciones guardadas, no incluya la extensión
de nombre de archivo.
8. Aplique la configuración guardada en el entorno que está en ejecución.
437
AWS Elastic Beanstalk Developer Guide
Reglas de informes de estado avanzados
{
"Rules": {
"Environment": {
"Application": {
"ApplicationRequests4xx": {
"Enabled": false
}
}
}
},
"Version": 1
}
En el caso de la AWS CLI, debe pasar el documento como valor de la clave Value en un argumento
de configuración de opciones, que es un objeto JSON. En este caso, las comillas del documento
insertado deben escribirse con caracteres de escape. El siguiente comando comprueba si los ajustes de
configuración son válidos.
En los archivos de configuración .ebextensions de YAML, puede proporcionar el documento JSON tal y
como está.
option_settings:
- namespace: aws:elasticbeanstalk:healthreporting:system
option_name: ConfigDocument
value: {
"Rules": {
"Environment": {
"Application": {
"ApplicationRequests4xx": {
"Enabled": false
}
438
AWS Elastic Beanstalk Developer Guide
CloudWatch
}
}
},
"Version": 1
}
Para publicar métricas personalizadas sobre un entorno en CloudWatch, primero deben habilitarse los
informes de estado avanzados en el entorno. Consulte Activación de los informes de estado avanzados de
AWS Elastic Beanstalk (p. 423) para obtener instrucciones.
Temas
• Métricas de informes de estado avanzados (p. 439)
• Configuración de métricas de CloudWatch mediante la Consola de Elastic Beanstalk (p. 441)
• Configuración de métricas personalizadas de CloudWatch usando la CLI de EB (p. 441)
• Proporcionar documentos de configuración de métricas personalizadas (p. 442)
Puede publicar las siguientes métricas de estado avanzado desde su entorno en CloudWatch.
EnvironmentHealth
Solo se aplica al entorno. Si no se configuran otras métricas, esta es la única métrica de CloudWatch
que publica el sistema de informes de estado avanzado. El estado del entorno está representado por
uno de los siete estados (p. 431). En la consola de CloudWatch, estos estados se corresponden con
los siguientes valores:
• 0: OK
• 1: Info
• 5: Unknown
• 10: No data
• 15: Warning
439
AWS Elastic Beanstalk Developer Guide
CloudWatch
• 20: Degraded
• 25: Severe
InstancesSevere, InstancesDegraded, InstancesWarning, InstancesInfo, InstancesOk,
InstancesPending, InstancesUnknown, InstancesNoData
Solo se aplica al entorno. Estas métricas indican el número de instancias del entorno y el estado de
cada una. InstancesNoData indica el número de instancias para las que no se reciben datos.
ApplicationRequestsTotal, ApplicationRequests5xx, ApplicationRequests4xx,
ApplicationRequests3xx, ApplicationRequests2xx
Se aplica a la instancia y al entorno. Indica el número total de solicitudes completado por la instancia
o el entorno, así como el número de solicitudes completadas con el código de estado de cada
categoría.
ApplicationLatencyP10, ApplicationLatencyP50, ApplicationLatencyP75,
ApplicationLatencyP85, ApplicationLatencyP90, ApplicationLatencyP95,
ApplicationLatencyP99, ApplicationLatencyP99.9
Se aplica a la instancia y al entorno. Indica el período medio de tiempo, en segundos, que tarda en
completarse el porcentaje x de las solicitudes más rápidas.
InstanceHealth
Se aplica solo a la instancia. Indica el estado actual de la instancia. El estado de la instancia está
representado por uno de los siete estados (p. 431). En la consola de CloudWatch, estos estados se
corresponden con los siguientes valores:
• 0: OK
• 1: Info
• 5: Unknown
• 10: No data
• 15: Warning
• 20: Degraded
• 25: Severe
Se aplica solo a la instancia. Indica el porcentaje de tiempo que la CPU ha pasado en cada estado
durante el último minuto.
LoadAverage1min
Se aplica solo a la instancia. Carga media de la CPU de la instancia durante el último minuto.
RootFilesystemUtil
Se aplica solo a la instancia. Indica el porcentaje de espacio en disco que está en uso.
Se aplica solo a la instancia. Indica el porcentaje de tiempo que la CPU ha pasado en cada estado
durante el último minuto.
440
AWS Elastic Beanstalk Developer Guide
CloudWatch
Al habilitar las métricas personalizadas de CloudWatch, estas se agregan a la lista de métricas disponibles
en la página Monitoring (Monitorización) (p. 409).
OptionSettings:
...
aws:elasticbeanstalk:healthreporting:system:
ConfigDocument:
CloudWatchMetrics:
Environment:
ApplicationRequests5xx: 60
441
AWS Elastic Beanstalk Developer Guide
CloudWatch
ApplicationRequests4xx: 60
Instance:
ApplicationRequestsTotal: 60
Version: 1
SystemType: enhanced
...
Si utiliza los comandos eb config get y put con configuraciones guardadas, no incluya la extensión
de archivo.
8. Aplique la configuración guardada en el entorno que está en ejecución.
{
"CloudWatchMetrics": {
"Environment": {
"ApplicationLatencyP99.9": 60,
"InstancesSevere": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
442
AWS Elastic Beanstalk Developer Guide
CloudWatch
"ApplicationLatencyP95": 60,
"InstancesUnknown": 60,
"ApplicationLatencyP85": 60,
"InstancesInfo": 60,
"ApplicationRequests2xx": 60,
"InstancesDegraded": 60,
"InstancesWarning": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"InstancesNoData": 60,
"InstancesPending": 60,
"ApplicationLatencyP10": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"InstancesOk": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60
},
"Instance": {
"ApplicationLatencyP99.9": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"ApplicationLatencyP85": 60,
"CPUUser": 60,
"ApplicationRequests2xx": 60,
"CPUIdle": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"RootFilesystemUtil": 60,
"LoadAverage1min": 60,
"CPUIrq": 60,
"CPUNice": 60,
"CPUIowait": 60,
"ApplicationLatencyP10": 60,
"LoadAverage5min": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"CPUSystem": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60,
"InstanceHealth": 60,
"CPUSoftirq": 60
}
},
"Version": 1
}
En el caso de la CLI de AWS, debe pasar el documento como valor de la clave Value en un argumento
de configuración de opciones, que es un objeto JSON. En este caso, las comillas del documento insertado
deben escribirse con caracteres de escape.
443
AWS Elastic Beanstalk Developer Guide
CloudWatch
En los archivos de configuración .ebextensions de YAML, puede proporcionar el documento JSON tal y
como está.
option_settings:
- namespace: aws:elasticbeanstalk:healthreporting:system
option_name: ConfigDocument
value: {
"CloudWatchMetrics": {
"Environment": {
"ApplicationLatencyP99.9": 60,
"InstancesSevere": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"InstancesUnknown": 60,
"ApplicationLatencyP85": 60,
"InstancesInfo": 60,
"ApplicationRequests2xx": 60,
"InstancesDegraded": 60,
"InstancesWarning": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"InstancesNoData": 60,
"InstancesPending": 60,
"ApplicationLatencyP10": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"InstancesOk": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60
},
"Instance": {
"ApplicationLatencyP99.9": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"ApplicationLatencyP85": 60,
"CPUUser": 60,
"ApplicationRequests2xx": 60,
"CPUIdle": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"RootFilesystemUtil": 60,
"LoadAverage1min": 60,
"CPUIrq": 60,
"CPUNice": 60,
"CPUIowait": 60,
"ApplicationLatencyP10": 60,
"LoadAverage5min": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"CPUSystem": 60,
444
AWS Elastic Beanstalk Developer Guide
Usuarios de API
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60,
"InstanceHealth": 60,
"CPUSoftirq": 60
}
},
"Version": 1
}
Los informes de estado mejorados se configuran definiendo el rol del servicio, el perfil de instancia y las
opciones de configuración de Amazon CloudWatch para su entorno. Puede hacer esto de tres formas:
mediante las opciones de configuración de la carpeta .ebextensions, con configuraciones guardadas o
configurando las opciones directamente en el parámetro create-environment de la llamada a option-
settings.
Para utilizar la API, los SDK o la interfaz de línea de comandos (CLI) de AWS para crear un entorno que
admita informes de estado mejorados, debe:
• Crear un rol de servicio y un perfil de instancia con los permisos (p. 22) adecuados
• Crear un nuevo entorno con una nueva versión de la plataforma (p. 32)
• Definir las opciones de configuración (p. 252) de tipo de sistema de estado, perfil de instancia y rol de
servicio
Para habilitar los informes de estado mejorados, establezca este parámetro en enhanced.
IamInstanceProfile
Establezca este parámetro en el nombre de un perfil de instancia configurado para su uso con Elastic
Beanstalk.
ServiceRole
Establezca este parámetro en un rol de servicio configurado para su uso con Elastic Beanstalk.
445
AWS Elastic Beanstalk Developer Guide
Formato de los logs de estado avanzados
ConfigDocument (opcional)
Un documento JSON que define las métricas de instancia y del entorno que se publican en CloudWatch.
Por ejemplo:
{
"CloudWatchMetrics":
{
"Environment":
{
"ApplicationLatencyP99.9":60,
"InstancesSevere":60
}
"Instance":
{
"ApplicationLatencyP85":60,
"CPUUser": 60
}
}
"Version":1
}
Note
Los documentos config pueden requerir un formato especial, como incluir las comillas en
caracteres de escape, en función de cómo los proporcione a Elastic Beanstalk. Para ver ejemplos,
consulte Proporcionar documentos de configuración de métricas personalizadas (p. 442).
La información de esta página solo es relevante para las plataformas basadas en Linux. En
la plataforma de Windows Server, Elastic Beanstalk recibe información sobre las solicitudes
HTTP directamente del servidor web de IIS. Para obtener más información, consulte Captura de
métricas de servidor web en IIS en Windows Server (p. 435).
/var/log/nginx/access.log
El siguiente ejemplo procede de un proxy nginx que se ejecuta en un entorno de servidor web de Ruby,
aunque el formato es similar al de Apache.
446
AWS Elastic Beanstalk Developer Guide
Formato de los logs de estado avanzados
El segundo log tiene un formato más escueto. Solo contiene información que es pertinente para los
informes de estado avanzados. Esta log se genera en una subcarpeta llamada healthd y rota cada hora.
Los logs antiguos se eliminan inmediatamente después de la rotación.
/var/log/nginx/healthd/application.log.2015-07-23-00
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
En los proxies de nginx, los valores de tiempo se presentan en segundos de punto flotante, con tres
decimales. En Apache, se utilizan microsegundos enteros.
Note
/etc/nginx/conf.d/webapp_healthd.conf
447
AWS Elastic Beanstalk Developer Guide
Formato de los logs de estado avanzados
En el siguiente ejemplo, se muestra la configuración del registro de nginx con el formato del registro de
healthd resaltado.
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
location / {
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
/etc/httpd/conf.d/healthd.conf
• Generar logs con el formato correcto, tal y como se explicó en la sección anterior.
• Generar logs en /var/log/nginx/healthd/.
448
AWS Elastic Beanstalk Developer Guide
Notificaciones y solución de problemas
Implementaciones
Elastic Beanstalk monitorea el entorno para mantener la coherencia con las implementaciones posteriores.
Si se produce un error en una implementación continua, la versión de la aplicación que se ejecuta en las
instancias del entorno podría variar. Esto puede producirse si la implementación de uno o varios lotes se
realiza correctamente, pero se produce un error antes de completar todos los lotes.
Para solucionar este problema, debe iniciar otra implementación. Puede volver a implementar (p. 130)
una versión anterior que sepa que funciona bien o configurar el entorno para que se omitan las
comprobaciones de estado (p. 133) durante la implementación y vuelva a implementarse a la fuerza la
nueva versión hasta que se complete.
También puede identificar y terminar las instancias en las que se ejecuta la versión incorrecta de la
aplicación. Elastic Beanstalk lanzará instancias con la versión correcta para sustituir a las instancias
terminadas. Utilice el comando "health" de la CLI de EB (p. 602) para identificar en qué instancias se
ejecuta una versión incorrecta de la aplicación.
Servidor de aplicaciones
El 15 % de las solicitudes experimentan errores HTTP 4xx
Hay un alto porcentaje de solicitudes HTTP dirigidas a una instancia o entorno que están experimentando
errores 4xx.
449
AWS Elastic Beanstalk Developer Guide
Administración de alarmas
Los códigos de estado de la serie 400 indican que el usuario hizo una solicitud incorrecta; por ejemplo,
solicitó una página que no existe (404 Archivo no encontrado) o a la que el usuario no tiene acceso (403
Prohibido). Es normal que se produzcan algunos errores 404. Sin embargo, si el número es alto, podría
indicar que hay enlaces internos o externos a páginas que no están disponibles. Estos problemas pueden
resolverse corrigiendo los enlaces internos erróneos y redireccionando los enlaces externos que no son
correctos.
Hay un alto porcentaje de solicitudes HTTP dirigidas a una instancia o entorno que están experimentando
errores con códigos de estado de la serie 500.
Un código de estado de la serie 500 indica que el servidor de aplicaciones ha detectado un error interno.
Estos errores informan de que hay un error en el código de la aplicación que debe identificarse y
resolverse rápidamente.
En una instancia, el agente de estado notifica un porcentaje extremadamente alto de uso de la CPU y
establece el estado de la instancia en Warning o Degraded.
Instancia de trabajo
Hay 20 mensajes en espera en la cola (hace 25 segundos).
Se están agregando solicitudes a la cola del entorno de trabajo más rápido de lo que se pueden procesar.
Escale el entorno para aumentar la capacidad.
Se están produciendo errores repetidamente en las solicitudes de trabajo, que se están agregando a la
cola de mensajes fallidos (p. 168). Consulte las solicitudes de la cola de mensajes fallidos para ver por qué
están fallando.
Otros recursos
El número de instancias activas (4) es inferior al tamaño mínimo del grupo de Auto Scaling (5).
El número de instancias que se ejecutan en el entorno es inferior al número mínimo configurado para el
grupo de Auto Scaling.
Las notificaciones configuradas para el grupo de Auto Scaling se han modificado fuera de Elastic
Beanstalk.
Administración de alarmas
Puede crear alarmas para las métricas que está monitorizando a través de la Consola de administración
de AWS. Las alarmas le ayudan a monitorear los cambios del entorno para que pueda identificar y mitigar
los problemas fácilmente antes de que se produzcan. Por ejemplo, puede configurar una alarma que
450
AWS Elastic Beanstalk Developer Guide
Administración de alarmas
le avise cuando la utilización de la CPU de un entorno supere un determinado umbral. De este modo,
tendrá la seguridad de que se le informa antes de que se produzca un posible problema. Para obtener más
información, consulte Uso de Elastic Beanstalk con Amazon CloudWatch (p. 467).
Note
Elastic Beanstalk utiliza CloudWatch para la monitorización y las alarmas, lo que significa que, en
su cuenta de AWS, se aplicarán los costos de CloudWatch por las alarmas que utilice.
Para obtener más información acerca de las métricas específicas de monitorización, consulte Informes de
estado básicos (p. 413).
1. En la página de aplicaciones de la Consola de Elastic Beanstalk, haga clic en el nombre del entorno
cuyas alarmas desea administrar.
2. En el menú de navegación, haga clic en Alarms para ver una lista de alarmas.
4.
Para editar o eliminar una alarma, haga clic en (editar) o (eliminar).
451
AWS Elastic Beanstalk Developer Guide
Administración de alarmas
1. En la página de aplicaciones de la Consola de Elastic Beanstalk, haga clic en el nombre del entorno al
que desea agregar las alarmas.
2. En el menú de navegación, haga clic en Monitoring.
3.
En la métrica para la que desea crear una alarma, haga clic en . Se abrirá la página Alarms.
452
AWS Elastic Beanstalk Developer Guide
Administración de alarmas
453
AWS Elastic Beanstalk Developer Guide
Ver eventos
La página Events muestra una lista de todos los eventos que se han registrado para el entorno y
la versión de la aplicación. Puede filtrar por tipo de evento mediante la lista desplegable Severity.
También puede filtrar los eventos por el momento en que se produjeron con el control deslizante de
tiempo.
La CLI de EB (p. 578) y la CLI de AWS proporcionan comandos para recuperar eventos. Si administra
su entorno con la CLI de EB, use eb events (p. 631) para mostrar una lista de eventos. Este comando
también tiene una opción --follow que continúa mostrando eventos hasta que pulsa Ctrl+C para detener
la salida.
Para obtener eventos a través de la CLI de AWS, utilice el comando describe-events y especifique el
entorno por nombre o ID:
454
AWS Elastic Beanstalk Developer Guide
Monitorización de instancias
Para obtener más información sobre las herramientas de línea de comandos, consulte
Herramientas (p. 578).
• Para obtener más información sobre cómo mostrar las instancias del servidor y conectarse a ellas a
través de AWS Toolkit for Eclipse, consulte Listado y conexión a instancias de servidor (p. 756).
• Para obtener más información sobre cómo mostrar las instancias del servidor y conectarse a ellas a
través de AWS Toolkit for Visual Studio, consulte Listado y conexión a instancias de servidor (p. 812).
Important
Para poder tener acceso a las instancias de Amazon EC2 aprovisionadas para Elastic Beanstalk,
debe crear un par de claves de Amazon EC2 y configurar las instancias Elastic Beanstalk
aprovisionadas para Amazon EC2 de forma que utilicen el par de claves de Amazon EC2. Puede
configurar los pares de claves de Amazon EC2 con la consola de administración de AWS. Para
obtener instrucciones sobre cómo crear un par de claves para Amazon EC2 consulte la Guía
de introducción de Amazon EC2. Para obtener más información sobre cómo configurar las
instancias Amazon EC2 para utilizar un par de claves de Amazon EC2, consulte Par de claves de
EC2 (p. 232).
De forma predeterminada, Elastic Beanstalk no permite conexiones remotas a instancias EC2 en
un contenedor de Windows, excepto para las que se encuentran en contenedores de Windows
heredados. (Elastic Beanstalk configura las instancias EC2 de los contenedores de Windows
heredados para que utilicen el puerto 3389 para las conexiones RDP). Puede habilitar las
conexiones remotas a las instancias EC2 que ejecutan Windows añadiendo una regla a un grupo
de seguridad que autorice el tráfico entrante a dichas instancias. Es absolutamente recomendable
que elimine la regla cuando finalice la conexión remota. Puede añadir la regla de nuevo la próxima
vez que necesite iniciar sesión de forma remota. Para obtener más información, consulte Adding
a Rule for Inbound RDP Traffic to a Windows Instance y Connect to Your Windows Instance en la
Guía del usuario de Amazon Elastic Compute Cloud para Microsoft Windows.
455
AWS Elastic Beanstalk Developer Guide
Monitorización de instancias
3. Los balanceadores de carga creados por Elastic Beanstalk incluyen awseb en el nombre. Busque el
balanceador de carga para su entorno y haga clic en él.
456
AWS Elastic Beanstalk Developer Guide
Consulta de los registros de instancias
Se muestra una lista de las instancias que usa el balanceador de carga para su entorno de Elastic
Beanstalk. Anote el ID de la instancia a la que desea conectarse.
5. En el panel de navegación de la consola de Amazon EC2, elija Instances (Instancias) y busque el ID
de la instancia en la lista.
6. Haga clic con el botón derecho en el ID de la instancia Amazon EC2 que se ejecuta en el balanceador
de carga del entorno y, a continuación, seleccione Connect (Conectar) en el menú contextual.
7. Anote la dirección DNS pública de la instancia que aparece en la pestaña Description.
8. Conéctese una instancia que ejecute Linux mediante el cliente SSH que prefiera y, a continuación,
escriba ssh -i .ec2/mykeypair.pem ec2-user@<public-DNS-of-the-instance> . Para obtener
instrucciones sobre cómo conectarse a una instancia que ejecuta Windows, consulte Connect to
Windows Instance en la Guía del usuario de Amazon Elastic Compute Cloud para Microsoft Windows.
Para obtener más información sobre cómo conectarse a una instancia Amazon EC2, consulte la Guía de
introducción de Amazon Elastic Compute Cloud.
457
AWS Elastic Beanstalk Developer Guide
Consulta de los registros de instancias
Los registros de finalización son las últimas 100 líneas de los archivos de registro que se utilizan con más
frecuencia: los registros operativos de Elastic Beanstalk y los registros del servidor web o del servidor de
aplicaciones. Cuando se solicita un log de finalización utilizando la consola de administración del entorno o
eb logs, una instancia del entorno concatena las entradas del log más frecuentes en un archivo de texto y
lo carga en Amazon S3.
Los logs de paquete son logs completos para un mayor conjunto de archivos de registro, como los logs de
yum y cron o diversos logs de AWS CloudFormation. Cuando solicita los logs de paquete, una instancia del
entorno empaqueta todos los archivos log en un archivo ZIP y lo carga a Amazon S3.
Note
Las plataformas Windows Server de Elastic Beanstalk no admiten los logs de paquete.
Para cargar los registros rotados en Amazon S3, las instancias del entorno deben tener un perfil de
instancia (p. 23) con permiso para escribir en el bucket de Amazon S3 de Elastic Beanstalk. Estos
permisos están incluidos en el perfil de instancia predeterminado que Elastic Beanstalk le pide que cree
cuando lanza un entorno en la Consola de Elastic Beanstalk por primera vez.
Para recuperar los registros en la consola de administración del entorno, vaya a Logs (Registros),
seleccione Request Logs (Solicitar registros) y elija el tipo de log que quiere recuperar. Para obtener los
registros de finalización, seleccione Last 100 Lines. Para obtener los registros de paquete, seleccione Full
Logs (Registros completos).
Cuando Elastic Beanstalk termine de recuperar los registros, seleccione Download (Descargar).
Elastic Beanstalk almacena los registros de finalización y paquete en un bucket Amazon S3, y genera una
URL prefirmada de Amazon S3 que puede utilizar para obtener acceso a sus registros. Elastic Beanstalk
elimina los archivos de Amazon S3 después de una duración de 15 minutos.
Warning
458
AWS Elastic Beanstalk Developer Guide
Localización de registros en instancias de Amazon EC2
Note
La política de usuario de debe tener el permiso s3:DeleteObject. Elastic Beanstalk utiliza los
permisos de usuario para eliminar los registros de Amazon S3.
Si desea conservar los logs, puede configurar el entorno para que los publique en Amazon S3
automáticamente después de rotarlos. Para habilitar la rotación de registros en Amazon S3, siga el
procedimiento en Configuración de la visualización de logs de instancias (p. 243). Las instancias del
entorno intentarán cargar los logs que se han rotado una vez cada hora.
Si la aplicación genera registros en una ubicación que no forma parte de la configuración predeterminada
de la plataforma del entorno, puede extender la configuración predeterminada con los archivos de
configuración (.ebextensions (p. 320)). Puede agregar los archivos log de la aplicación a los logs de
finalización, los logs de paquete o la rotación de logs.
Para transmitir los registros en tiempo real y almacenarlos a largo plazo, configure el entorno para que
transmita registros a Amazon CloudWatch Logs (p. 462).
Secciones
• Localización de registros en instancias de Amazon EC2 (p. 459)
• Localización de logs en Amazon S3 (p. 460)
• Configuración de rotación de registros en Linux (p. 460)
• Ampliación de la configuración predeterminada de la tarea de registro (p. 460)
• Streaming de archivos de registro a Amazon CloudWatch Logs (p. 462)
Linux
• /var/log/eb-activity.log
• /var/log/eb-commandprocessor.log
Windows Server
• C:\Program Files\Amazon\ElasticBeanstalk\logs\
• C:\cfn\logs\cfn-init.log
Estos registros contienen mensajes sobre las actividades de implementación, como mensajes relacionados
con los archivos de configuración (.ebextensions (p. 320)).
Cada aplicación y cada servidor web guarda los logs en su propia carpeta:
• Apache – /var/log/httpd/
• IIS – C:\inetpub\wwwroot\
• Node.js: /var/log/nodejs/
• nginx – /var/log/nginx/
• Passenger – /var/app/support/logs/
• Puma – /var/log/puma/
• Python: /opt/python/log/
459
AWS Elastic Beanstalk Developer Guide
Localización de logs en Amazon S3
• Tomcat: /var/log/tomcat8/
Por ejemplo, los registros de una instancia i-0a1fd158 situada en el entorno de Elastic Beanstalk
e-mpcwnwheky de la región de AWS us-west-2 de la cuenta 123456789012 se almacenan en las
siguientes ubicaciones:
• Registros de finalización:
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/
tail/e-mpcwnwheky/i-0a1fd158
• Registros de paquete:
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/
bundle/e-mpcwnwheky/i-0a1fd158
• Registros rotados:
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/
publish/e-mpcwnwheky/i-0a1fd158
Note
Encontrará el ID del entorno en la consola de administración del entorno.
Puede encontrar los archivos de configuración de Elastic Beanstalk para logrotate en /etc/
logrotate.elasticbeanstalk.hourly/. Esta configuración de rotación es específica de la
plataforma y puede cambiar en futuras versiones de la plataforma. Para obtener más información sobre los
ajustes disponibles y configuraciones de ejemplo, ejecute man logrotate.
Los archivos de configuración se invocan mediante trabajos cron en /etc/cron.hourly/. Para obtener
más información acerca de cron, ejecute man cron.
460
AWS Elastic Beanstalk Developer Guide
Ampliación de la configuración
predeterminada de la tarea de registro
la instancia de Amazon EC2 para configurar tareas en los registros de finalización, los registros de paquete
y la rotación de registros.
En Linux:
• Registros de finalización:
/opt/elasticbeanstalk/tasks/taillogs.d/
• Registros de paquete:
/opt/elasticbeanstalk/tasks/bundlelogs.d/
• Registros rotados:
/opt/elasticbeanstalk/tasks/publishlogs.d/
En Windows Server:
• Registros de finalización:
c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\
• Registros rotados:
c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\
Por ejemplo, el archivo eb-activity.conf en Linux agrega dos archivos de registro a la tarea de
registros de finalización.
/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf
/var/log/eb-commandprocessor.log
/var/log/eb-activity.log
Puede utilizar archivos de configuración del entorno (.ebextensions (p. 320)) para agregar sus
propios archivos .conf a estas carpetas. Un archivo .conf muestra los archivos de registro específicos
de su aplicación, que Elastic Beanstalk agrega a las tareas de archivo de registro.
Utilice la sección files (p. 327) para agregar archivos de configuración a las tareas que desea
modificar. Por ejemplo, el siguiente texto de configuración inserta un archivo de configuración de log en
cada instancia del entorno. Este archivo de configuración de log, cloud-init.conf, añade /var/log/
cloud-init.log a los registros de cola.
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/log/cloud-init.log
Agregue este texto a un archivo que tenga la extensión de nombre de archivo .config en el paquete de
código fuente dentro de una carpeta llamada .ebextensions.
~/workspace/my-app
|-- .ebextensions
| `-- tail-logs.config
|-- index.php
`-- styles.css
461
AWS Elastic Beanstalk Developer Guide
Streaming de archivos de registro
a Amazon CloudWatch Logs
En las plataformas Linux también puede utilizar caracteres comodín en las configuraciones de tareas de
registro. Este archivo de configuración agrega todos los archivos con la extensión de nombre de archivo
.log de la carpeta log de la raíz de la aplicación a los logs de paquete.
files:
"/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/log/*.log
Note
Las configuraciones de tarea de registro no admiten comodines en las plataformas de Windows.
Para obtener más información sobre cómo usar archivos de configuración, consulte Personalización
avanzada de entornos con archivos de configuración (.ebextensions) (p. 320).
De forma parecida a la ampliación de registros de finalización y los registros de paquete, puede ampliar
lo rotación de registros con un archivo de configuración. Siempre que Elastic Beanstalk rota sus propios
registros y los carga en Amazon S3, también rota y carga los registros adicionales. La extensión de
rotación de registros se comporta de forma distinta en función del sistema operativo de la plataforma. En
las siguientes secciones se describen los dos casos.
Elastic Beanstalk carga todas las versiones de un archivo de registro base excepto la más reciente, ya que
considera que es le archivo de registro de aplicación activo, que podría estar bloqueado. Por lo tanto, la
aplicación puede mantener el archivo de registro bloqueado entre las rotaciones.
462
AWS Elastic Beanstalk Developer Guide
Streaming de archivos de registro
a Amazon CloudWatch Logs
instancia del entorno transmite los logs a un grupo que se puede configurar para que se mantenga durante
semanas o años, incluso después de que el entorno haya terminado.
El conjunto de registros transmitidos varía en función del entorno, pero siempre incluye los registros eb-
activity.log y de acceso del servidor proxy de nginx o Apache que se ejecuta delante de la aplicación.
El siguiente archivo de configuración (p. 320) habilita la transmisión de registros con 180 días de retención,
incluso si el entorno ha terminado.
Example .ebextensions/log-streaming.config
option_settings:
aws:elasticbeanstalk:cloudwatch:logs:
StreamLogs: true
DeleteOnTerminate: false
RetentionInDays: 180
463
AWS Elastic Beanstalk Developer Guide
Información general sobre la arquitectura
Temas
• Información general sobre la arquitectura (p. 464)
• Uso de Elastic Beanstalk con Amazon CloudFront (p. 465)
• Registro de llamadas a la API de Elastic Beanstalk con AWS CloudTrail (p. 466)
• Uso de Elastic Beanstalk con Amazon CloudWatch (p. 467)
• Uso de Elastic Beanstalk con Amazon CloudWatch Logs (p. 468)
• Búsqueda y seguimiento de recursos de Elastic Beanstalk con AWS Config (p. 478)
• Uso de Elastic Beanstalk con Amazon DynamoDB (p. 483)
• Uso de Elastic Beanstalk con Amazon ElastiCache (p. 484)
• Uso de Elastic Beanstalk con Amazon Elastic File System (p. 484)
• Uso de Elastic Beanstalk con AWS Identity and Access Management (p. 486)
• Uso de Elastic Beanstalk con Amazon Relational Database Service (p. 548)
• Uso de Elastic Beanstalk con Amazon S3 (p. 559)
• Uso de Elastic Beanstalk con Amazon Virtual Private Cloud (p. 562)
464
AWS Elastic Beanstalk Developer Guide
CloudFront
Para planificar la tolerancia a errores, se recomienda tener N+1 instancias Amazon EC2 y distribuir sus
instancias en varias zonas de disponibilidad. En el caso improbable de que una zona de disponibilidad deje
de funcionar, el resto de las instancias Amazon EC2 se ejecutarán en otra zona de disponibilidad. Puede
ajustar Amazon EC2 Auto Scaling para permitir un número mínimo de instancias, así como varias zonas de
disponibilidad. Para obtener instrucciones al respecto, consulte Grupo de Auto Scaling para el entorno de
AWS Elastic Beanstalk (p. 183). Para obtener más información sobre la creación de aplicaciones tolerantes
a errores, consulte Building Fault-Tolerant Applications on AWS.
En las secciones siguientes se explica de forma más detallada la integración con Amazon CloudFront,
Amazon CloudWatch, Amazon DynamoDB, Amazon ElastiCache, Amazon RDS, Amazon Route 53,
Amazon Simple Storage Service, Amazon VPC e IAM.
Una vez que haya creado e implementado la aplicación de Elastic Beanstalk, podrá inscribirse en
CloudFront y empezar a utilizar CloudFront para distribuir contenido. Para obtener más información sobre
CloudFront, consulte la Guía para desarrolladores de Amazon CloudFront.
465
AWS Elastic Beanstalk Developer Guide
Registro de llamadas a la API de
Elastic Beanstalk con AWS CloudTrail
Para obtener más información sobre CloudTrail, consulte la AWS CloudTrail User Guide.
Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de Elastic
Beanstalk, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar
archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro
de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones. El registro de
seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de
registro al bucket de Amazon S3 especificado. También puede configurar otros servicios de AWS para
analizar y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para
obtener más información, consulte:
Todas las acciones de Elastic Beanstalk las registra CloudTrail y están documentadas en la AWS
Elastic Beanstalk API Reference. Por ejemplo, las llamadas a las acciones DescribeApplications,
UpdateEnvironment y ListTagsForResource generan entradas en los archivos de registro de
CloudTrail.
Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La información
de identidad del usuario le ayuda a determinar lo siguiente:
466
AWS Elastic Beanstalk Developer Guide
Descripción de las entradas de archivos
de registro de Elastic Beanstalk
En el ejemplo siguiente se muestra una entrada de registro de CloudTrail que ilustra la acción
UpdateEnvironment llamada por un usuario de IAM con el nombre intern para el entorno sample-
env en la aplicación sample-app.
{
"Records": [{
"eventVersion": "1.05",
"userIdentity": {
"type": "IAMUser",
"principalId": "AIXDAYQEXAMPLEUMLYNGL",
"arn": "arn:aws:iam::123456789012:user/intern",
"accountId": "123456789012",
"accessKeyId": "ASXIAGXEXAMPLEQULKNXV",
"userName": "intern",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2016-04-22T00:23:24Z"
}
},
"invokedBy": "signin.amazonaws.com"
},
"eventTime": "2016-04-22T00:24:14Z",
"eventSource": "elasticbeanstalk.amazonaws.com",
"eventName": "UpdateEnvironment",
"awsRegion": "us-west-2",
"sourceIPAddress": "255.255.255.54",
"userAgent": "signin.amazonaws.com",
"requestParameters": {
"applicationName": "sample-app",
"environmentName": "sample-env",
"optionSettings": []
},
"responseElements": null,
"requestID": "84ae9ecf-0280-17ce-8612-705c7b132321",
"eventID": "e48b6a08-c6be-4a22-99e1-c53139cbfb18",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
}]
}
467
AWS Elastic Beanstalk Developer Guide
CloudWatch Logs
CloudWatch para recopilar métricas sobre sus recursos de Amazon Web Services (AWS), como el
desempeño de las instancias Amazon EC2. También puede publicar sus propias métricas directamente
en Amazon CloudWatch. Las alarmas de Amazon CloudWatch le ayudan a aplicar sus decisiones más
fácilmente al permitirle enviar notificaciones o realizar cambios automáticamente en los recursos que
monitoriza en función de las reglas que defina. Por ejemplo, puede crear alarmas que inicien acciones de
Amazon EC2 Auto Scaling y Amazon Simple Notification Service (Amazon SNS) en su nombre. Elastic
Beanstalk utiliza automáticamente Amazon CloudWatch para ayudarle a monitorizar el estado de la
aplicación y del entorno. Puede ir a la consola de Amazon CloudWatch para ver el panel y obtener una
visión general de todos los recursos, así como las alarmas. También puede elegir ver más métricas o
añadir métricas personalizadas. Para obtener más información acerca de Amazon CloudWatch, consulte
la Guía para desarrolladores de Amazon CloudWatch. Si desea ver un ejemplo de cómo usar Amazon
CloudWatch con Elastic Beanstalk, consulte Ejemplo: Uso de métricas personalizadas de Amazon
CloudWatch (p. 333).
Además de los registros de instancias, si habilita el estado mejorado (p. 416) de su entorno, puede
configurar dicho entorno para que realice el streaming de la información de estado a CloudWatch Logs.
Consulte Streaming del estado del entorno de Elastic Beanstalk a Amazon CloudWatch Logs (p. 476).
468
AWS Elastic Beanstalk Developer Guide
CloudWatch Logs
En la figura siguiente se muestran la página Alarms (Alarmas) y los gráficos de las alarmas de ejemplo
AWSEBCWLHttp4xxPercentAlarm y AWSEBCWLHttp5xxCountAlarm correspondientes a las métricas
CWLHttp4xx y CWLHttp5xx, respectivamente.
469
AWS Elastic Beanstalk Developer Guide
Requisitos previos para el streaming de
registros de instancias a CloudWatch Logs
Temas
• Requisitos previos para el streaming de registros de instancias a CloudWatch Logs (p. 470)
• Cómo Elastic Beanstalk configura CloudWatch Logs (p. 471)
• Streaming de logs de instancias a CloudWatch Logs (p. 473)
• Solución de problemas de la integración de CloudWatch Logs (p. 476)
• Streaming del estado del entorno de Elastic Beanstalk a Amazon CloudWatch Logs (p. 476)
• Plataforma: como esta característica solo está disponible en las versiones de plataforma publicadas en
esta versión o posteriormente, si utiliza una versión de plataforma anterior, actualice su entorno a uno
actual.
470
AWS Elastic Beanstalk Developer Guide
Cómo Elastic Beanstalk configura CloudWatch Logs
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream"
],
"Resource": [
"*"
]
}
]
}
Al habilitar el streaming de registros de instancias a CloudWatch Logs, Elastic Beanstalk envía archivos
de registro desde las instancias de su entorno a CloudWatch Logs. Las distintas plataformas transmiten
registros diferentes. En la siguiente tabla se muestran los registros por plataforma.
Plataforma Registros
Docker • /var/log/eb-activity.log
• /var/log/nginx/error.log
• /var/log/docker-events.log
• /var/log/docker
• /var/log/nginx/access.log
• /var/log/eb-docker/containers/eb-current-app/stdouterr.log
Multi-Docker(generic) • /var/log/eb-activity.log
• /var/log/ecs/ecs-init.log
• /var/log/eb-ecs-mgr.log
• /var/log/ecs/ecs-agent.log
• /var/log/docker-events.log
Go (Preconfigured • /var/log/eb-activity.log
Docker) • /var/log/nginx/error.log
• /var/log/docker-events.log
471
AWS Elastic Beanstalk Developer Guide
Cómo Elastic Beanstalk configura CloudWatch Logs
Plataforma Registros
• /var/log/docker
• /var/log/nginx/access.log
Go • /var/log/eb-activity.log
• /var/log/nginx/error.log
• /var/log/nginx/access.log
Java • /var/log/eb-activity.log
• /var/log/nginx/access.log
• /var/log/nginx/error.log
• /var/log/web-1.error.log
• /var/log/web-1.log
Tomcat • /var/log/eb-activity.log
• /var/log/httpd/error_log
• /var/log/httpd/access_log
• /var/log/nginx/error_log
• /var/log/nginx/access_log
Node.js • /var/log/eb-activity.log
• /var/log/nodejs/nodejs.log
• /var/log/nginx/error.log
• /var/log/nginx/access.log
• /var/log/httpd/error.log
• /var/log/httpd/access.log
PHP • /var/log/eb-activity.log
• /var/log/httpd/error_log
• /var/log/httpd/access_log
Python • /var/log/eb-activity.log
• /var/log/httpd/error_log
• /var/log/httpd/access_log
• /opt/python/log/supervisord.log
472
AWS Elastic Beanstalk Developer Guide
Streaming de logs de instancias a CloudWatch Logs
Plataforma Registros
Elastic Beanstalk configura los grupos de registros en CloudWatch Logs para los distintos archivos de
registro de los que realiza el streaming. Para recuperar determinados archivos de log de CloudWatch Logs,
tiene que conocer el nombre del grupo de logs correspondiente. El esquema de nomenclatura del grupo de
logs depende del sistema operativo de la plataforma.
Antes de habilitarlo, configure los permisos de IAM que se van a utilizar con el agente de CloudWatch
Logs. Puede asociar la siguiente política personalizada al perfil de instancia (p. 23) que asigna a su
entorno.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
473
AWS Elastic Beanstalk Developer Guide
Streaming de logs de instancias a CloudWatch Logs
"logs:GetLogEvents",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutRetentionPolicy"
],
"Resource": [
"*"
]
}
]
}
El ejemplo de la siguiente figura guarda los registros durante siete días y los mantiene después de terminar
el entorno.
474
AWS Elastic Beanstalk Developer Guide
Streaming de logs de instancias a CloudWatch Logs
También puede usar eb logs para recuperar registros de CloudWatch Logs. Puede recuperar todos los
registros de instancias del entorno o utilizar las numerosas opciones del comando para especificar los
subconjuntos de registros que se recuperarán. Por ejemplo, el siguiente comando recupera el conjunto
completo de registros de instancias correspondientes a su entorno y los guarda en un directorio en
.elasticbeanstalk/logs.
$ eb logs --all
option_settings:
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: StreamLogs
value: true
Para obtener más información acerca de la configuración de CloudWatch Logs, consulte la Referencia de
agente de CloudWatch Logs en la Amazon CloudWatch Logs User Guide.
475
AWS Elastic Beanstalk Developer Guide
Solución de problemas de la
integración de CloudWatch Logs
Cuando cambia el estado del entorno, Elastic Beanstalk agrega un registro a la secuencia de registro de
estado. El registro representa la transición del estado: el nuevo estado y una descripción de la causa del
cambio. Por ejemplo, el estado de un entorno podría cambiar a grave porque el balanceador de carga tiene
un error. Para obtener una descripción de los estados mejorados, consulte Colores y estados (p. 431).
• Plataforma: debe utilizar una versión de plataforma que sea compatible con los informes de estado
mejorados.
• Permisos: debe conceder determinados permisos relacionados con el registro a Elastic Beanstalk, para
que pueda actuar en su nombre para realizar el streaming de la información de estado de su entorno.
Si su entorno no usa un rol de servicio que haya creado Elastic Beanstalk, aws-elasticbeanstalk-
service-role, o el rol vinculado al servicio de la cuenta, AWSServiceRoleForElasticBeanstalk,
asegúrese de agregar los siguientes permisos a su rol de servicio personalizado.
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*:log-stream:*"
}
476
AWS Elastic Beanstalk Developer Guide
Streaming del estado del entorno
El ejemplo de la siguiente figura guarda los registros durante siete días y los mantiene después de terminar
el entorno.
477
AWS Elastic Beanstalk Developer Guide
AWS Config
También puede usar eb logs para recuperar registros de CloudWatch Logs. Por ejemplo, el siguiente
comando recupera todos los registros de estado correspondientes a su entorno y los guarda en un
directorio en .elasticbeanstalk/logs.
############################################################################
## Sets up Elastic Beanstalk to stream environment health information
## to Amazon CloudWatch Logs.
## Works only for environments that have enhanced health reporting enabled.
############################################################################
option_settings:
aws:elasticbeanstalk:cloudwatch:logs:health:
HealthStreamingEnabled: true
### Settings below this line are optional.
# DeleteOnTerminate: Delete the log group when the environment is
# terminated. Default is false. If false, the health data is kept
# RetentionInDays days.
DeleteOnTerminate: false
# RetentionInDays: The number of days to keep the archived health data
# before it expires, if DeleteOnTerminate isn't set. Default is 7 days.
RetentionInDays: 30
Para conocer los valores predeterminados de las opciones y los valores válidos, consulte
aws:elasticbeanstalk:cloudwatch:logs:health (p. 287).
478
AWS Elastic Beanstalk Developer Guide
Configuración de AWS Config
Hay varios tipos de recursos de Elastic Beanstalk que se integran con AWS Config:
• Aplicaciones
• Versiones de aplicaciones
• Entornos
En la siguiente sección se muestra cómo configurar AWS Config para registrar los recursos de estos tipos.
Para obtener más información sobre AWS Config, consulte AWS Config Developer Guide. Para obtener
información acerca de los precios, consulte la página de información sobre precios de AWS Config.
En la figura siguiente se muestra la página Settings (Configuración) de AWS Config con los tipos
de recursos de Elastic Beanstalk que puede registrar, si lo desea: Application, ApplicationVersion y
Environment.
479
AWS Elastic Beanstalk Developer Guide
Visualización de los detalles de configuración de
Elastic Beanstalk en la consola de AWS Config
Después de seleccionar algunos tipos de recursos, la lista Specific types (Tipos específicos) tiene este
aspecto.
Para obtener más información acerca de los recursos regionales y globales, así como el procedimiento de
personalización completo, consulte Selección de los recursos que debe registrar AWS Config.
Para ver detalles de configuración de otros recursos que Elastic Beanstalk ha creado para
su aplicación, elija otros tipos de recursos. Por ejemplo, puede elegir Instance (Instancia) en
EC2.
5. Elija Look up. Consulte 2 en la figura siguiente.
480
AWS Elastic Beanstalk Developer Guide
Visualización de los detalles de configuración de
Elastic Beanstalk en la consola de AWS Config
AWS Config muestra los detalles de configuración y otra información sobre el recurso que ha seleccionado.
481
AWS Elastic Beanstalk Developer Guide
Visualización de los detalles de configuración de
Elastic Beanstalk en la consola de AWS Config
Para ver todos los detalles de la configuración registrada, elija View Details.
482
AWS Elastic Beanstalk Developer Guide
Evaluación de recursos de Elastic
Beanstalk con reglas de AWS Config
Para conocer otras maneras de buscar un recurso y ver información en esta página, consulte Visualización
de historial y configuraciones de recursos de AWS en la AWS Config Developer Guide.
Si un recurso infringe una regla y se marca como no conforme, AWS Config le puede alertar mediante un
tema de Amazon Simple Notification Service (Amazon SNS). Si desea consumir mediante programación
los datos de estas alertas de AWS Config, utilice una cola de Amazon Simple Queue Service (Amazon
SQS) como punto de enlace de notificación para el tema de Amazon SNS. Por ejemplo, es posible que
desee escribir un código que inicie un flujo de trabajo cuando alguien modifique la configuración de grupo
de Auto Scaling del entorno.
Para obtener más información acerca de cómo configurar y utilizar reglas, consulte Evaluación de recursos
con reglas de AWS Config en la AWS Config Developer Guide.
Si utiliza tareas periódicas (p. 168) en un entorno de trabajo, Elastic Beanstalk crea una tabla de
DynamoDB y la utiliza para elegir las instancias principales y guardar información sobre la tarea. Cada
instancia del entorno intenta escribir en la tabla cada pocos segundos para convertirse en la instancia
principal y realiza la tarea de acuerdo con la programación.
Puede utilizar archivos de configuración (p. 320) si desea crear una tabla de DynamoDB para la aplicación.
Consulte eb-node-express-sample en GitHub para obtener una aplicación de Node.js de ejemplo en la que
se crea una tabla con un archivo de configuración y se establece conexión con AWS SDK for JavaScript in
Node.js. Para ver un procedimiento de ejemplo en el que se usa DynamoDB con PHP, consulte Ejemplo:
DynamoDB, CloudWatch y SNS (p. 356). Para ver un ejemplo en el que se utiliza AWS SDK for Java,
consulte Administración del estado de la sesión de Tomcat con DynamoDB en la documentación de AWS
SDK for Java.
Al crear una tabla de DynamoDB con los archivos de configuración, la tabla no está vinculada con el ciclo
de vida de dicho entorno y no se elimina cuando se termina el entorno. Para garantizar que la información
personal no se retiene innecesariamente, elimine los registros que ya no necesite o elimine la tabla.
Para obtener más información sobre DynamoDB, consulte la Guía para desarrolladores de DynamoDB.
483
AWS Elastic Beanstalk Developer Guide
ElastiCache
1. Cree un clúster de ElastiCache. Para obtener instrucciones sobre cómo crear un clúster de
ElastiCache, consulte Crear un clúster de caché en la Guía de introducción de Amazon ElastiCache.
2. Configure el grupo de seguridad de ElastiCache para permitir el acceso desde el grupo de seguridad
de Amazon EC2 que se utiliza en la aplicación de Elastic Beanstalk. Para obtener instrucciones sobre
cómo encontrar el nombre de su grupo de seguridad de EC2 mediante la consola de administración
de AWS, consulte Grupos de seguridad (p. 182) en la página del documento de instancias EC2.
Para obtener más información, visite Autorización de acceso en la Guía de introducción de Amazon
ElastiCache.
Puede utilizar archivos de configuración para personalizar su entorno de Elastic Beanstalk para utilizar
ElastiCache. Para ver ejemplos de archivos de configuración que integren ElastiCache con Elastic
Beanstalk, consulte Fragmentos de ejemplo: ElastiCache (p. 349).
En un entorno de Elastic Beanstalk, puede utilizar Amazon EFS para crear un directorio compartido que
almacene los archivos cargados o modificados por los usuarios de la aplicación. Su aplicación puede tratar
un volumen de Amazon EFS montado como almacenamiento local, lo que elimina la necesidad de cambiar
el código de la aplicación para ampliar el número de instancias.
Para obtener más información acerca de Amazon EFS, consulte la Guía del usuario de Amazon Elastic File
System.
Secciones
• Archivos de configuración (p. 485)
• Sistemas de archivos cifrados (p. 485)
• Aplicaciones de ejemplo (p. 485)
• Limpieza de sistemas de archivos (p. 486)
484
AWS Elastic Beanstalk Developer Guide
Archivos de configuración
Archivos de configuración
Elastic Beanstalk proporciona archivos de configuración (p. 320) que puede utilizar para crear y montar
sistemas de archivos de Amazon EFS. Puede crear un volumen de Amazon EFS como parte de su entorno
o montar un volumen de Amazon EFS que haya creado de manera independiente de Elastic Beanstalk.
Los recursos que crea con archivos de configuración se asocian al ciclo de vida de su entorno y
se perderán si termina su entorno o elimina el archivo de configuración.
• storage-efs-mountfilesystem.config: monte un sistema de archivos de Amazon EFS en una ruta local
de las instancias de su entorno. Puede crear el volumen como parte del entorno con storage-efs-
createfilesystem.config o crear un volumen externo a su entorno mediante la consola de Amazon
EFS, la CLI de AWS o el SDK de AWS.
Para utilizar archivos de configuración, empiece creando el sistema de archivos de Amazon EFS con
storage-efs-createfilesystem.config. Siga las instrucciones del archivo de configuración y
añádalo al directorio .ebextensions (p. 320) del código fuente para crear el sistema de archivos en su VPC.
Implemente su código fuente actualizado en su entorno de Elastic Beanstalk para confirmar que el sistema
de archivos se crea correctamente. A continuación, añada storage-efs-mountfilesystem.config
para montar el sistema de archivos en las instancias de su entorno. Si realiza esta operación en dos
implementaciones distintas se asegurará de que si la operación de montaje produce un error, el sistema de
archivos quede intacto. Si la realiza en la misma implementación, un problema con algún paso hará que el
sistema de archivos termine cuando se produzca un error en la implementación.
Aplicaciones de ejemplo
Elastic Beanstalk también ofrece aplicaciones de ejemplo que utiliza Amazon EFS para el almacenamiento
compartido. Los dos proyectos son archivos de configuración que puede utilizar con un instalador estándar
de WordPress o Drupal para ejecutar un blog u otro sistema de administración de contenido en un entorno
con balanceo de carga. Cuando un usuario carga una foto u otro contenido multimedia, este se almacena
en un sistema de archivos de Amazon EFS, lo que evita la necesidad de utilizar un complemento para
almacenar archivos cargados en Amazon S3.
• Load Balanced WordPress: archivos de configuración para instalar WordPress de forma segura y
ejecutarlo en un entorno de Elastic Beanstalk con balanceo de carga.
• Load Balanced Drupal: archivos de configuración e instrucciones para instalar Drupal de forma segura y
ejecutarlo en un entorno de Elastic Beanstalk con balanceo de carga.
485
AWS Elastic Beanstalk Developer Guide
Limpieza de sistemas de archivos
Además, si creó un sistema de archivos Amazon EFS fuera de un entorno de Elastic Beanstalk y lo
montó en las instancias del entorno, tenga en cuenta que Elastic Beanstalk no elimina el sistema de
archivos cuando termine el entorno. Para asegurarse de que la información personal no se conserva
innecesariamente, elimine los archivos que almacenó su aplicación si ya no los necesita o elimine el
sistema de archivos.
Para obtener información general sobre los permisos, consulte Roles de servicio, perfiles de instancia y
políticas de usuario (p. 22). En la mayoría de los entornos, el rol de servicio y el perfil de instancia que
la Consola de administración de AWS le pide que cree cuando inicia el primer entorno tienen todos los
permisos necesarios. Del mismo modo, las políticas administradas (p. 502) que proporciona Elastic
Beanstalk para obtener acceso completo y acceso de solo lectura contienen todos los permisos que
necesita el usuario para su uso diario.
Temas
• Administración de perfiles de instancias de Elastic Beanstalk (p. 486)
• Administración de roles de servicio de Elastic Beanstalk (p. 491)
• Uso de funciones vinculadas a servicios en Elastic Beanstalk (p. 496)
• Control del acceso a Elastic Beanstalk (p. 502)
• Formato de Nombre de recurso de Amazon para Elastic Beanstalk (p. 509)
• Recursos y condiciones para acciones de Elastic Beanstalk (p. 510)
• Uso de etiquetas para controlar el acceso a recursos de Elastic Beanstalk (p. 535)
• Políticas de ejemplo basadas en políticas administradas (p. 538)
• Políticas de ejemplo basadas en permisos de recursos (p. 541)
486
AWS Elastic Beanstalk Developer Guide
Perfiles de instancias
Elastic Beanstalk proporciona tres políticas administradas: una para la capa de servidor web, otra para la
capa de trabajo y otra con los permisos adicionales necesarios para entornos Multicontainer Docker. La
consola asigna todas estas políticas al rol adjuntado al perfil de instancia predeterminado. Las políticas son
las siguientes.
• AWSElasticBeanstalkWebTier: concede permisos para que la aplicación cargue los registros en Amazon
S3 e información de depuración en AWS X-Ray.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
},
{
"Sid": "XRayAccess",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "CloudWatchLogsAccess",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:DescribeLogStreams",
"logs:DescribeLogGroups"
],
"Effect": "Allow",
"Resource": [
"arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MetricsAccess",
487
AWS Elastic Beanstalk Developer Guide
Perfiles de instancias
"Action": [
"cloudwatch:PutMetricData"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "XRayAccess",
"Action":[
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "QueueAccess",
"Action": [
"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
},
{
"Sid": "DynamoPeriodicTasks",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem"
],
"Effect": "Allow",
"Resource": [
"arn:aws:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*"
]
},
{
"Sid": "CloudWatchLogsAccess",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream"
],
"Effect": "Allow",
"Resource": [
"arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
]
488
AWS Elastic Beanstalk Developer Guide
Perfiles de instancias
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECSAccess",
"Effect": "Allow",
"Action": [
"ecs:Poll",
"ecs:StartTask",
"ecs:StopTask",
"ecs:DiscoverPollEndpoint",
"ecs:StartTelemetrySession",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:Submit*"
],
"Resource": "*"
}
]
}
Para permitir que las instancias EC2 del entorno asuman el rol aws-elasticbeanstalk-ec2-role,
el perfil de instancia especifica Amazon EC2; como una entidad de confianza en la política de relación de
confianza, de la siguiente manera.
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Para personalizar los permisos, puede añadir políticas al rol asociado al perfil de instancia predeterminado
o crear su propio perfil de instancia con un conjunto restringido de permisos.
Secciones
• Verificación de los permisos asignados al perfil de instancia predeterminado (p. 490)
• Actualización de un perfil de instancia predeterminado obsoleto (p. 490)
• Añadir permisos al perfil de instancia predeterminado (p. 490)
• Creación de un perfil de instancia (p. 491)
489
AWS Elastic Beanstalk Developer Guide
Perfiles de instancias
También puede añadir las políticas administradas al rol adjuntado al perfil de instancia predeterminado
manualmente.
• AWSElasticBeanstalkWebTier
• AWSElasticBeanstalkWorkerTier
• AWSElasticBeanstalkMulticontainerDocker
490
AWS Elastic Beanstalk Developer Guide
Roles de servicio
Elastic Beanstalk debe utilizar las credenciales de seguridad temporales cada vez que asume un rol de
servicio. Para obtener estas credenciales, Elastic Beanstalk envía una solicitud a AWS Security Token
Service (AWS STS) en un punto de enlace global. Para obtener más información, consulte Credenciales de
seguridad temporales en la .
Cuando lanza un entorno en la Consola de Elastic Beanstalk, la consola crea un rol de servicio
predeterminado, denominado aws-elasticbeanstalk-service-role y le asigna políticas
administradas con permisos predeterminados.
Elastic Beanstalk proporciona una política administrada para la monitorización del estado
mejorada (p. 416) y otra con los permisos adicionales necesarios para las actualizaciones de plataforma
administradas (p. 154). La consola asigna ambas políticas al rol de servicio predeterminado. A
continuación se indican las políticas de rol de servicio administradas.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
491
AWS Elastic Beanstalk Developer Guide
Roles de servicio
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetHealth",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:GetConsoleOutput",
"ec2:AssociateAddress",
"ec2:DescribeAddresses",
"ec2:DescribeSecurityGroups",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeNotificationConfigurations",
"sns:Publish"
],
"Resource": [
"*"
]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudformationOperationsOnElasticBeanstalkStacks",
"Effect": "Allow",
"Action": [
"cloudformation:*"
],
"Resource": [
"arn:aws:cloudformation:*:*:stack/awseb-*",
"arn:aws:cloudformation:*:*:stack/eb-*"
]
},
{
"Sid": "AllowS3OperationsOnElasticBeanstalkBuckets",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
},
{
"Sid": "AllowOperations",
"Effect": "Allow",
"Action": [
"autoscaling:AttachInstances",
"autoscaling:CreateAutoScalingGroup",
"autoscaling:CreateLaunchConfiguration",
"autoscaling:DeleteLaunchConfiguration",
"autoscaling:DeleteAutoScalingGroup",
"autoscaling:DeleteScheduledAction",
"autoscaling:DescribeAccountLimits",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
492
AWS Elastic Beanstalk Developer Guide
Roles de servicio
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeLoadBalancers",
"autoscaling:DescribeNotificationConfigurations",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeScheduledActions",
"autoscaling:DetachInstances",
"autoscaling:PutScheduledUpdateGroupAction",
"autoscaling:ResumeProcesses",
"autoscaling:SetDesiredCapacity",
"autoscaling:SuspendProcesses",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"autoscaling:UpdateAutoScalingGroup",
"cloudwatch:PutMetricAlarm",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup",
"ec2:DescribeAccountAttributes",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeKeyPairs",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:TerminateInstances",
"ecs:CreateCluster",
"ecs:DeleteCluster",
"ecs:DescribeClusters",
"ecs:RegisterTaskDefinition",
"elasticbeanstalk:*",
"elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
"elasticloadbalancing:ConfigureHealthCheck",
"elasticloadbalancing:CreateLoadBalancer",
"elasticloadbalancing:DeleteLoadBalancer",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetHealth",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"iam:ListRoles",
"iam:PassRole",
"logs:CreateLogGroup",
"logs:PutRetentionPolicy",
"rds:DescribeDBInstances",
"rds:DescribeOrderableDBInstanceOptions",
"s3:CopyObject",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectMetadata",
"s3:ListBucket",
"s3:listBuckets",
"s3:ListObjects",
"sns:CreateTopic",
"sns:GetTopicAttributes",
"sns:ListSubscriptionsByTopic",
"sns:Subscribe",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl"
],
"Resource": [
"*"
]
}
]
493
AWS Elastic Beanstalk Developer Guide
Roles de servicio
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "elasticbeanstalk.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "elasticbeanstalk"
}
}
}
]
}
Al lanzar un entorno mediante el comando the section called “eb create” (p. 622) de la interfaz de línea
de comandos de Elastic Beanstalk (CLI de EB) y no especificar un rol de servicio a través de la opción
--service-role, Elastic Beanstalk crea el rol de servicio predeterminado aws-elasticbeanstalk-
service-role. Si el rol de servicio predeterminado ya existe, Elastic Beanstalk lo utiliza para el entorno
nuevo.
Si crea un entorno mediante la API de Elastic Beanstalk y no especifica un rol de servicio, Elastic
Beanstalk crea un rol vinculado al servicio de monitorización para su cuenta, si no existe todavía, y lo
utiliza para el entorno nuevo. Un rol vinculado a servicio es un tipo único de rol de servicio predefinido por
Elastic Beanstalk y que incluye todos los permisos que el servicio requiere para llamar a otros servicios
de AWS en su nombre. El rol vinculado al servicio asociado con la cuenta. Elastic Beanstalk lo crea una
vez y, a continuación, vuelve a utilizarlo al crear entornos adicionales. También puede utilizar IAM para
crear su rol vinculado al servicio de monitorización de la cuenta con antelación. Cuando su cuenta tiene
un rol vinculado al servicio de monitorización, puede utilizarlo para crear un entorno mediante la API de
Elastic Beanstalk, la Consola de Elastic Beanstalk o la CLI de EB. Para obtener información sobre el uso
de roles vinculados a un servicio con entornos de Elastic Beanstalk, consulte Uso de funciones vinculadas
a servicios en Elastic Beanstalk (p. 496).
Note
Cuando Elastic Beanstalk intenta crear un rol vinculado al servicio de monitorización para su
cuenta al crear un entorno, debe tener el permiso iam:CreateServiceLinkedRole. Si no tiene
este permiso, se produce un error en la creación del entorno y verá un mensaje que explica el
problema.
Como alternativa, otro usuario con permiso para crear roles vinculados a servicios puede utilizar
IAM para crear el rol vinculado al servicio con antelación. A continuación, puede crear su entorno
incluso sin tener el permiso iam:CreateServiceLinkedRole.
494
AWS Elastic Beanstalk Developer Guide
Roles de servicio
También puede añadir las políticas administradas al rol de servicio predeterminado manualmente.
• AWSElasticBeanstalkEnhancedHealth
• AWSElasticBeanstalkService
495
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
Puede aplicar el rol de servicio personalizado cuando cree un entorno en el asistente de creación del
entorno (p. 90) o con la opción --service-role del comando eb create (p. 622).
• Monitorización del rol vinculado al servicio – Allows Elastic Beanstalk to monitor the health of running
environments and publish health event notifications.
• Mantenimiento del rol vinculado al servicio – Allows Elastic Beanstalk to perform regular maintenance
activities for your running environments.
Temas
• The Monitoring Service-Linked Role (p. 496)
• The Maintenance Service-Linked Role (p. 500)
Con una función vinculada a servicios, resulta más sencillo configurar Elastic Beanstalk, porque no es
preciso agregar los permisos necesarios manualmente. Elastic Beanstalk define los permisos de las
funciones vinculadas con su propio servicio y, a menos que esté definido de otra manera, solo Elastic
Beanstalk puede asumir sus funciones. Los permisos definidos incluyen las políticas de confianza y de
permisos, y que la política de permisos no se pueda asociar a ninguna otra entidad de IAM.
496
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
Solo puede eliminar una función vinculada a un servicio después de eliminar sus recursos relacionados.
De esta forma, se protegen los recursos de Elastic Beanstalk, ya que se evita que se puedan eliminar
accidentalmente permisos de acceso a los recursos.
Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Servicios
de AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado a
servicio. Seleccione una opción Sí con un enlace para ver la documentación acerca del rol vinculado al
servicio en cuestión.
• elasticbeanstalk.amazonaws.com
La política de permisos del rol vinculado al servicio AWSServiceRoleForElasticBeanstalk contiene todos los
permisos que Elastic Beanstalk necesita para realizar acciones en su nombre:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudformationReadOperationsOnElasticBeanstalkStacks",
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStackResource",
"cloudformation:DescribeStackResources",
"cloudformation:DescribeStacks"
],
"Resource": [
"arn:aws:cloudformation:*:*:stack/awseb-*",
"arn:aws:cloudformation:*:*:stack/eb-*"
]
},
{
"Sid": "AllowOperations",
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeNotificationConfigurations",
"autoscaling:DescribeScalingActivities",
"autoscaling:PutNotificationConfiguration",
"ec2:DescribeInstanceStatus",
"ec2:AssociateAddress",
"ec2:DescribeAddresses",
"ec2:DescribeInstances",
"ec2:DescribeSecurityGroups",
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetHealth",
"elasticloadbalancing:DescribeTargetGroups",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"sns:Publish"
],
"Resource": [
497
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
"*"
]
}
]
}
Debe configurar permisos para permitir a una entidad de IAM (como un usuario, un grupo o un rol) crear,
editar o eliminar la descripción de un rol vinculado a servicio. Para obtener más información, consulte
Permisos de roles vinculados a servicios en la Guía del usuario de IAM.
Para permitir que una entidad de IAM cree el rol vinculado a servicio
Añada la siguiente instrucción a la política de permisos de la entidad de IAM entidad que necesita crear el
rol vinculado a servicio:
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole",
"iam:PutRolePolicy"
],
"Resource": "arn:aws:iam::*:role/aws-service-role//*",
"Condition": {"StringLike": {"iam:AWSServiceName": ""}}
}
Para permitir a una entidad de IAM edite la descripción del rol vinculado a servicio
Añada la siguiente instrucción a la política de permisos de la entidad de IAM que necesita editar la
descripción del rol vinculado a servicio:
{
"Effect": "Allow",
"Action": [
"iam:UpdateRoleDescription"
],
"Resource": "arn:aws:iam::*:role/aws-service-role//*",
"Condition": {"StringLike": {"iam:AWSServiceName": ""}}
}
Añada la siguiente instrucción a la política de permisos de la entidad de IAM entidad que necesita eliminar
un rol vinculado a servicio:
{
"Effect": "Allow",
"Action": [
"iam:DeleteServiceLinkedRole",
"iam:GetServiceLinkedRoleDeletionStatus"
],
"Resource": "arn:aws:iam::*:role/aws-service-role//*",
"Condition": {"StringLike": {"iam:AWSServiceName": ""}}
}
Si lo desea, también puede usar una política administrada por AWS para proporcionar acceso
completo (p. 502) a Elastic Beanstalk.
498
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
Si utilizaba el servicio Elastic Beanstalk antes de September 27, 2017, cuando comenzó a admitir
el rol vinculado al servicio AWSServiceRoleForElasticBeanstalk, y su cuenta lo necesitaba, Elastic
Beanstalk creaba el rol AWSServiceRoleForElasticBeanstalk en su cuenta. Para obtener más
información, consulte A New Role Appeared in My IAM Account (Un nuevo rol ha aparecido en la
cuenta de IAM).
Como alternativa, otro usuario con permiso para crear roles vinculados a servicios puede utilizar IAM
para crear previamente el rol vinculado al servicio con antelación. A continuación, puede crear su entorno
incluso sin tener el permiso iam:CreateServiceLinkedRole.
Usted (u otro usuario) puede utilizar la consola de IAM para crear un rol vinculado al servicio con el caso
de uso Elastic Beanstalk. En la CLI de IAM o la API de IAM, cree un rol vinculado al servicio con el nombre
de servicio elasticbeanstalk.amazonaws.com. Para obtener más información, consulte Crear un
rol vinculado a un servicio en la Guía del usuario de IAM. Si elimina este rol vinculado al servicio, puede
utilizar este mismo proceso para volver a crear el rol.
Si elimina este rol vinculado a servicio y necesita crearlo de nuevo, puede utilizar el mismo proceso para
volver a crear el rol en su cuenta. Al realizar una operación de create an Elastic Beanstalk environment
using the Elastic Beanstalk API and don't specify a service role, Elastic Beanstalk se encarga de volver
crear automáticamente el rol vinculado al servicio.
Para poder utilizar IAM para eliminar un rol vinculado al servicio, primero debe terminar los entornos de
Elastic Beanstalk que utiliza el rol.
Note
Si el servicio Elastic Beanstalk está utilizando el rol cuando intenta terminar los entornos, podría
producirse un error en la finalización. En tal caso, espere unos minutos e intente de nuevo la
operación.
499
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
Consulte eb terminate (p. 660) para obtener detalles sobre la terminación de un entorno de Elastic
Beanstalk mediante la CLI de EB.
Con una función vinculada a servicios, resulta más sencillo configurar Elastic Beanstalk, porque no es
preciso agregar los permisos necesarios manualmente. Elastic Beanstalk define los permisos de las
funciones vinculadas con su propio servicio y, a menos que esté definido de otra manera, solo Elastic
Beanstalk puede asumir sus funciones. Los permisos definidos incluyen las políticas de confianza y de
permisos, y que la política de permisos no se pueda asociar a ninguna otra entidad de IAM.
Solo puede eliminar una función vinculada a un servicio después de eliminar sus recursos relacionados.
De esta forma, se protegen los recursos de Elastic Beanstalk, ya que se evita que se puedan eliminar
accidentalmente permisos de acceso a los recursos.
Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Servicios
de AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado a
servicio. Seleccione una opción Sí con un enlace para ver la documentación acerca del rol vinculado al
servicio en cuestión.
• maintenance.elasticbeanstalk.amazonaws.com
500
AWS Elastic Beanstalk Developer Guide
Uso de funciones vinculadas a servicios
{
"Version": "2012-10-17",
"Statement":
{
"Sid": "AllowCloudformationChangeSetOperationsOnElasticBeanstalkStacks",
"Effect": "Allow",
"Action": [
"cloudformation:CreateChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:DeleteChangeSet",
"cloudformation:ListChangeSets",
"cloudformation:DescribeStacks"
],
"Resource": [
"arn:aws:cloudformation:*:*:stack/awseb-*",
"arn:aws:cloudformation:*:*:stack/eb-*"
]
}
}
Debe configurar permisos para permitir a una entidad de IAM (como un usuario, un grupo o un rol) crear,
editar o eliminar la descripción de un rol vinculado a servicio. Para obtener más información, consulte
Permisos de roles vinculados a servicios en la Guía del usuario de IAM.
Este rol vinculado al servicio puede aparecer en su cuenta si se ha completado una acción
en otro servicio que utilice las características compatibles con este rol. Si utilizaba el servicio
Elastic Beanstalk antes de April 18, 2019, cuando comenzó a admitir el rol vinculado al servicio
AWSServiceRoleForElasticBeanstalkMaintenance, y su cuenta lo necesitaba, Elastic Beanstalk
creaba el rol AWSServiceRoleForElasticBeanstalkMaintenance en su cuenta. Para obtener más
información, consulte A New Role Appeared in My IAM Account (Un nuevo rol ha aparecido en la
cuenta de IAM).
Si elimina este rol vinculado a servicio y necesita crearlo de nuevo, puede utilizar el mismo proceso para
volver a crear el rol en su cuenta. Al realizar una operación de create an Elastic Beanstalk environment
using the Elastic Beanstalk API and don't specify an instance profile, Elastic Beanstalk se encarga de
volver crear automáticamente el rol vinculado al servicio.
501
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
ni mantenga de forma activa. Sin embargo, debe limpiar el rol vinculado al servicio antes de eliminarlo
manualmente.
Para poder utilizar IAM para eliminar un rol vinculado al servicio, primero debe terminar los entornos de
Elastic Beanstalk que utiliza el rol.
Note
Si el servicio Elastic Beanstalk está utilizando el rol cuando intenta terminar los entornos, podría
producirse un error en la finalización. En tal caso, espere unos minutos e intente de nuevo la
operación.
Consulte eb terminate (p. 660) para obtener detalles sobre la terminación de un entorno de Elastic
Beanstalk mediante la CLI de EB.
Puede usar la consola de IAM, la CLI de IAM o la API de IAM para eliminar el rol vinculado al servicio
AWSServiceRoleForElasticBeanstalkMaintenance. Para obtener más información, consulte Eliminar un rol
vinculado a un servicio en la Guía del usuario de IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
502
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
"elasticbeanstalk:*",
"ec2:*",
"ecs:*",
"ecr:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"dynamodb:*",
"rds:*",
"sqs:*",
"logs:*",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:PassRole",
"iam:ListRolePolicies",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListServerCertificates",
"acm:DescribeCertificate",
"acm:ListCertificates",
"codebuild:CreateProject",
"codebuild:DeleteProject",
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:CreateRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-elasticbeanstalk*",
"arn:aws:iam::*:instance-profile/aws-elasticbeanstalk*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/
AWSServiceRoleForAutoScaling*"
],
"Condition": {
"StringLike": {
"iam:AWSServiceName": "autoscaling.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/
AWSServiceRoleForElasticBeanstalk*"
503
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
],
"Condition": {
"StringLike": {
"iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy"
],
"Resource": "*",
"Condition": {
"StringLike": {
"iam:PolicyArn": [
"arn:aws:iam::aws:policy/AWSElasticBeanstalk*",
"arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*"
]
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticbeanstalk:Check*",
"elasticbeanstalk:Describe*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*",
"rds:Describe*",
"sqs:Get*",
"sqs:List*"
],
"Resource": "*"
504
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
}
]
}
Aunque puede restringir la forma en que un usuario interactúa con las API de Elastic Beanstalk,
actualmente no existe ninguna manera eficaz de impedir que los usuarios que tienen permiso
para crear los recursos subyacentes necesarios creen otros recursos en Amazon EC2; y otros
servicios.
Piense en estas políticas como un medio eficaz de distribuir las responsabilidades de Elastic
Beanstalk, no como una forma de proteger todos los recursos subyacentes.
Una política de IAM contiene instrucciones de política que describen los permisos que desea conceder.
Cuando cree una instrucción de política de Elastic Beanstalk, debe saber cómo usar las cuatro partes
siguientes de una instrucción de política:
505
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
elasticbeanstalk:RemoveTags
En las siguientes secciones se muestran algunos casos en los que puede considerar el uso de una política
de usuario personalizada.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid":"CreateEnvironmentPerm",
"Action": [
"elasticbeanstalk:CreateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic
Beanstalk Application/Test*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My First Elastic Beanstalk Application"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First
Release"]
}
}
},
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
La política anterior muestra cómo conceder acceso limitado a las operaciones de Elastic Beanstalk. Para
poder lanzar un entorno, el usuario debe tener también permiso para crear los recursos de AWS que se
utilizan en el entorno. Por ejemplo, la siguiente política concede acceso al conjunto predeterminado de
recursos para un entorno de servidor web:
506
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"ecs:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"sqs:*"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:GetObjectAcl",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::elasticbeanstalk-*"
}
]
}
Note
Para restringir estos permisos únicamente a la ruta de registros, utilice el siguiente formato de
recursos.
"arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/resources/environments/logs/
*"
507
AWS Elastic Beanstalk Developer Guide
Políticas de usuario
Note
La política no deniega el acceso a los recursos a través de otros servicios. Demuestra una forma
eficaz de distribuir responsabilidades para administrar las aplicaciones de Elastic Beanstalk entre
diferentes usuarios, no como una forma de proteger los recursos subyacentes.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:CreateApplication",
"elasticbeanstalk:DeleteApplication"
],
"Resource": [
"*"
]
},
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:CreateConfigurationTemplate",
"elasticbeanstalk:CreateEnvironment",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:DeleteConfigurationTemplate",
"elasticbeanstalk:DeleteEnvironmentConfiguration",
"elasticbeanstalk:DescribeApplicationVersions",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:DescribeConfigurationSettings",
"elasticbeanstalk:DescribeEnvironmentResources",
"elasticbeanstalk:DescribeEnvironments",
"elasticbeanstalk:DescribeEvents",
"elasticbeanstalk:DeleteEnvironmentConfiguration",
"elasticbeanstalk:RebuildEnvironment",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RestartAppServer",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:SwapEnvironmentCNAMEs",
"elasticbeanstalk:TerminateEnvironment",
"elasticbeanstalk:UpdateApplicationVersion",
"elasticbeanstalk:UpdateConfigurationTemplate",
"elasticbeanstalk:UpdateEnvironment",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Resource": [
"*"
],
"Condition": {
"StringNotEquals": {
"elasticbeanstalk:InApplication": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication"
]
}
}
}
]
}
508
AWS Elastic Beanstalk Developer Guide
Formato de ARN
arn:aws:elasticbeanstalk:region:account-id:resource-type/resource-path
Donde:
myApp/myEnvironment
Elastic Beanstalk tiene varios tipos de recursos que puede especificar en una política. La siguiente tabla
muestra el formato de ARN de cada tipo de recurso y un ejemplo.
application arn:aws:elasticbeanstalk:region:account-
id:application/application-name
Ejemplo: arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App
applicationversion
arn:aws:elasticbeanstalk:region:account-
id:applicationversion/application-name/version-label
Ejemplo: arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My Version
configurationtemplate
arn:aws:elasticbeanstalk:region:account-
id:configurationtemplate/application-name/template-name
Ejemplo: arn:aws:elasticbeanstalk:us-
east-2:123456789012:configurationtemplate/My App/My Template
environment arn:aws:elasticbeanstalk:region:account-
id:environment/application-name/environment-name
Ejemplo: arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/MyEnvironment
platform arn:aws:elasticbeanstalk:region:account-id:platform/platform-
name/platform-version
509
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
solutionstack arn:aws:elasticbeanstalk:region::solutionstack/solutionstack-
name
Ejemplo: arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit
Amazon Linux running Tomcat 7
Un entorno, versión de la aplicación y plantilla de configuración siempre están incluidos en una aplicación
específica. Observará que estos recursos tienen un nombre de aplicación en su ruta de recurso para que
se identifiquen inequívocamente por su nombre de recurso y la aplicación que contienen. Aunque las
plantillas de configuración y los entornos utilizan pilas de soluciones, estas pilas no son específicas de una
aplicación o cuenta de AWS y no tienen la aplicación o cuenta de AWS en su ARN.
Las condiciones le permiten especificar permisos a los recursos que necesita la acción para completarse.
Por ejemplo, cuando llama a la acción CreateEnvironment, debe especificar también la versión de
la aplicación que se va a implementar, así como la aplicación que contiene ese nombre de aplicación.
Cuando configura permisos para la acción CreateEnvironment, especifica la aplicación y la
versión de la aplicación en las que desee que actúe la acción con las condiciones InApplication y
FromApplicationVersion.
Además, puede especificar la configuración del entorno con una pila de soluciones
(FromSolutionStack) o una plantilla de configuración (FromConfigurationTemplate). La siguiente
instrucción de política permite que la acción CreateEnvironment cree un entorno con el nombre myenv
(especificado por Resource) en la aplicación My App (especificada por la condición InApplication)
que utilice la versión de la aplicación My Version (FromApplicationVersion) con una configuración
de 32bit Amazon Linux running Tomcat 7 (FromSolutionStack):
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My Version"],
"elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-
east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
}
510
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
}
}
]
}
Note
La mayoría de las claves de condición mencionadas en este tema son específicas de Elastic
Beanstalk y sus nombres contienen el prefijo elasticbeanstalk:. Por cuestiones de brevedad,
omitimos este prefijo de los nombres de clave de condición cuando los mencionamos en las
siguientes secciones. Por ejemplo, mencionamos InApplication en lugar de su nombre
completo elasticbeanstalk:InApplication.
Por el contrario, mencionamos algunas claves de condición utilizadas en los servicios de AWS, e
incluimos su prefijo aws: para destacar la excepción.
Los ejemplos de política siempre muestran los nombres de claves de condición completos,
incluido el prefijo.
Secciones
• Información de políticas para acciones de Elastic Beanstalk (p. 511)
• Claves de condición para acciones de Elastic Beanstalk (p. 533)
Acción: AbortEnvironmentUpdate
aws:TagKeys {
(Opcional) "Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:AbortEnvironmentUpdate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"
]
}
]
}
Acción: CheckDNSAvailability
"*" N/D
{
"Version": "2012-10-17",
"Statement": [
511
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: ComposeEnvironments
Acción: CreateApplication
Acción: CreateApplicationVersion
512
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
applicationversion
InApplication Este ejemplo permite a la acción
CreateApplicationVersion crear versiones de la
aws:RequestTag/ aplicación con el nombre (*) en la aplicación My App:
key-name
(Opcional) {
"Version": "2012-10-17",
aws:TagKeys "Statement": [
(Opcional) {
"Action": [
"elasticbeanstalk:CreateApplicationVersion"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: CreateConfigurationTemplate
513
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
configurationtemplate
InApplication La siguiente política permite que la acción
CreateConfigurationTemplate cree plantillas
FromApplication de configuración cuyos nombres comienzan por My
Template (My Template*) en la aplicación My App.
FromApplicationVersion
{
FromConfigurationTemplate
"Version": "2012-10-17",
"Statement": [
FromEnvironment
{
"Action": [
FromSolutionStack
"elasticbeanstalk:CreateConfigurationTemplate"
aws:RequestTag/ ],
key-name "Effect": "Allow",
(Opcional) "Resource": [
"arn:aws:elasticbeanstalk:us-
aws:TagKeys east-2:123456789012:configurationtemplate/My App/
(Opcional) My Template*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromSolutionStack":
["arn:aws:elasticbeanstalk:us-
east-2::solutionstack/32bit Amazon Linux running
Tomcat 7"]
}
}
}
]
}
Acción: CreateEnvironment
514
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
FromSolutionStack{
"Version": "2012-10-17",
"Statement": [
aws:RequestTag/
{
key-name "Action": [
(Opcional) "elasticbeanstalk:CreateEnvironment"
],
aws:TagKeys "Effect": "Allow",
(Opcional) "Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"],
"elasticbeanstalk:FromSolutionStack":
["arn:aws:elasticbeanstalk:us-
east-2::solutionstack/32bit Amazon Linux running
Tomcat 7"]
}
}
}
]
}
Acción: CreatePlatformVersion
515
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: CreateStorageLocation
"*" N/D
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateStorageLocation"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Acción: DeleteApplication
Acción: DeleteApplicationVersion
516
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
applicationversion
InApplication La siguiente política permite que la acción
DeleteApplicationVersion elimine una versión de la
aws:ResourceTag/ aplicación cuyo nombre sea My Version en la aplicación
key-name My App:
(Opcional)
{
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": [
"elasticbeanstalk:DeleteApplicationVersion"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: DeleteConfigurationTemplate
configurationtemplate
InApplication La siguiente política permite que la acción
(Opcional) DeleteConfigurationTemplate elimine una plantilla
de configuración cuyo nombre sea My Template en
aws:ResourceTag/ la aplicación My App. La especificación del nombre de
key-name aplicación como condición es opcional.
(Opcional)
{
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": [
"elasticbeanstalk:DeleteConfigurationTemplate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:configurationtemplate/My App/
My Template"
]
}
]
}
Acción: DeleteEnvironmentConfiguration
517
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DeleteEnvironmentConfiguration"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
]
}
]
}
Acción: DeletePlatformVersion
Acción: DescribeApplications
518
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: DescribeApplicationVersions
applicationversion
InApplication La siguiente política permite que la acción
(Opcional) DescribeApplicationVersions describa una versión
de la aplicación cuyo nombre sea My Version en la
aws:ResourceTag/ aplicación My App. La especificación del nombre de
key-name aplicación como condición es opcional.
(Opcional)
{
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": [
"elasticbeanstalk:DescribeApplicationVersions"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"
]
}
]
}
Acción: DescribeConfigurationOptions
519
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: DescribeConfigurationSettings
Acción: DescribeEnvironmentHealth
520
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
aws:TagKeys {
(Opcional) "Version": "2012-10-17",
"Statement": [
{
"Action":
"elasticbeanstalk:DescribeEnvironmentHealth",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
]
}
]
}
Acción: DescribeEnvironmentResources
Acción: DescribeEnvironments
521
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: DescribeEvents
environment {
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": "elasticbeanstalk:DescribeEvents",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv",
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: DescribeInstancesHealth
522
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
{
"Version": "2012-10-17",
"Statement": [
{
"Action":
"elasticbeanstalk:DescribeInstancesHealth",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
]
}
]
}
Acción: DescribePlatformVersion
Acción: ListAvailableSolutionStacks
523
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:ListAvailableSolutionStacks"
],
"Effect": "Allow",
"Resource": "arn:aws:elasticbeanstalk:us-
east-2::solutionstack/32bit Amazon Linux running
Tomcat 7"
}
]
}
Acción: ListPlatformVersions
Acción: ListTagsForResource
524
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: RebuildEnvironment
Acción: RequestEnvironmentInfo
525
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: RestartAppServer
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RestartAppServer"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: RetrieveEnvironmentInfo
526
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: SwapEnvironmentCNAMEs
Acción: TerminateEnvironment
527
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
Acción: UpdateApplication
aws:TagKeys {
(Opcional) "Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplication"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"
]
}
]
}
Acción: UpdateApplicationResourceLifecycle
528
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
aws:TagKeys {
(Opcional) "Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplicationResourceLifecycle"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"
]
}
]
}
Acción: UpdateApplicationVersion
applicationversion
InApplication La siguiente política permite que la acción
UpdateApplicationVersion actualice las propiedades
aws:ResourceTag/ de la versión de la aplicación My Version en la aplicación
key-name My App.
(Opcional)
{
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: UpdateConfigurationTemplate
529
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
configurationtemplate
InApplication La siguiente política permite que la acción
UpdateConfigurationTemplate actualice las
aws:ResourceTag/ propiedades u opciones de la plantilla de configuración My
key-name Template en la aplicación My App.
(Opcional)
{
aws:TagKeys "Version": "2012-10-17",
(Opcional) "Statement": [
{
"Action": [
"elasticbeanstalk:UpdateConfigurationTemplate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:configurationtemplate/My App/
My Template"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
Acción: UpdateEnvironment
530
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
aws:ResourceTag/ {
"Version": "2012-10-17",
key-name
"Statement": [
(Opcional) {
"Action": [
aws:TagKeys "elasticbeanstalk:UpdateEnvironment"
(Opcional) ],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My
Version"]
}
}
}
]
}
531
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
platform {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RemoveTags"
],
"Effect": "Deny",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": ["stage"]
}
}
}
]
}
Acción: ValidateConfigurationSettings
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-
east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
532
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
InApplication
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"]
}
}
}
]
}
FromApplicationVersion
Especifica una versión de la aplicación como una dependencia o una restricción en un parámetro de
entrada.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:applicationversion/My App/My Version"]
533
AWS Elastic Beanstalk Developer Guide
Recursos y condiciones
}
}
}
]
}
FromConfigurationTemplate
Especifica una plantilla de configuración como una dependencia o una restricción en un parámetro de
entrada.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromConfigurationTemplate": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:configurationtemplate/My App/My Template"]
}
}
}
]
}
FromEnvironment
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:SwapEnvironmentCNAMEs"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mysrcenv*",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mydestenv*"
],
"Condition": {
"StringNotLike": {
"elasticbeanstalk:FromEnvironment": [
534
AWS Elastic Beanstalk Developer Guide
Control de acceso basado en etiquetas
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/
mysrcenvPROD*",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/
mydestenvPROD*"
]
}
}
}
]
}
FromSolutionStack
Especifica una pila de soluciones como una dependencia o una restricción en un parámetro de
entrada.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateConfigurationTemplate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/
My Template*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-
east-2:123456789012:application/My App"],
"elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-
east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
}
}
}
]
}
Especifique las condiciones basados en etiquetas. Para obtener más información, consulte Uso de
etiquetas para controlar el acceso a recursos de Elastic Beanstalk (p. 535).
535
AWS Elastic Beanstalk Developer Guide
Control de acceso basado en etiquetas
los recursos y las solicitudes. Para obtener información acerca del etiquetado de recursos de Elastic
Beanstalk, consulte Etiquetado de recursos de aplicaciones de AWS Elastic Beanstalk (p. 72). En este
tema se explica el control de acceso basado en etiquetas.
Al diseñar políticas de IAM, es posible que se establezcan permisos detallados mediante la concesión de
acceso a recursos específicos. A medida que crezca la cantidad de recursos que administra, esta tarea
será más complicada. El etiquetado de recursos y uso de etiquetas en las condiciones de declaración
de política pueden facilitar esta tarea. Puede conceder acceso de forma masiva a cualquier recurso con
una determinada etiqueta. A continuación, aplique repetidamente esta etiqueta a los recursos pertinentes
durante la creación o después.
Las etiquetas se pueden asociar al recurso o pasarse dentro de la solicitud a los servicios que admiten
etiquetado. En Elastic Beanstalk, los recursos pueden tener etiquetas y algunas acciones puede incluir
etiquetas. Al crear una política de IAM, puede utilizar las claves de condición de etiqueta para controlar:
• Los usuarios que pueden realizar acciones en un entorno, en función de las etiquetas que ya tiene.
• Las etiquetas que se pueden pasar en la solicitud de una acción.
• Si claves de etiqueta específicas se pueden utilizar en una solicitud.
Para la sintaxis y semántica completas de claves de condición de etiquetas, consulte Control del acceso
mediante etiquetas en la Guía del usuario de IAM.
Los siguientes ejemplos muestran cómo especificar las condiciones de etiqueta en las políticas para los
usuarios de Elastic Beanstalk.
La siguiente política limita esta posibilidad y deniega el permiso a usuarios no autorizados para crear
entornos de producción de Elastic Beanstalk. Para ello, deniega la acción CreateEnvironment si la
solicitud especifica una etiqueta denominada stage con uno de los valores gamma o prod. Además, la
política impide que estos usuarios no autorizados manipulen la fase de los entornos de producción no
permitiendo acciones de modificación de etiquetas para incluir estos mismos valores de etiqueta o para
eliminar la etiqueta stage completamente. El administrador de un cliente debe asociar esta política de IAM
a usuarios de IAM no autorizados, además de la política de usuario administrada.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:CreateEnvironment",
"elasticbeanstalk:AddTags"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/stage": ["gamma", "prod"]
}
}
},
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:RemoveTags"
],
536
AWS Elastic Beanstalk Developer Guide
Control de acceso basado en etiquetas
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": ["stage"]
}
}
}
]
}
La siguiente política deniega permiso a usuarios no autorizados para realizar acciones en entornos de
producción de Elastic Beanstalk. Para ello, deniega acciones específicas si el entorno tiene una etiqueta
denominada stage con uno de los valores gamma o prod. El administrador de un cliente debe asociar
esta política de IAM a usuarios de IAM no autorizados, además de la política de usuario administrada.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:AddTags",
"elasticbeanstalk:RemoveTags",
"elasticbeanstalk:DescribeEnvironments",
"elasticbeanstalk:TerminateEnvironment",
"elasticbeanstalk:UpdateEnvironment",
"elasticbeanstalk:ListTagsForResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/stage": ["gamma", "prod"]
}
}
}
]
}
La política siguiente concede a los usuarios permiso para crear aplicaciones de desarrollo de Elastic
Beanstalk.
Para ello, permite las acciones CreateApplication y AddTags si la solicitud especifica una etiqueta
denominada stage con el valor development. La condición aws:TagKeys garantiza que el usuario no
pueda añadir otras claves de etiqueta. En particular, garantiza la distinción entre mayúsculas y minúsculas
de la clave de etiqueta stage. Tenga en cuenta que esta política es útil para los usuarios de IAM que no
tienen la política de usuario administrada AWSElasticBeanstalkFullAccess de Elastic Beanstalk. La política
administrada proporciona a los usuarios permisos ilimitados para realizar cualquier acción de Elastic
Beanstalk en cualquier recurso.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
537
AWS Elastic Beanstalk Developer Guide
Ejemplos de políticas
"Action": [
"elasticbeanstalk:CreateApplication",
"elasticbeanstalk:AddTags"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/stage": "development"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": ["stage"]
}
}
}
]
}
La siguiente política concede a los usuarios permiso para realizar acciones sobre aplicaciones de
desarrollo de Elastic Beanstalk y obtener información sobre ellas.
Para ello, permite las acciones específicas si la aplicación especifica una etiqueta denominada stage
con el valor development. La condición aws:TagKeys garantiza que el usuario no pueda añadir otras
claves de etiqueta. En particular, garantiza la distinción entre mayúsculas y minúsculas de la clave de
etiqueta stage. Tenga en cuenta que esta política es útil para los usuarios de IAM que no tienen la política
de usuario administrada AWSElasticBeanstalkFullAccess de Elastic Beanstalk. La política administrada
proporciona a los usuarios permisos ilimitados para realizar cualquier acción de Elastic Beanstalk en
cualquier recurso.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticbeanstalk:UpdateApplication",
"elasticbeanstalk:DeleteApplication",
"elasticbeanstalk:DescribeApplications"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/stage": "development"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": ["stage"]
}
}
}
]
}
538
AWS Elastic Beanstalk Developer Guide
Ejemplos de políticas
de cómo asociar políticas administradas a usuarios y grupos, consulte Control del acceso a Elastic
Beanstalk (p. 502).
En este escenario, Ejemplo Corp. es una empresa de software con tres equipos responsables del sitio web
de la empresa: los administradores que se encargan de la infraestructura, los desarrolladores que crean
el software para el sitio web y un equipo de control de calidad que comprueba el sitio web. Para ayudarle
a administrar los permisos a sus recursos de Elastic Beanstalk, Ejemplo Corp. crea tres grupos a los que
pertenecen los miembros de cada equipo respectivo: Administradores, Desarrolladores y Evaluadores.
Ejemplo Corp. quiere que el grupo Administradores tenga acceso completo a todas las aplicaciones,
entornos y sus recursos subyacentes, para poder crear y eliminar todos los recursos de Elastic Beanstalk,
además de solucionar los problemas con estos recursos. Los desarrolladores requieren permisos para
ver todos los recursos de Elastic Beanstalk y para crear e implementar versiones de la aplicación. Los
desarrolladores no deben poder crear nuevas aplicaciones o entornos ni terminar entornos en ejecución.
Los evaluadores deben ver todos los recursos de Elastic Beanstalk para supervisar y probar aplicaciones.
Los evaluadores no deben poder realizar cambios en ningún recurso de Elastic Beanstalk.
Las siguientes políticas de ejemplo proporcionan los permisos necesarios para cada grupo.
Example 1: Permitir que el grupo Administradores use todas las API de Elastic Beanstalk y
servicios relacionados
La siguiente política concede a los usuarios permisos para todas las acciones necesarias para utilizar
Elastic Beanstalk. Esta política también permite a Elastic Beanstalk aprovisionar y administrar recursos
en su nombre en los siguientes servicios. Elastic Beanstalk utiliza estos servicios adicionales para
aprovisionar los recursos subyacentes cuando se crea un entorno.
Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los servicios
de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite
a un usuario de AWS Identity and Access Management (IAM) realizar cualquier acción en cualquier
recurso de Amazon EC2 en la cuenta de AWS. Estos permisos no se limitan a los recursos que utiliza con
Elastic Beanstalk. Como práctica recomendada, debe conceder a las personas únicamente los permisos
necesarios para llevar a cabo sus tareas.
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
539
AWS Elastic Beanstalk Developer Guide
Ejemplos de políticas
"cloudformation:*"
],
"Resource" : "*"
}
]
}
Example 2: Permitir al grupo Desarrolladores realizar todas las acciones, excepto las operaciones
con privilegios elevados, como la creación de aplicaciones y entornos
La siguiente política deniega permisos para crear aplicaciones y entornos, pero permite todas las demás
acciones de Elastic Beanstalk.
Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los productos
de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite
a un usuario de IAM realizar cualquier acción en cualquier recurso de Amazon EC2 en la cuenta de AWS.
Estos permisos no se limitan a los recursos que utiliza con Elastic Beanstalk. Como práctica recomendada,
debe conceder a las personas únicamente los permisos necesarios para llevar a cabo sus tareas.
{
"Version" : "2012-10-17",
"Statement" : [
{
"Action" : [
"elasticbeanstalk:CreateApplication",
"elasticbeanstalk:CreateEnvironment",
"elasticbeanstalk:DeleteApplication",
"elasticbeanstalk:RebuildEnvironment",
"elasticbeanstalk:SwapEnvironmentCNAMEs",
"elasticbeanstalk:TerminateEnvironment"],
"Effect" : "Deny",
"Resource" : "*"
},
{
"Action" : [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"],
"Effect" : "Allow",
"Resource" : "*"
}
]
}
Example 3: Permitir al grupo Evaluadores ver todos los recursos de Elastic Beanstalk, pero no
realizar ninguna acción
La siguiente política permite acceso de solo lectura a todas las aplicaciones, versiones de la aplicación,
eventos y entornos.
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
540
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
"Action" : [
"elasticbeanstalk:Check*",
"elasticbeanstalk:Describe*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource" : "*"
}
]
}
En nuestro caso de uso, Example Corp. es una pequeña empresa de consultoría que desarrolla
aplicaciones para dos clientes diferentes. John es el director de desarrollo que supervisa el desarrollo de
las dos aplicaciones de Elastic Beanstalk: app1 y app2. John realiza tareas de desarrollo y pruebas en las
dos aplicaciones y solo él puede actualizar el entorno de producción de las dos aplicaciones. Estos son los
permisos que necesita para app1 y app2:
Jill es un evaluador que necesita tener acceso para ver los siguientes recursos con el fin de poder
monitorear y probar las dos aplicaciones: aplicaciones, versiones de la aplicación, entornos y plantillas de
configuración. Sin embargo, no debe poder realizar cambios en ningún recurso de Elastic Beanstalk.
Jack es el desarrollador de app1 que necesita acceso para ver todos los recursos de app1, y también debe
crear versiones de la aplicación para app1 e implementarlas en el entorno de ensayo.
Joe es el administrador de la cuenta de AWS de Example Corp. Ha creado usuarios de IAM para John, Jill
y Jack, y ha asociado las siguientes políticas a esos usuarios para conceder los permisos correspondientes
a las aplicaciones app1 y app2.
541
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
Example 1: Políticas que permiten a John realizar sus tareas de desarrollo, pruebas e
implementación en app1 y app2
Hemos dividido la política de John en tres políticas distintas para que sean más fáciles de leer y
administrar. Juntas, ofrecen a John los permisos que necesita para las acciones de Elastic Beanstalk en
las dos aplicaciones.
La primera política especifica acciones para Auto Scaling, Amazon S3, Amazon EC2, CloudWatch,
Amazon SNS, Elastic Load Balancing, Amazon RDS, y AWS CloudFormation. Elastic Beanstalk utiliza
estos servicios adicionales para aprovisionar los recursos subyacentes cuando se crea un entorno.
Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los productos
de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite
a un usuario de IAM realizar cualquier acción en cualquier recurso de Amazon EC2 en la cuenta de AWS.
Estos permisos no se limitan a los recursos que utiliza con Elastic Beanstalk. Como práctica recomendada,
debe conceder a las personas únicamente los permisos necesarios para llevar a cabo sus tareas.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"ecs:*",
"ecr:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"dynamodb:*",
"rds:*",
"sqs:*",
"logs:*",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:PassRole",
"iam:ListRolePolicies",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListServerCertificates",
"acm:DescribeCertificate",
"acm:ListCertificates",
"codebuild:CreateProject",
"codebuild:DeleteProject",
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
],
"Resource":"*"
}
]
}
La segunda política especifica las acciones de Elastic Beanstalk que John puede realizar en los recursos
de app1 y app2. La instrucción AllCallsInApplications permite que se realicen todas las acciones
de Elastic Beanstalk ("elasticbeanstalk:*") en todos los recursos de app1 y app2 (por ejemplo,
elasticbeanstalk:CreateEnvironment). La instrucción AllCallsOnApplications permite
que se realicen todas las acciones de Elastic Beanstalk ("elasticbeanstalk:*") en todos los
recursos de las aplicaciones app1 y app2 (por ejemplo, elasticbeanstalk:DescribeApplications,
542
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllCallsInApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllCallsOnApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
La tercera política especifica las acciones de Elastic Beanstalk para las que la segunda
política necesita permisos para poder realizarlas. La instrucción AllNonResourceCalls
permite la acción elasticbeanstalk:CheckDNSAvailability, que es necesaria para
llamar a elasticbeanstalk:CreateEnvironment y para otras acciones. También
permite la acción elasticbeanstalk:CreateStorageLocation, que es necesaria para
elasticbeanstalk:CreateApplication, elasticbeanstalk:CreateEnvironment y para otras
acciones.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
543
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
Hemos dividido la política de Jill en tres políticas distintas para que sean más fáciles de leer y administrar.
Juntas, ofrecen a Jill los permisos que necesita para las acciones de Elastic Beanstalk en las dos
aplicaciones.
La primera política especifica las acciones Describe*, List* y Get* en Auto Scaling, Amazon S3,
Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS y AWS CloudFormation
(para tipos de contenedores no heredados), lo que permite que las acciones de Elastic Beanstalk puedan
recuperar la información pertinente sobre los recursos subyacentes de las aplicaciones app1 y app2.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource":"*"
}
]
}
La segunda política especifica las acciones de Elastic Beanstalk que Jill puede realizar en los recursos
de app1 y app2. La instrucción AllReadCallsInApplications le permite llamar a las acciones
Describe* y a las acciones de información del entorno. La instrucción AllReadCallsOnApplications
le permite llamar a las acciones DescribeApplications y DescribeEvents en los recursos de
las aplicaciones app1 y app2. La instrucción AllReadCallsOnSolutionStacks le permite ver las
acciones en las que participan los recursos de la pila de soluciones (ListAvailableSolutionStacks,
DescribeConfigurationOptions y ValidateConfigurationSettings).
{
"Version": "2012-10-17",
"Statement":[
544
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
{
"Sid":"AllReadCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
La tercera política especifica las acciones de Elastic Beanstalk para las que la segunda política
necesita permisos para poder realizarlas. La instrucción AllNonResourceCalls permite la acción
elasticbeanstalk:CheckDNSAvailability, que es necesaria para algunas acciones de consulta.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
545
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
]
}
Example 3: Políticas que permiten a Jack tener acceso a app1 para probar, monitorear, crear
versiones de la aplicación e implementar en el entorno de ensayo
Hemos dividido la política de Jack en tres políticas distintas para que sean más fáciles de leer y
administrar. Juntas, ofrecen a Jack los permisos que necesita para las acciones de Elastic Beanstalk en el
recurso de app1.
La primera política especifica las acciones en Auto Scaling, Amazon S3, Amazon EC2, CloudWatch,
Amazon SNS, Elastic Load Balancing, Amazon RDS y AWS CloudFormation (para tipos de contenedores
no heredados), que permiten a las acciones de Elastic Beanstalk ver y trabajar con los recursos
subyacentes de app1. Para ver una lista de los tipos de contenedores no heredados, consulte ¿Por qué
algunos tipos de contenedores están marcados como heredados? (p. 159).
Tenga en cuenta que esta política es un ejemplo. Concede un amplio conjunto de permisos a los productos
de AWS que Elastic Beanstalk utiliza para administrar aplicaciones y entornos. Por ejemplo, ec2:* permite
a un usuario de IAM realizar cualquier acción en cualquier recurso de Amazon EC2 en la cuenta de AWS.
Estos permisos no se limitan a los recursos que utiliza con Elastic Beanstalk. Como práctica recomendada,
debe conceder a las personas únicamente los permisos necesarios para llevar a cabo sus tareas.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
La segunda política especifica las acciones de Elastic Beanstalk que Jack puede realizar en el recurso de
app1.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsAndAllVersionCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect":"Allow",
"Resource":[
"*"
],
546
AWS Elastic Beanstalk Developer Guide
Políticas de ejemplo basadas en permisos de recursos
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
{
"Sid":"UpdateEnvironmentInApplications",
"Action":[
"elasticbeanstalk:UpdateEnvironment"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-
staging*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
"StringLike":{
"elasticbeanstalk:FromApplicationVersion":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/
*"
]
}
}
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
La tercera política especifica las acciones de Elastic Beanstalk para las que la segunda
política necesita permisos para poder realizarlas. La instrucción AllNonResourceCalls
permite la acción elasticbeanstalk:CheckDNSAvailability, que es necesaria para
llamar a elasticbeanstalk:CreateEnvironment y para otras acciones. También
permite la acción elasticbeanstalk:CreateStorageLocation, que es necesaria para
elasticbeanstalk:CreateEnvironment y para otras acciones.
547
AWS Elastic Beanstalk Developer Guide
Amazon RDS
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
Si no ha usado una instancia de base de datos con su aplicación anteriormente, pruebe a añadir
primero una a un entorno de prueba con la Consola de Elastic Beanstalk. Esto le permite verificar
que la aplicación puede leer propiedades del entorno, crear una cadena de conexión y conectarse
a una instancia de base de datos antes de añadir Amazon Virtual Private Cloud (Amazon VPC)
y la configuración de los grupos al conjunto. Consulte Añadir una base de datos al entorno de
Elastic Beanstalk (p. 227) para obtener más información.
Para desacoplar la instancia de base de datos del entorno, puede ejecutar una instancia de base de
datos en Amazon RDS y configurar la aplicación para que se conecte a ella durante el lanzamiento. Esto
le permite conectar varios entornos a una base de datos, terminar un entorno sin que ello afecte a la
base de datos y realizar actualizaciones sin problemas con implementaciones blue-green. Para ver un
procedimiento detallado, consulte How do I decouple an Amazon RDS instance from an AWS Elastic
Beanstalk environment without downtime, database sync issues, or data loss? (¿Cómo desacoplo una
instancia Amazon RDS de un entorno AWS Elastic Beanstalk sin problemas de sincronización de bases de
datos, de tiempo de inactividad o pérdida de datos?).
Para permitir que las instancias Amazon EC2 del entorno se conecten a una base de datos externa,
puede configurar el grupo de Auto Scaling del entorno con un grupo de seguridad adicional. El grupo de
seguridad que asocia al entorno puede ser el mismo que el que se asocia a la instancia de base de datos
o puede ser un grupo de seguridad distinto desde el que el grupo de seguridad de la base de datos permita
la entrada.
Note
Puede conectar el entorno a una base de datos añadiendo un regla al grupo de seguridad de la
base de datos que permita la entrada desde el grupo de seguridad generado automáticamente
que Elastic Beanstalk asocia al grupo de Auto Scaling del entorno. Sin embargo, esto crea una
dependencia entre los dos grupos de seguridad. Posteriormente, cuando intente terminar el
548
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia de
Amazon RDS externa en una VPC predeterminada
entorno, Elastic Beanstalk no podrá eliminar el grupo de seguridad del entorno, ya que el grupo de
seguridad de la base de datos depende de él.
Después de lanzar la instancia de base de datos y configurar los grupos de seguridad, puede pasar la
información de conexión (punto de enlace, contraseña, etc.) a su aplicación utilizando las propiedades
del entorno. Es el mismo mecanismo que usa Elastic Beanstalk cuando ejecuta una instancia de base de
datos en su entorno.
Temas
• Lanzamiento y conexión a una instancia de Amazon RDS externa en una VPC
predeterminada (p. 549)
• Lanzamiento y conexión a una instancia de Amazon RDS externa en &EC2 Classic (p. 553)
• Almacenamiento de la cadena de conexión en Amazon S3 (p. 557)
• Limpieza de una instancia de Amazon RDS externa (p. 559)
Los siguientes procedimientos describen el proceso para una VPC predeterminada. El proceso es el
mismo si utiliza una VPC personalizada. Los únicos requisitos adicionales son que su entorno y la instancia
de la base de datos se encuentren en la misma subred o en subredes que puedan comunicarse entre
sí. Consulte Uso de Elastic Beanstalk con Amazon Virtual Private Cloud (p. 562) para obtener más
información sobre cómo configurar una VPC personalizada para su uso con Elastic Beanstalk.
Para lanzar una instancia de base de datos de RDS en una VPC predeterminada
• DB instance class (Clase de instancia de base de datos): elija un tamaño de instancia que cuente
con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
• Multi-AZ deployment (Implementación Multi-AZ): para alta disponibilidad, elija Create replica in
different zone (Crear réplica en otra zona).
• Master username (Nombre de usuario maestro) y Master password (Contraseña maestra): nombre
de usuario y contraseña de la base de datos. Anote de estos valores, ya que los necesitará
posteriormente.
7. Seleccione Next (Siguiente).
549
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia de
Amazon RDS externa en una VPC predeterminada
8. En Database options (Opciones de la base de datos) para Database name (Nombre de base de
datos), escriba ebdb. Anote el valor de Database port (Puerto de base de datos) para usarlo más
adelante.
9. Compruebe los valores predeterminados de las demás opciones y elija Create database (Crear base
de datos).
A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir
el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su
entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a
otros recursos del mismo grupo de seguridad.
Para modificar las reglas de entrada del grupo de seguridad de la instancia de RDS
550
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia de
Amazon RDS externa en una VPC predeterminada
Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS
551
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia de
Amazon RDS externa en una VPC predeterminada
5. En la sección Propiedades del entorno, defina las variables que lee la aplicación para crear una
cadena de conexión. Para conseguir compatibilidad con los entornos que tienen una instancia de base
de datos de RDS, utilice lo siguiente.
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
6. Seleccione Aplicar.
Si aún no ha programado la aplicación para leer las propiedades del entorno y crear una cadena de
conexión, consulte los siguientes temas específicos del lenguaje para obtener instrucciones:
• Java SE: Conexión a una base de datos (plataformas Java SE) (p. 739)
552
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia
de Amazon RDS externa en &EC2 Classic
• Java con Tomcat: Conexión a una base de datos (plataformas Tomcat) (p. 739)
• Node.js: Conexión a una base de datos (p. 852)
• .NET: Conexión a una base de datos (p. 788)
• PHP: Conexión a una base de datos con PDO o MySQLi (p. 912)
• Python: Conexión a una base de datos (p. 940)
• Ruby: Conexión a una base de datos (p. 955)
Por último, en función de cuándo lea la aplicación las variables de entorno, es posible que necesite
reiniciar el servidor de la aplicación en las instancias del entorno.
Puede añadir reglas a un grupo de seguridad de base de datos que permitan la entrada desde grupos
de seguridad de EC2, pero no puede asociar un grupo de seguridad de base de datos al grupo de Auto
Scaling del entorno. Para evitar crear una dependencia entre el grupo de seguridad de la base de datos
y su entorno, debe crear un tercer grupo de seguridad en Amazon EC2, añadir una regla en el grupo de
seguridad de la base de datos para concederle la entrada al nuevo grupo de seguridad y, a continuación,
asignarlo al grupo de Auto Scaling de su entorno de Elastic Beanstalk.
• VPC: Not in VPC. Si esta opción no está disponible, es posible que su cuenta no admita EC2-
Classic o que haya elegido un tipo de instancia que solo está disponible en VPC.
• Zona de disponibilidad: No Preference
• Grupos de seguridad de base de datos: Create new Security Group
5. Configure las demás opciones y elija Create database (Crear base de datos). Anote los valores que
introduzca para las siguientes opciones:
553
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia
de Amazon RDS externa en &EC2 Classic
En EC2-Classic, la instancia de base de datos tendrá un grupo de seguridad de base de datos en lugar
de un grupo de seguridad de VPC. No puede asociar un grupo de seguridad de base de datos al entorno
de Elastic Beanstalk, por lo que tendrá que crear un nuevo grupo de seguridad que tenga permiso para
obtener acceso a la instancia de base de datos y asociarse al entorno. Denominaremos a este grupo de
seguridad puente y le asignaremos el nombre webapp-bridge.
A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir el
tráfico entrante desde el grupo de seguridad puente.
Para modificar las reglas de entrada del grupo de seguridad de la instancia de RDS
554
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia
de Amazon RDS externa en &EC2 Classic
555
AWS Elastic Beanstalk Developer Guide
Lanzamiento y conexión a una instancia
de Amazon RDS externa en &EC2 Classic
Si aún no ha programado la aplicación para leer las propiedades del entorno y crear una cadena de
conexión, consulte los siguientes temas específicos del lenguaje para obtener instrucciones:
• Java SE: Conexión a una base de datos (plataformas Java SE) (p. 739)
• Java con Tomcat: Conexión a una base de datos (plataformas Tomcat) (p. 739)
• Node.js: Conexión a una base de datos (p. 852)
• .NET: Conexión a una base de datos (p. 788)
• PHP: Conexión a una base de datos con PDO o MySQLi (p. 912)
• Python: Conexión a una base de datos (p. 940)
• Ruby: Conexión a una base de datos (p. 955)
Por último, en función de cuándo lea la aplicación las variables de entorno, es posible que necesite
reiniciar el servidor de la aplicación en las instancias del entorno.
556
AWS Elastic Beanstalk Developer Guide
Almacenamiento de la cadena de conexión en Amazon S3
En primer lugar, cree un bucket para almacenar el archivo que contiene la cadena de conexión. Para este
ejemplo, vamos a utilizar un archivo JSON que tiene una única clave y valor. El valor es una cadena de
conexión JDBC para una instancia de base de datos PostgreSQL en Amazon RDS.
beanstalk-database.json
{
"connection": "jdbc:postgresql://mydb.b5uacpxznijm.us-west-2.rds.amazonaws.com:5432/ebdb?
user=username&password=mypassword"
}
Las partes subrayadas de la dirección URL se corresponden con el punto de enlace, el puerto, el nombre
de la base de datos, el nombre de usuario y la contraseña de la base de datos.
De forma predeterminada, su cuenta es la propietaria del archivo y tiene permiso para administrarlo, no
así los usuarios y roles de IAM, a menos que les conceda acceso explícitamente. Conceda acceso a las
instancias en su entorno de Elastic Beanstalk añadiendo una política al perfil de instancia (p. 23).
557
AWS Elastic Beanstalk Developer Guide
Almacenamiento de la cadena de conexión en Amazon S3
2. Elija Roles.
3. Seleccione aws-elasticbeanstalk-ec2-role.
4. Elija Add inline policy.
5. Añada una política que permita a la instancia recuperar el archivo.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "database",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-secret-bucket-123456789012/beanstalk-database.json"
]
}
]
}
Reemplace los nombres de bucket y objeto por los nombres de su bucket y objeto.
A continuación, añada un archivo de configuración (p. 320) a su código fuente que indique a Elastic
Beanstalk que descargue el archivo de Amazon S3 durante la implementación.
~/my-app/.ebextensions/database.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["my-secret-bucket-123456789012"]
roleName: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/beanstalk-database.json" :
mode: "000644"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/my-secret-bucket-123456789012/beanstalk-
database.json
Este archivo de configuración hace dos cosas. La clave Resources añade un método de autenticación
a los metadatos del grupo de Auto Scaling de su entorno que Elastic Beanstalk puede usar para tener
acceso a Amazon S3. La clave files indica a Elastic Beanstalk que descargue el archivo de Amazon S3
y lo almacene localmente en /tmp/ durante la implementación.
Por último, añada el código a su aplicación para leer el archivo JSON y utilizar la cadena de conexión para
conectarse a la base de datos.
558
AWS Elastic Beanstalk Developer Guide
Limpieza de una instancia de Amazon RDS externa
Elastic Beanstalk no activa el cifrado predeterminado para el bucket de Amazon S3 que crea. Esto significa
que, de forma predeterminada, los objetos se almacenan en el bucket sin cifrar (y solo pueden acceder
los usuarios autorizados). Algunas aplicaciones requieren que se cifren todos los objetos cuando están
almacenados en un disco duro, en una base de datos, etc. (también conocido como cifrado en reposo).
Si tiene este requisito, puede configurar los buckets de su cuenta para el cifrado predeterminado. Para
obtener más información, consulte Cifrado predeterminado de Amazon S3 para los buckets de Amazon S3
en la Guía para desarrolladores de Amazon Simple Storage Service.
Paquetes Al cargar una nueva versión de la aplicación Manualmente. Al eliminar una versión
de código mediante la Consola de Elastic Beanstalk o la de la aplicación, puede elegir Delete
fuente (p. 54) CLI de EB, Elastic Beanstalk almacena una versions from Amazon S3 (Eliminar
copia de ella en Amazon S3, y la establece versiones de Amazon S3) para
como el paquete de código fuente del entorno. también eliminar el paquete de código
fuente relacionado. Para obtener más
información, consulte Administración
de versiones de la aplicación (p. 54).
Plataformas Al crear una plataforma personalizada, Elastic Una vez completada correctamente
personalizadas (p.
Beanstalk
33) almacena temporalmente los datos la creación de la plataforma
relacionados en Amazon S3. personalizada.
559
AWS Elastic Beanstalk Developer Guide
Eliminación de objetos en el bucket
de Amazon S3 de Elastic Beanstalk
• Elimine las versiones de aplicación que ya no prevea utilizar en su aplicación. Al eliminar una versión
de la aplicación, puede seleccionar Delete versions from Amazon S3 (Eliminar versiones de Amazon
S3) para eliminar también el paquete de código fuente relacionado, es decir, una copia del código
fuente y los archivos de configuración de su aplicación, que Elastic Beanstalk cargó en Amazon S3 al
implementar una aplicación o cargar una versión de la aplicación. Para obtener información sobre cómo
eliminar una versión de la aplicación, consulte Administración de versiones de la aplicación (p. 54).
• Elimine los registros rotados que no necesite. También puede descargarlos o moverlos a Amazon S3
Glacier para efectuar un análisis más detallado.
• Elimine las configuraciones guardadas que ya no vaya a usar en ningún entorno.
Si elimina un bucket que Elastic Beanstalk creó en su cuenta, y todavía tiene aplicaciones
existentes y entornos en ejecución en la región correspondiente, es posible que sus aplicaciones
dejen de funcionar correctamente. Por ejemplo:
560
AWS Elastic Beanstalk Developer Guide
Eliminación del bucket de Amazon S3 de Elastic Beanstalk
Le recomendamos que elimine los objetos innecesarios específicos del bucket de Amazon S3 de
Elastic Beanstalk, en lugar de eliminar todo el bucket.
561
AWS Elastic Beanstalk Developer Guide
Amazon VPC
Requisitos de la VPC
• Acceso a Internet: las instancias deben tener acceso a Internet a través de uno de los métodos
siguientes.
• Subred pública: las instancias tienen una dirección IP pública y usan un gateway de Internet para
obtener acceso a Internet.
• Subred privada: las instancias usan un dispositivo NAT para obtener acceso a Internet.
1. Clone el repositorio de ejemplos o descargue una plantilla con los enlaces en README.
2. Abra la consola de AWS CloudFormation.
3. Elija Create stack (Crear pila).
562
AWS Elastic Beanstalk Developer Guide
VPC con subredes públicas
Cuando termina la creación de la pila, observe la pestaña Outputs (Salidas) para ver el ID de VPC y los ID
de subred. Utilícelos para configurar la VPC en la categoría de configuración de red (p. 108) del asistente
para crear un nuevo entorno.
Un diseño de VPC básico solo público incluye una o varias subredes públicas, un gateway de Internet y un
grupo de seguridad predeterminado que permite el tráfico entre los recursos de la VPC. Cuando crea un
entorno en la VPC, Elastic Beanstalk crea recursos adicionales que varían en función del tipo de entorno.
Recursos de VPC
• Instancia individual: Elastic Beanstalk crea un grupo de seguridad para la instancia de aplicación que
permite el tráfico en el puerto 80 desde Internet y asigna a la instancia una dirección IP elástica para
que tenga una dirección IP pública. El nombre de dominio del entorno se resuelve como la dirección IP
pública de la instancia.
• Con balanceo de carga: Elastic Beanstalk crea un grupo de seguridad para el balanceador de carga
que permite el tráfico en el puerto 80 desde Internet y un grupo de seguridad para las instancias de
aplicación que permite el tráfico desde el grupo de seguridad del balanceador de carga. El nombre de
dominio del entorno se resuelve como la dirección IP pública del balanceador de carga.
Esto es similar a la forma en que Elastic Beanstalk administra la red cuando se utiliza la VPC
predeterminada. La seguridad en una subred pública depende del balanceador de carga y de los grupos
de seguridad de las instancias creados por Elastic Beanstalk. Es la configuración más económica, ya que
no requiere un gateway NAT.
563
AWS Elastic Beanstalk Developer Guide
Hosts bastión
Para aumentar la seguridad, añada subredes privadas a la VPC para crear un diseño público-privado.
Este diseño requiere un balanceador de carga y un gateway NAT en las subredes públicas, y le permite
ejecutar las instancias de aplicación, bases de datos y otros recursos en subredes privadas. Las instancias
de subredes privadas solo puede comunicarse con Internet a través del balanceador de carga y el gateway
NAT.
Para aplicaciones internas que no deban ser accesibles desde Internet, puede ejecutar todo en subredes
privadas y configurar el balanceador de carga para que se dirija hacia el interior (cambiando Load balancer
visibility (Visibilidad del balanceador de carga) a Internal (Interna). Utilice este diseño para las aplicaciones
que solo deban ser accesibles desde la misma VPC o desde una VPN adjunta.
Temas
• Ejemplo: Implementación de una aplicación de Elastic Beanstalk en una VPC con hosts
bastión (p. 564)
• Ejemplo: Lanzamiento de una instancia de Elastic Beanstalk en una VPC con Amazon RDS (p. 569)
564
AWS Elastic Beanstalk Developer Guide
Hosts bastión
Para implementar una aplicación de Elastic Beanstalk dentro de una VPC con un host bastión, debe hacer
lo siguiente:
Temas
• Creación de una VPC con subredes públicas y privadas (p. 566)
• Creación y configuración del grupo de seguridad del host bastión (p. 566)
• Actualización del grupo de seguridad de instancias (p. 568)
• Creación de un host bastión (p. 568)
565
AWS Elastic Beanstalk Developer Guide
Hosts bastión
Seleccione la VPC.
Se crea el grupo de seguridad y aparece en la página Security Groups. Observe que tiene un ID (p.
ej., sg-xxxxxxxx). Puede que deba activar la columna Group ID; para ello, haga clic en Show/Hide
en la esquina superior derecha de la página.
1. En la lista de grupo de seguridad, active la casilla del grupo de seguridad que acaba de crear para el
host bastión.
2. En la pestaña Inbound Rules, elija Edit.
3. Si es necesario, elija Add another rule (Añadir otra regla).
4. Si el host bastión es una instancia de Linux, en Type (Tipo), seleccione SSH.
566
AWS Elastic Beanstalk Developer Guide
Hosts bastión
Para encontrarla:
Si tiene hosts en varias zonas de disponibilidad, cree una regla de salida para cada una
de ellas.
567
AWS Elastic Beanstalk Developer Guide
Hosts bastión
Type
RDP
Protocolo
TCP
Intervalo de puertos
3389
Fuente
Especifique el ID del grupo de seguridad del host bastión (por ejemplo, sg-8a6f71e8) y
seleccione Save (Guardar).
Para obtener más información sobre la configuración de un host bastión para instancias Windows en la
subred privada, consulte Controlling Network Access to EC2 Instances Using a Bastion Server.
568
AWS Elastic Beanstalk Developer Guide
Amazon RDS
Para obtener más información sobre la configuración de un host bastión para instancias Linux en la subred
privada, consulte Securely Connect to Linux Instances Running in a Private Amazon VPC.
569
AWS Elastic Beanstalk Developer Guide
Amazon RDS
Note
Si nunca antes ha utilizado una instancia de base de datos con la aplicación, intente agregar
una a un entorno de prueba (p. 227) y establecer conexión con una instancia de base de datos
externa (p. 548) antes de agregar una configuración de VPC al conjunto.
4. El balanceador de carga de Elastic Load Balancing y las instancias Amazon EC2 deben estar en la
misma zona de disponibilidad para comunicarse entre sí. Elija la misma zona de disponibilidad en
cada lista de zona de disponibilidad.
El asistente comienza a crear la VPC, las subredes y la gateway de Internet. También actualiza la
tabla de ruteo principal y crea una personalizada. Por último, el asistente crea una gateway NAT en la
subred pública.
570
AWS Elastic Beanstalk Developer Guide
Amazon RDS
Note
Puede elegir lanzar una instancia NAT en la subred pública en lugar de una gateway NAT.
Para obtener más información, consulte Scenario 2: VPC with Public and Private Subnets
(NAT) en la guía Guía del usuario de Amazon VPC.
7. Una vez creada la VPC correctamente, obtendrá un ID de VPC. Necesitará este valor para el siguiente
paso. Para ver el ID de la VPC, seleccione Your VPCs en el panel izquierdo de la consola de Amazon
VPC.
571
AWS Elastic Beanstalk Developer Guide
Amazon RDS
El nuevo grupo de subredes de base de datos aparece en la lista de grupos de subredes de la consola
de Amazon RDS. En el panel de detalles que se encuentra en la parte inferior de la página, puede
elegir en esa lista para ver los detalles (por ejemplo, todas las subredes asociadas al grupo).
VPC
Seleccione la VPC.
VPC security group
572
AWS Elastic Beanstalk Developer Guide
Amazon RDS
Seleccione las subredes para el balanceador de carga y las instancias EC2. Asegúrese de que selecciona
la subred pública para el balanceador de carga y la subred privada para las instancias Amazon EC2. De
manera predeterminada, el asistente para la creación de VPC crea la subred pública en 10.0.0.0/24 y la
subred privada en 10.0.1.0/24.
Si utiliza subredes de base de datos, deberá crear subredes adicionales en la VPC para cubrir
todas las zonas de disponibilidad de la región de AWS.
• ELBScheme: especifique internal si desea crear un balanceador de carga interno en la VPC para que
no se pueda obtener acceso a la aplicación de Elastic Beanstalk desde el exterior de la VPC.
573
AWS Elastic Beanstalk Developer Guide
Amazon RDS
acerca de cómo definir las opciones, los valores predeterminados y los valores válidos), consulte el
espacio de nombres aws:ec2:vpc en Opciones de configuración (p. 252).
option_settings:
- namespace: aws:autoscaling:launchconfiguration
option_name: EC2KeyName
value: ec2keypair
- namespace: aws:ec2:vpc
option_name: VPCId
value: vpc-170647c
- namespace: aws:ec2:vpc
option_name: Subnets
value: subnet-4f195024
- namespace: aws:ec2:vpc
option_name: ELBSubnets
value: subnet-fe064f95
- namespace: aws:ec2:vpc
option_name: DBSubnets
value: subnet-fg148g78
- namespace: aws:autoscaling:launchconfiguration
option_name: InstanceType
value: m1.small
- namespace: aws:autoscaling:launchconfiguration
option_name: SecurityGroups
value: sg-7f1ef110
Note
Si utiliza subredes de bases de datos, asegúrese de que tiene subredes en la VPC para cubrir
todas las zonas de disponibilidad de la región de AWS.
574
AWS Elastic Beanstalk Developer Guide
Creación de una carpeta del proyecto
Configuración de su entorno de
desarrollo local para usarlo con AWS
Elastic Beanstalk
Temas
• Creación de una carpeta del proyecto (p. 575)
• Configuración del control de código fuente (p. 575)
• Configuración de un repositorio remoto (p. 576)
• Instalación de la CLI de EB (p. 576)
• Instalación de la CLI de AWS (p. 576)
workspace/
|-- my-first-app
`-- my-second-app
El contenido de la carpeta del proyecto variará en función del contenedor o la plataforma web que utilice la
aplicación.
Note
Evite usar carpetas y rutas con caracteres de comillas simples (') o comillas dobles (") en el
nombre de carpeta o cualquier elemento de la ruta. Algunos comandos de Elastic Beanstalk
producen un error cuando se ejecutan en una carpeta con uno de estos caracteres en el nombre.
Si no dispone de un sistema de control de código fuente, considere la posibilidad de usar Git, una opción
gratuita y fácil de usar , y que se integra con la interfaz de línea de comandos (CLI) de Elastic Beanstalk.
Visite la página de inicio de Git para instalar Git.
Siga las instrucciones que se detallan en el sitio web de Git para instalar y configurar Git y, a continuación,
ejecute git init en la carpeta del proyecto para configurar un repositorio local:
575
AWS Elastic Beanstalk Developer Guide
Configuración de un repositorio remoto
Cuando añada contenido a la carpeta del proyecto y lo actualice, valide los cambios en su repositorio Git:
Cada vez que valida el contenido, crea una snapshot de su proyecto que puede restaurar más adelante si
algo va mal. Para obtener más información sobre los comandos y los flujos de trabajo de Git, consulte la
documentación de Git.
AWS CodeCommit le permite crear un repositorio privado en la nube de AWS. CodeCommit es gratuito
en la capa gratuita de AWS para un máximo de cinco usuarios de AWS Identity and Access Management
(IAM) en su cuenta. Consulte la página Precios de AWS CodeCommit para obtener información sobre
precios.
Consulte la Guía del usuario de AWS CodeCommit para obtener instrucciones sobre la configuración.
GitHub es otra opción popular para almacenar el código de su proyecto online. Le permite crear un
repositorio público online de forma gratuita y admite también repositorios privados por una cuota mensual.
Inscríbase en GitHub en github.com.
Después de crear un repositorio remoto para el proyecto, asócielo a su repositorio local con git remote
add:
Instalación de la CLI de EB
Utilice la CLI de EB (p. 578) para administrar sus entornos de Elastic Beanstalk y monitorizar el estado
desde la línea de comandos. Consulte Instalación de la CLI de EB (p. 579) para obtener instrucciones de
instalación.
De forma predeterminada, la CLI de EB empaqueta toda la carpeta del proyecto y la carga en Elastic
Beanstalk como un paquete de código fuente. Cuando utiliza Git y la CLI de EB a la vez, puede impedir
que los archivos de clases compiladas se validen en el código fuente con .gitignore y evitar que los
archivos de código fuente se implementen con .ebignore.
También puede configurar la CLI de EB para implementar un artefacto de compilación (p. 589) (un
archivo WAR o ZIP) en lugar del contenido de la carpeta del proyecto.
576
AWS Elastic Beanstalk Developer Guide
Instalación de la CLI de AWS
realizar una operación con la CLI de AWS. Sin embargo, la CLI de AWS le permite trabajar con cualquier
aplicación o entorno que se ejecute en su cuenta sin configurar un repositorio en su equipo local. Utilice la
CLI de AWS para crear scripts que simplifiquen o automaticen las tareas operativas.
Para obtener más información sobre los servicios admitidos y para descargar la interfaz de línea de
comandos de AWS, consulte Interfaz de línea de comandos de AWS.
577
AWS Elastic Beanstalk Developer Guide
Después de instalar la CLI de EB y de configurar un repositorio, puede crear entornos utilizando un solo
comando:
Anteriormente, Elastic Beanstalk utilizaba una CLI distinta que proporcionaba acceso directo a las
operaciones de la API y que se llamaba CLI de API de Elastic Beanstalk (p. 665). Esta CLI se sustituyó
por la CLI de AWS (p. 576), que ofrece la misma funcionalidad, pero para todas las API de los servicios de
AWS.
Con la CLI de AWS, tiene acceso directo a la API de Elastic Beanstalk. La CLI de AWS es una solución
ideal para los scripts, pero no resulta tan fácil de usar desde la línea de comando por la cantidad de
comandos que deben ejecutarse y el número de parámetros de cada comando. Por ejemplo, para crear un
entorno, se necesita una importante cantidad de comandos:
Para obtener más información sobre la instalación de la CLI de EB, la configuración de un repositorio y el
uso de entornos, consulte los siguientes temas:
Temas
• Instalación de la CLI de EB con scripts de configuración (p. 579)
• Configuración de la CLI de EB (p. 586)
• Administración de entornos de Elastic Beanstalk con la CLI de EB (p. 590)
• Uso de la CLI de EB con AWS CodeBuild (p. 594)
• Uso de la CLI de EB con Git (p. 596)
• Uso de la CLI de EB con AWS CodeCommit (p. 598)
• Uso de la CLI de EB para monitorear el estado del entorno (p. 602)
• Administración de varios entornos de AWS Elastic Beanstalk como un grupo con la CLI de
EB (p. 608)
• Solución de problemas con la CLI de EB (p. 609)
• Referencia de los comandos de la CLI de EB (p. 612)
• CLI de EB 2.6 (retirado) (p. 664)
578
AWS Elastic Beanstalk Developer Guide
Instalación de la CLI de EB
Temas
• Instalación de la CLI de EB (p. 579)
• Instalación manual de la CLI de EB (p. 579)
Instalación de la CLI de EB
Utilice los scripts de configuración de la CLI de EB para instalar la CLI de EB en Linux, macOS o Windows.
Los scripts instalan la CLI de EB y sus dependencias, incluidas Python y pip. Los scripts también crean un
entorno virtual para la CLI de EB. Para obtener instrucciones de instalación, consulte el repositorio aws-
elastic-beanstalk-cli-setup en GitHub.
El método de distribución principal para la CLI de EB en Linux, macOS y Windows es pip. Se trata de
un administrador de paquetes para Python que proporciona una manera sencilla de instalar, actualizar y
eliminar paquetes de Python y sus dependencias. Para macOS, también puede obtener la última versión
de la CLI de EB con Homebrew.
Notas de compatibilidad
La CLI de EB se ha desarrollado en Python y requiere Python versión 2.7, 3.4 o posterior.
Note
A partir de la versión 2015.03, Amazon Linux incluye Python 2.7 y pip.
Recomendamos utilizar los scripts de configuración de la CLI de EB para instalar la CLI de EB y sus
dependencias. Si instala manualmente la CLI de EB, puede resultar difícil administrar los conflictos de
dependencia en su entorno de desarrollo.
La CLI de EB y AWS Command Line Interface (AWS CLI) comparten una dependencia en el paquete
Python botocore. Debido a un cambio brusco en botocore, diferentes versiones de estas dos
herramientas de interfaz de línea de comandos (CLI) dependen de diferentes versiones de botocore.
Las versiones más recientes de las dos CLI son compatibles. Si necesita utilizar una versión anterior,
consulte en la siguiente tabla la versión compatible que se ha de utilizar.
579
AWS Elastic Beanstalk Developer Guide
Instalación manual
Instalación de la CLI de EB
Si ya tiene pip y una versión compatible de Python, utilice el siguiente procedimiento para instalar la CLI
de EB:
Si no dispone de Python ni pip, utilice el procedimiento para el sistema operativo que utiliza.
La opción --upgrade indica a pip que actualice los requisitos ya instalados. La opción --user
indica a pip que instale el programa en un subdirectorio de su directorio de usuarios para no modificar
las bibliotecas que usa su sistema operativo.
Note
Si tiene problemas al intentar instalar la CLI de EB con pip, puede instalar la CLI de EB en
un entorno virtual (p. 586) para aislar la herramienta y sus dependencias, o utilizar una
versión de Python diferente de la que usa habitualmente.
2. Añada la ruta al archivo ejecutable a su variable PATH:
• En Linux y macOS:
Linux: ~/.local/bin
macOS: ~/Library/Python/3.7/bin
$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
export PATH=LOCAL_PATH:$PATH
c. Cargue el script del perfil descrito en el primer paso en la sesión actual. El siguiente ejemplo
carga el script del perfil representado por PROFILE_SCRIPT.
$ source ~/PROFILE_SCRIPT
• En Windows:
580
AWS Elastic Beanstalk Developer Guide
Instalación manual
$ eb --version
EB CLI 3.14.8 (Python 3.7)
La CLI de EB se actualiza periódicamente para añadir funciones que admitan las últimas características de
Elastic Beanstalk. Para actualizar a la última versión de la CLI de EB, ejecute el comando de instalación de
nuevo.
$ python --version
Note
Si la distribución de Linux incluye Python, es posible que tenga que instalar el paquete de
desarrollador de Python para obtener los encabezados y las bibliotecas necesarios para
compilar extensiones e instalar la CLI de EB. Utilice el administrador de paquetes para
instalar el paquete de desarrollador (normalmente denominado python-dev o python-
devel).
2. Si no está instalado Python 2.7 o una versión posterior, instale Python 3.7 con el administrador de
paquetes de su distribución. El comando y el nombre del paquete varían:
581
AWS Elastic Beanstalk Developer Guide
Instalación manual
3. Para verificar que Python está instalado correctamente, abra un terminal o shell y ejecute el siguiente
comando.
$ python3 --version
Python 3.7.3
Instale pip con el script proporcionado por Python Packaging Authority y después instale la CLI de EB.
$ curl -O https://bootstrap.pypa.io/get-pip.py
El script descarga e instala la última versión de pip y otro paquete necesario denominado
setuptools.
2. Ejecute el script con Python.
$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
582
AWS Elastic Beanstalk Developer Guide
Instalación manual
export PATH=LOCAL_PATH:$PATH
c. Cargue el script del perfil descrito en el primer paso en la sesión actual. El siguiente ejemplo
carga el script del perfil representado por PROFILE_SCRIPT.
$ source ~/PROFILE_SCRIPT
$ pip --version
pip 8.1.2 from ~/.local/lib/python3.7/site-packages (python 3.7)
$ eb --version
EB CLI 3.14.8 (Python 3.7)
$ brew update
$ eb --version
EB CLI 3.14.8 (Python 3.7)
583
AWS Elastic Beanstalk Developer Guide
Instalación manual
1. Descargue e instale Python de la página de descargas de Python.org. Utilizamos la versión 3.7 para la
demostración.
Note
La CLI de EB requiere Python 2 versión 2.7 o Python 3 en las versiones de 3.4 a 3.7.
2. Instale pip con el script proporcionado por Python Packaging Authority.
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py --user
$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
export PATH=LOCAL_PATH:$PATH
c. Cargue el script del perfil descrito en el primer paso en la sesión actual. El siguiente ejemplo
carga el script del perfil representado por PROFILE_SCRIPT.
$ source ~/PROFILE_SCRIPT
$ eb --version
EB CLI 3.14.8 (Python 3.7)
584
AWS Elastic Beanstalk Developer Guide
Instalación manual
1. Descargue el instalador del archivo ejecutable de Python 3.7 para Windows x86-64 desde la página de
descargas de Python.org.
2. Ejecute el instalador.
3. Elija Add Python 3.7 to PATH (Añadir Python 3.7 a PATH).
4. Seleccione Install Now (Instalar ahora).
El instalador instala Python en su carpeta de usuario y añade sus directorios de archivos ejecutables a su
ruta de usuario.
C:\Windows\System32> eb --version
EB CLI 3.14.8 (Python 3.7)
585
AWS Elastic Beanstalk Developer Guide
Configuración de la CLI de EB
$ virtualenv ~/eb-ve
$ source ~/eb-ve/bin/activate
Windows
$ %USERPROFILE%\eb-ve\Scripts\activate
$ eb --version
EB CLI 3.14.8 (Python 3.7)
Puede utilizar el comando deactivate para salir del entorno virtual. Siempre que inicie una nueva sesión,
vuelva a ejecutar el comando de activación.
Configuración de la CLI de EB
Después de instalar la CLI de EB (p. 579), puede configurar el directorio del proyecto y la CLI de EB
ejecutando eb init.
En el siguiente ejemplo, se muestran los pasos de configuración cuando se ejecuta eb init por primera vez
en una carpeta de proyecto llamada eb.
586
AWS Elastic Beanstalk Developer Guide
Configuración de la CLI de EB
1. En primer lugar, la CLI de EB le pide que seleccione una región. Escriba el número correspondiente a
la región que desea utilizar y, a continuación, pulse Intro.
~/eb $ eb init
Select a default region
1) us-east-1 : US East (N. Virginia) 2) us-west-1 : EE.UU. Oeste (Norte de California)
3) us-west-2 : EE.UU. Oeste (Oregón) 4) eu-west-1 : UE (Irlanda) 5) eu-central-1 : UE
(Fráncfort) 6) ap-south-1 : Asia Pacífico (Mumbai) 7) ap-southeast-1 : Asia Pacífico
(Singapur) 8) ap-southeast-2 : Asia Pacífico (Sídney) 9) ap-northeast-1 : Asia
Pacífico (Tokio) 10) ap-northeast-2 : Asia Pacífico (Seúl) 11) sa-east-1 : América del
Sur (São Paulo) 12) cn-north-1 : China (Pekín) 13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : EE.UU. Este (Ohio) 15) ca-central-1 : Canadá (Central) 16) eu-west-2 :
UE (Londres) 17) eu-west-3 : UE (París) 18) eu-north-1 : UE Estocolmo 19) ap-east-1 :
Asia Pacífico (Hong Kong) 20) me-south-1 : Medio Oriente (Baréin)
(default is 3): 3
2. A continuación, proporcione la clave de acceso y la clave secreta para que la CLI de EB pueda
administrar los recursos por usted. Las claves de acceso se crean en la consola de AWS Identity and
Access Management. Si no tiene claves, consulte ¿Cómo obtengo credenciales de seguridad? en la
Referencia general de Amazon Web Services.
You have not yet set up your credentials or your credentials are incorrect.
You must provide your credentials.
(aws-access-id): AKIAJOUAASEXAMPLE
(aws-secret-key): 5ZRIrtTM4ciIAvd4EXAMPLEDtm+PiPSzpoK
5. Seleccione una plataforma que coincida con el lenguaje o el marco en el que se desarrolló la
aplicación web. Si todavía no ha empezado a desarrollar la aplicación, seleccione la plataforma que le
interese. Pronto aprenderá a lanzar una aplicación de ejemplo y siempre puede cambiar este ajuste
con posterioridad.
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
587
AWS Elastic Beanstalk Developer Guide
Omisión de archivos con .ebignore
11) Java
(default is 1): 1
6. Elija yes (sí) para asignar un par de claves SSH a las instancias del entorno de Elastic Beanstalk. Esto
le permite conectarse directamente a ellas para la solución de problemas.
7. Elija un par de claves existente o cree uno nuevo. Si desea utilizar eb init para crear un nuevo par de
claves, ssh-keygen debe estar instalado en la máquina local y disponible desde la línea de comando.
La CLI de EB registra automáticamente el nuevo par de claves en Amazon EC2 y almacena la clave
privada localmente en una carpeta denominada .ssh del directorio del usuario.
Select a keypair.
1) [ Create new KeyPair ]
(default is 1): 1
Configuración avanzada
• Omisión de archivos con .ebignore (p. 588)
• Uso de perfiles con nombres (p. 588)
• Implementación de un artefacto en lugar de la carpeta del proyecto (p. 589)
• Ajustes de configuración y precedencia (p. 589)
• Metadatos de instancia (p. 590)
Si no existe .ebignore, pero sí existe .gitignore, la CLI de EB omite los archivos especificados en
.gitignore. Si existe .ebignore, la CLI de EB no lee .gitignore.
Cuando .ebignore está presente, la CLI de EB no utiliza comandos git para crear su paquete de código
fuente. Esto significa que la CLI de EB omite los archivos especificados en .ebignore e incluye todos los
demás archivos. En concreto, incluye archivos de código fuente sin validar.
Note
588
AWS Elastic Beanstalk Developer Guide
Implementación de un artefacto en
lugar de la carpeta del proyecto
$ export AWS_EB_PROFILE=user2
Windows
deploy:
artifact: path/to/buildartifact.zip
Si configura la CLI de EB en el repositorio de Git (p. 596) y no confirma el artefacto en el código fuente,
use la opción --staged para implementar la última compilación.
1. Opciones de la línea de comandos: especifique un perfil con nombre mediante --profile para anular
la configuración predeterminada.
2. Variables de entorno: AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY
3. Archivo de credenciales de AWS: está situado en ~/.aws/credentials en los sistemas Linux y OS
X, o en C:\Users\USERNAME\.aws\credentials en los sistemas Windows. Este archivo puede
contener varios perfiles con nombre, además de un perfil predeterminado.
4. Archivo de configuración de la CLI de AWS: está situado en ~/.aws/config en los sistemas Linux
y OS X, o en C:\Users\USERNAME\.aws\config en los sistemas Windows. Este archivo puede
contener un perfil predeterminado, perfiles con nombre y parámetros de configuración específicos de la
CLI de AWS para cada uno.
5. Archivo de configuración heredado de la CLI de EB: está situado en ~/.elasticbeanstalk/config
en los sistemas Linux y OS X, o en C:\Users\USERNAME\.elasticbeanstalk\config en los
sistemas Windows.
589
AWS Elastic Beanstalk Developer Guide
Metadatos de instancia
6. Credenciales de perfil de instancia: estas credenciales pueden utilizarse en instancias Amazon EC2 con
un rol de instancia asignado, y se entregan a través del servicio de metadatos de Amazon EC2. El perfil
de instancia (p. 23) debe tener permisos para poder usar Elastic Beanstalk.
Si el archivo de credenciales contiene un perfil con el nombre "eb-cli", la CLI de EB preferirá ese perfil
frente al predeterminado. Si no se encuentran perfiles, o se encuentra un perfil pero no tiene permiso para
utilizar Elastic Beanstalk, la CLI de EB le pedirá uno cuando especifique las claves.
Metadatos de instancia
Para utilizar la CLI de EB desde una instancia Amazon EC2, cree un rol que tenga acceso a los recursos
necesarios y asigne ese rol a la instancia cuando se lance. Lance la instancia e instale la CLI de EB
mediante pip.
La CLI de EB lee las credenciales desde los metadatos de la instancia. Para obtener más información,
consulte Permitir el acceso a los recursos de AWS a aplicaciones que se ejecutan en instancias de
Amazon EC2 en la Guía del usuario de IAM.
Para crear entornos con el EB CLI se requiere una función de servicio (p. 22). Puede crear una
función de servicio creando un entorno en la Consola de Elastic Beanstalk. Si no cuenta con
ninguna función de servicio, el EB CLI intentará crear uno cuando ejecute eb create.
La CLI de EB devuelve un código de salida cero (0) para todos los comandos correctos y un código de
salida distinto de cero cuando encuentra un error.
Los siguientes ejemplos utilizan una carpeta del proyecto vacía llamada eb que se ha inicializado con la
CLI de EB para usarla con una aplicación Docker de ejemplo.
Comandos básicos
• eb create (p. 591)
• eb status (p. 591)
• eb health (p. 591)
• eb events (p. 592)
• eb logs (p. 592)
• eb open (p. 593)
• eb deploy (p. 593)
• eb config (p. 594)
590
AWS Elastic Beanstalk Developer Guide
eb create
eb create
Para crear su primer entorno, ejecute eb create (p. 622) y siga las instrucciones. Si el directorio del
proyecto contiene código fuente, la CLI de EB lo empaquetará e implementará en su entorno. De lo
contrario, se usará una aplicación de ejemplo.
~/eb$ eb create
Enter Environment Name
(default is eb-dev): eb-dev
Enter DNS CNAME prefix
(default is eb-dev): eb-dev
WARNING: The current directory does not contain any source code. Elastic Beanstalk is
launching the sample application instead.
Environment details for: elasticBeanstalkExa-env
Application name: elastic-beanstalk-example
Region: us-west-2
Deployed Version: Sample Application
Environment ID: e-j3pmc8tscn
Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
Tier: WebServer-Standard
CNAME: eb-dev.elasticbeanstalk.com
Updated: 2015-06-27 01:02:24.813000+00:00
Printing Status:
INFO: createEnvironment is starting.
-- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.
Pueden transcurrir varios minutos hasta que su entorno esté preparado. Presione Ctrl+C para volver a la
línea de comandos mientras se crea el entorno.
eb status
Ejecute eb status para ver el estado actual de su entorno. Cuando el estado es ready, la aplicación de
ejemplo está disponible en elasticbeanstalk.com y el entorno está listo para su actualización.
~/eb$ eb status
Environment details for: elasticBeanstalkExa-env
Application name: elastic-beanstalk-example
Region: us-west-2
Deployed Version: Sample Application
Environment ID: e-gbzqc3jcra
Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
Tier: WebServer-Standard
CNAME: elasticbeanstalkexa-env.elasticbeanstalk.com
Updated: 2015-06-30 01:47:45.589000+00:00
Status: Ready
Health: Green
eb health
Utilice el comando eb health para ver información de estado (p. 416) de las instancias de su entorno y el
estado general del entorno. Utilice la opción --refresh para ver el estado en una vista interactiva que se
actualiza cada 10 segundos.
~/eb$ eb health
api Ok 2016-09-15 18:39:04
591
AWS Elastic Beanstalk Developer Guide
eb events
WebServer Java 8
total ok warning degraded severe info pending unknown
3 3 0 0 0 0 0 0
eb events
Utilice eb events para ver una lista de los eventos generados por Elastic Beanstalk.
~/eb$ eb events
2015-06-29 23:21:09 INFO createEnvironment is starting.
2015-06-29 23:21:10 INFO Using elasticbeanstalk-us-east-2-EXAMPLE as Amazon S3
storage bucket for environment data.
2015-06-29 23:21:23 INFO Created load balancer named: awseb-e-g-AWSEBLoa-EXAMPLE
2015-06-29 23:21:42 INFO Created security group named: awseb-e-gbzqc3jcra-stack-
AWSEBSecurityGroup-EXAMPLE
2015-06-29 23:21:45 INFO Created Auto Scaling launch configuration named: awseb-e-
gbzqc3jcra-stack-AWSEBAutoScalingLaunchConfiguration-EXAMPLE
...
eb logs
Utilice eb logs para obtener los registros de una instancia de su entorno. De forma predeterminada,eb logs
obtiene los registros de la primera instancia lanzada y los muestra en la salida estándar. Puede especificar
un ID de instancia con la opción --instance para obtener los registros de una instancia específica.
La opción --all obtiene los registros de todas las instancias y los guarda en subdirectorios bajo
.elasticbeanstalk/logs.
592
AWS Elastic Beanstalk Developer Guide
eb open
Retrieving logs...
Logs were saved to /home/local/ANT/mwunderl/ebcli/environments/test/.elasticbeanstalk/
logs/150630_201410
Updated symlink at /home/local/ANT/mwunderl/ebcli/environments/test/.elasticbeanstalk/logs/
latest
eb open
Para abrir el sitio web de su entorno en un navegador, utilice eb open:
~/eb$ eb open
En un entorno con ventanas, su navegador predeterminado se abrirá en una nueva ventana. En un entorno
de terminal, se usará un explorador de línea de comandos (como w3m) si está disponible.
eb deploy
Una vez que el entorno esté listo, puede actualizarlo mediante eb deploy.
Este comando funciona mejor con código fuente que se vaya a empaquetar e implementar, así que para
este ejemplo hemos creado un Dockerfile en el directorio del proyecto con el siguiente contenido:
~/eb/Dockerfile
FROM ubuntu:12.04
EXPOSE 80
Este Dockerfile implementa una imagen de Ubuntu 12.04 e instala el juego 2048. Ejecute eb deploy
para cargar la aplicación en su entorno:
~/eb$ eb deploy
Creating application version archive "app-150630_014338".
Uploading elastic-beanstalk-example/app-150630_014338.zip to S3. This may take a while.
Upload Complete.
INFO: Environment update is starting.
-- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.
Cuando ejecuta eb deploy, la CLI de EB empaqueta el contenido del directorio del proyecto y lo
implementa en su entorno.
Note
593
AWS Elastic Beanstalk Developer Guide
eb config
eb config
Eche un vistazo a las opciones de configuración disponibles para su entorno en ejecución con el comando
eb config:
~/eb$ eb config
ApplicationName: elastic-beanstalk-example
DateUpdated: 2015-06-30 02:12:03+00:00
EnvironmentName: elasticBeanstalkExa-env
SolutionStackName: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
settings:
AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger:
LowerBreachScaleIncrement: '-1'
AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger:
UpperBreachScaleIncrement: '1'
AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger:
UpperThreshold: '6000000'
...
Este comando rellena una lista de opciones de configuración disponibles en un editor de texto. Muchas
de las opciones que se muestran tienen un valor null; estas opciones no están configuradas de forma
predeterminada, pero pueden modificarse para actualizar los recursos de su entorno. Para obtener más
información sobre estas opciones, consulte Opciones de configuración (p. 252).
eb terminate
Si ha terminado de usar el entorno de momento, use eb terminate para terminarlo.
~/eb$ eb terminate
The environment "eb-dev" and all associated instances will be terminated.
To confirm, type the environment name: eb-dev
INFO: terminateEnvironment is starting.
INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-
AWSEBCloudwatchAlarmHigh-1XLMU7DNCBV6Y
INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-
AWSEBCloudwatchAlarmLow-8IVI04W2SCXS
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-
east-2:123456789012:scalingPolicy:1753d43e-ae87-4df6-
a405-11d31f4c8f97:autoScalingGroupName/awseb-e-jc8t3pmscn-stack-
AWSEBAutoScalingGroup-90TTS2ZL4MXV:policyName/awseb-e-jc8t3pmscn-stack-
AWSEBAutoScalingScaleUpPolicy-A070H1BMUQAJ
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-
east-2:123456789012:scalingPolicy:1fd24ea4-3d6f-4373-
affc-4912012092ba:autoScalingGroupName/awseb-e-jc8t3pmscn-stack-
AWSEBAutoScalingGroup-90TTS2ZL4MXV:policyName/awseb-e-jc8t3pmscn-stack-
AWSEBAutoScalingScaleDownPolicy-LSWFUMZ46H1V
INFO: Waiting for EC2 instances to terminate. This may take a few minutes.
-- Events -- (safe to Ctrl+C)
Para obtener una lista completa de comandos de la CLI de EB disponibles, consulte la Referencia de los
comandos de la CLI de EB (p. 612).
594
AWS Elastic Beanstalk Developer Guide
Creación de una aplicación
a partir del código fuente. La creación del entorno y cada implementación posterior comienzan por un paso
de creación y la posterior implementación de la aplicación resultante.
Note
Elastic Beanstalk amplía el formato de archivo de la especificación de compilación de CodeBuild para que
incluya las siguientes opciones de configuración adicionales:
eb_codebuild_settings:
CodeBuildServiceRole: role-name
ComputeType: size
Image: image
Timeout: minutes
CodeBuildServiceRole
El ARN o el nombre del rol de servicio de AWS Identity and Access Management (IAM) que CodeBuild
puede utilizar para interactuar con servicios de AWS dependientes en su nombre. Este valor es
obligatorio. Si lo omite, cualquier comando eb create o eb deploy posterior produce un error.
Para obtener más información sobre la creación de un rol de servicio para CodeBuild, consulte Crear
un rol de servicio de CodeBuild en la Guía del usuario de AWS CodeBuild.
Note
"codebuild:CreateProject",
"codebuild:DeleteProject",
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
Para obtener más información, consulte Control del acceso a Elastic Beanstalk (p. 502).
ComputeType
595
AWS Elastic Beanstalk Developer Guide
Creación e implementación del código de aplicación
Image
El nombre de la imagen de Docker Hub o Amazon ECR que CodeBuild utiliza para el entorno de
compilación. Esta imagen de Docker debe contener todas las herramientas y las bibliotecas de
tiempos de ejecución necesarias para compilar el código y debe coincidir con la plataforma de
destino de la aplicación. CodeBuild administra y conserva un conjunto de imágenes específicamente
diseñadas para utilizarse con Elastic Beanstalk. Se recomienda utilizar una de ellas. Para obtener más
información, consulte Imágenes de Docker proporcionadas por CodeBuild en la Guía del usuario de
AWS CodeBuild.
El valor Image es opcional. Si lo omite, el comando eb init intenta elegir la imagen que mejor se
adapte a su plataforma de destino. Además, si ejecuta eb init en modo interactivo y no puede elegir la
imagen automáticamente, le solicita que seleccione una. Al final de una inicialización correcta, eb init
escribe la imagen elegida en el archivo buildspec.yml.
Timeout
Período en minutos durante el que la compilación de CodeBuild se ejecuta antes de agotar el tiempo
de espera. Este valor es opcional. Para obtener más información acerca de los valores válidos y
predeterminados, consulte Creación de un proyecto de compilación en CodeBuild.
Note
~/eb$ eb init
596
AWS Elastic Beanstalk Developer Guide
Asociación de entornos de Elastic
Beanstalk con ramificaciones de Git
Implementación de cambios
De forma predeterminada, la CLI de EB implementa la última validación de la ramificación actual,
usando el ID y el mensaje de validación como la etiqueta y la descripción de la versión de compilación,
respectivamente. Si desea implementar los cambios en su entorno sin validación, puede utilizar la opción
--staged para implementar los cambios que se han añadido al área de ensayo.
global:
include_git_submodules: true
Consulte Herramientas de Git: submódulos para obtener más información acerca de los submódulos de
Git.
597
AWS Elastic Beanstalk Developer Guide
Asignación de etiquetas de Git a la versión de la aplicación
Comportamiento predeterminado
Al ejecutar eb init para configurar el proyecto, la CLI de EB agrega la opción
include_git_submodules y la configura en true. Esto garantiza que los submódulos que
tenga en el proyecto se incluyen en las implementaciones.
La CLI de EB CLI no siempre admite la inclusión de submódulos. Para evitar un cambio
accidental e indeseable en los proyectos que hubieran existido antes de que agregáramos
la compatibilidad con submódulos, la CLI de EB no incluye submódulos si falta la opción
include_git_submodules. Si tiene uno de estos proyectos existentes y desea incluir
submódulos en las implementaciones, agregue la opción y configúrela en true, tal como se
explica en esta sección.
Comportamiento de CodeCommit
La integración de Elastic Beanstalk con CodeCommit (p. 598) no admite submódulos en este
momento. Si ha habilitado su entorno para que se integre con CodeCommit, los submódulos no se
incluyen en las implementaciones.
Para poder implementar los cambios, la integración con CodeCommit requiere que confirme primero
los cambios. Sin embargo, a medida que realice el desarrollo o la depuración, es posible que no quiera
insertar los cambios que aún no ha confirmado. Puede evitar confirmar los cambios almacenándolos
provisionalmente y utilizando eb deploy --staged (que realiza una implementación estándar). O puede
confirmar los cambios primero en una ramificación de desarrollo o pruebas y fusionarlos después en una
ramificación maestra cuando el código esté listo. Con eb use, puede configurar la CLI de EB para realizar
la implementación en un entorno de la ramificación de desarrollo y en otro de la ramificación maestra.
Note
Algunas regiones no ofrecen CodeCommit. La integración entre Elastic Beanstalk y CodeCommit
no funciona en estas regiones.
Para obtener información acerca de los servicios de AWS ofrecidos en cada región, consulte
Tabla de regiones.
Secciones
• Requisitos previos (p. 599)
• Creación de un repositorio de CodeCommit con la CLI de EB (p. 599)
• Implementación del repositorio de CodeCommit (p. 600)
• Configuración de entornos y ramificaciones adicionales (p. 601)
598
AWS Elastic Beanstalk Developer Guide
Requisitos previos
Requisitos previos
Para poder utilizar CodeCommit con AWS Elastic Beanstalk, necesita un repositorio local de Git (uno que
ya tenga o uno nuevo que cree) con al menos una confirmación, permisos para utilizar CodeCommit y un
entorno de Elastic Beanstalk en una región admitida por CodeCommit. El entorno y el repositorio deben
estar en la misma región.
1. Ejecute eb init en la carpeta del proyecto. Durante la configuración, la CLI de EB le pregunta si desea
usar CodeCommit para almacenar el código y acelerar las implementaciones. Aunque anteriormente
configurara el proyecto con eb init, puede volver a ejecutarlo de nuevo para configurar CodeCommit.
Escriba y en el símbolo del sistema para configurar CodeCommit.
~/my-app$ eb init
Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control
service. To learn more, see Docs: https://aws.amazon.com/codecommit/
Do you wish to continue with CodeCommit? (y/n)(default is n): y
Select a repository
1) my-repo
2) [ Create new Repository ]
(default is 2): 2
599
AWS Elastic Beanstalk Developer Guide
Implementación del repositorio de CodeCommit
4. Seleccione una ramificación existente para las confirmaciones o utilice la CLI de EB para crear una
nueva ramificación.
~/my-app$ eb deploy
Starting environment deployment via CodeCommit
INFO: Environment update is starting.
INFO: Deploying new version to instance(s).
INFO: New application version was deployed to running EC2 instances.
INFO: Environment update completed successfully.
3. Si desea probar los cambios antes de confirmarlo, utilice la opción --staged para implementar los
cambios que agregó en el área de ensayo con git add.
600
AWS Elastic Beanstalk Developer Guide
Configuración de entornos y ramificaciones adicionales
1. Para cambiar la ramificación remota, utilice la opción --source del comando eb use (p. 663).
2. Para crear una nueva ramificación y el entorno, extraiga una nueva ramificación, insértela en
CodeCommit, cree el entorno y utilice eb use para conectar la ramificación local, la ramificación
remota y el entorno.
3. Para configurar CodeCommit de forma interactiva, utilice eb codesource codecommit (p. 618).
Select a repository
1) my-repo
2) my-app
3) [ Create new Repository ]
(default is 2): 2
Select a branch
1) master
2) test
3) [ Create new Branch with local HEAD ]
(default is 1): 1
4. Para deshabilitar la integración con CodeCommit, utilice eb codesource local (p. 618).
601
AWS Elastic Beanstalk Developer Guide
Monitorización del estado
2. Extraiga e inserte una ramificación para utilizarla con el entorno de Elastic Beanstalk.
3. Ejecute eb init. Elija el mismo nombre de ramificación, repositorio y región que está utilizando
actualmente.
~/my-app$ eb init
Select a default region
1) us-east-1 : US East (N. Virginia) 2) us-west-1 : EE.UU. Oeste (Norte de California)
3) us-west-2 : EE.UU. Oeste (Oregón) 4) eu-west-1 : UE (Irlanda) 5) eu-central-1 : UE
(Fráncfort) 6) ap-south-1 : Asia Pacífico (Mumbai) 7) ap-southeast-1 : Asia Pacífico
(Singapur) 8) ap-southeast-2 : Asia Pacífico (Sídney) 9) ap-northeast-1 : Asia
Pacífico (Tokio) 10) ap-northeast-2 : Asia Pacífico (Seúl) 11) sa-east-1 : América del
Sur (São Paulo) 12) cn-north-1 : China (Pekín) 13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : EE.UU. Este (Ohio) 15) ca-central-1 : Canadá (Central) 16) eu-west-2 :
UE (Londres) 17) eu-west-3 : UE (París) 18) eu-north-1 : UE Estocolmo 19) ap-east-1 :
Asia Pacífico (Hong Kong) 20) me-south-1 : Medio Oriente (Baréin)
(default is 3): 1
...
Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control
service. To learn more, see Docs: https://aws.amazon.com/codecommit/
Do you wish to continue with CodeCommit? (y/n)(default is n): y
Select a repository
1) my-app
2) [ Create new Repository ]
(default is 1): 1
Select a branch
1) master
2) dev-env
3) [ Create new Branch with local HEAD ]
(default is 2): 2
Para obtener más información acerca del uso de eb init, consulte Configuración de la CLI de EB (p. 586).
Después de instalar (p. 579) y configurar (p. 586) la CLI de EB, puede lanzar un nuevo
entorno (p. 590) e implementar el código en él con el comando eb create. Si ya tiene un entorno creado
en la Consola de administración de AWS, puede adjuntarlo a la CLI de EB ejecutando eb init en una
carpeta del proyecto y siguiendo después los mensajes (la carpeta del proyecto puede estar vacía).
602
AWS Elastic Beanstalk Developer Guide
Monitorización del estado
Important
Asegúrese de que está utilizando la última versión de la CLI de EB ejecutando pip install con
la opción --upgrade:
Para obtener instrucciones sobre la instalación de la CLI de EB, consulte Instalación de la CLI de
EB con scripts de configuración (p. 579).
Si desea utilizar la CLI de EB para monitorear el estado del entorno, primero debe configurar una carpeta
de proyecto local ejecutando eb init y siguiendo las instrucciones. Para obtener instrucciones completas,
consulte Configuración de la CLI de EB (p. 586).
Si ya tiene un entorno que se ejecuta en Elastic Beanstalk y desea utilizar la CLI de EB para monitorizar su
estado, siga estos pasos para adjuntarlo al entorno existente.
~/project$ eb init
Select an application to use
1) elastic-beanstalk-example
2) [ Create new Application ]
(default is 2): 1
Select the default environment.
You can change this later by typing "eb use [environment_name]".
1) elasticBeanstalkEx2-env
2) elasticBeanstalkExa-env
(default is 1): 1
~/project $ eb health
elasticBeanstalkExa-env Ok
2015-07-08 23:13:20
WebServer
Ruby 2.1 (Puma)
total ok warning degraded severe info pending unknown
5 5 0 0 0 0 0 0
603
AWS Elastic Beanstalk Developer Guide
Monitorización del estado
instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50
p10 requests
Overall 671.8 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001
0.000
i-d581497d 143.0 1430 0 0 0 0.003 0.002 0.001 0.001
0.000
i-d481497c 128.8 1288 0 0 0 0.003 0.002 0.001 0.001
0.000
i-136e00c0 125.4 1254 0 0 0 0.004 0.002 0.001 0.001
0.000
i-126e00c1 133.4 1334 0 0 0 0.003 0.002 0.001 0.001
0.000
i-8b2cf575 141.2 1412 0 0 0 0.003 0.002 0.001 0.001
0.000
En este ejemplo, hay una sola instancia que se ejecuta en un entorno de Windows.
~/project $ eb health
WindowsSampleApp-env Ok
2018-05-22 17:33:19
WebServer IIS 10.0 running on 64bit
Windows Server 2016/2.2.0
total ok warning degraded severe info pending unknown
1 1 0 0 0 0 0 0
604
AWS Elastic Beanstalk Developer Guide
Descripción de la salida
Descripción de la salida
En la salida, en la parte superior de la pantalla, se muestra el nombre del entorno, el estado general del
entorno y la fecha actual.
elasticBeanstalkExa-env Ok
2015-07-08 23:13:20
En las tres líneas siguientes, se indica el tipo de entorno ("WebServer" en este caso), la configuración
(Ruby 2.1 con Puma) y un desglose del número de instancias que tienen cada uno de los siete estados.
WebServer Ruby
2.1 (Puma)
total ok warning degraded severe info pending unknown
5 5 0 0 0 0 0 0
El resto de la salida está dividida en cuatro secciones. En la primera, el valor de status indica el estado,
mientras que el valor de cause indica la causa del estado del entorno en su conjunto y de cada instancia.
En el ejemplo siguiente, se muestran dos instancias del entorno con el estado Info y una causa que
indica que se ha iniciado una implementación.
Para obtener más información sobre los estados y los colores, consulte Colores y estados (p. 431).
En la sección requests, se muestra información de los logs de los servidores web de cada instancia. En
este ejemplo, cada instancia está atendiendo normalmente las solicitudes y no hay errores.
instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50
p10 requests
Overall 13.7 100.0 0.0 0.0 0.0 1.403 0.970 0.710 0.413
0.079
i-d581497d 2.4 100.0 0.0 0.0 0.0 1.102* 0.865 0.601 0.413
0.091
i-d481497c 2.7 100.0 0.0 0.0 0.0 0.842* 0.788 0.480 0.305
0.062
i-136e00c0 4.1 100.0 0.0 0.0 0.0 1.520* 1.088 0.883 0.524
0.104
i-126e00c1 2.2 100.0 0.0 0.0 0.0 1.334* 0.791 0.760 0.344
0.197
i-8b2cf575 2.3 100.0 0.0 0.0 0.0 1.162* 0.867 0.698 0.477
0.076
En la sección cpu, se muestran las métricas del sistema operativo de cada instancia. La salida difiere
según el sistema operativo. A continuación, se muestra la salida para entornos Linux.
605
AWS Elastic Beanstalk Developer Guide
Vista de estado interactiva
Para obtener más información sobre las métricas del servidor y del sistema operativo mostradas, consulte
Métricas de la instancia (p. 433).
$ eb health --refresh
elasticBeanstalkExa-env Ok
2015-07-09 22:10:04 (1 secs)
WebServer
Ruby 2.1 (Puma)
total ok warning degraded severe info pending unknown
5 5 0 0 0 0 0 0
606
AWS Elastic Beanstalk Developer Guide
Opciones de la vista de estado interactiva
instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50
p10 requests
Overall 671.8 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001
0.000
i-bb65c145 143.0 1430 0 0 0 0.003 0.002 0.001 0.001
0.000
i-ba65c144 128.8 1288 0 0 0 0.003 0.002 0.001 0.001
0.000
i-f6a2d525 125.4 1254 0 0 0 0.004 0.002 0.001 0.001
0.000
i-e8a2d53b 133.4 1334 0 0 0 0.003 0.002 0.001 0.001
0.000
i-e81cca40 141.2 1412 0 0 0 0.003 0.002 0.001 0.001
0.000
(Commands: Help,Quit, # # # #)
En este ejemplo, se muestra un entorno que recientemente se ha escalado verticalmente de una a cinco
instancias. La operación de escalado se hizo correctamente y todas las instancias están superando las
comprobaciones de estado y están listas para atender solicitudes. En el modo interactivo, la información
de estado se actualiza cada 10 segundos. En la esquina superior derecha, aparece un temporizador con la
cuenta atrás hasta la siguiente actualización.
En la esquina inferior izquierda, aparece una lista de opciones. Para salir del modo interactivo, pulse Q.
Para desplazarse, pulse las teclas de flecha. Para ver una lista de comandos adicionales, pulse H.
607
AWS Elastic Beanstalk Developer Guide
Entornos compuestos
Views
1 All tables/split view
2 Status Table
3 Request Summary Table
4 CPU%/Load Table
H This help menu
~/project-name
|-- component-a
| `-- env.yaml
`-- component-b
`-- env.yaml
Cada subcarpeta contiene el código fuente de un componente distinto de una aplicación que se ejecutará
en su propio entorno y un archivo de definición del entorno denominado env.yaml. Para obtener
información detallada sobre el formato env.yaml, consulte Manifiesto del entorno (env.yaml) (p. 369).
Para utilizar la API Compose Environments, ejecute primero eb init desde la carpeta del proyecto,
especificando cada componente por el nombre de la carpeta que lo contiene con la opción --modules:
La CLI de EB le pedirá que configure cada componente (p. 586) y después cree el directorio
.elasticbeanstalk en la carpeta de cada componente. La CLI de EB no crea archivos de configuración
en el directorio principal.
~/project-name
|-- component-a
| |-- .elasticbeanstalk
| `-- env.yaml
`-- component-b
608
AWS Elastic Beanstalk Developer Guide
Solución de problemas
|-- .elasticbeanstalk
`-- env.yaml
A continuación, ejecute el comando eb create con una lista de los entornos que desea crear, uno para
cada componente:
Este comando crea un entorno para cada componente. Los nombres de los entornos se crean
concatenando el valor de EnvironmentName especificado en el archivo env.yaml con el nombre del
grupo, separados por un guion. La longitud total de estas dos opciones y el guion no debe superar el
máximo permitido para el nombre del entorno, que es de 23 caracteres.
Puede actualizar cada componente individualmente o como un grupo. Especifique los componentes que
desea actualizar con la opción --modules.
La CLI de EB almacena el nombre del grupo que usó con eb create en la sección branch-defaults del
archivo de configuración de la CLI de EB bajo /.elasticbeanstalk/config.yml. Para implementar la
aplicación en otro grupo, utilice la opción --env-group-suffix cuando ejecute eb deploy. Si el grupo no
existe, la CLI de EB creará un nuevo grupo de entornos:
Para terminar los entornos, ejecute eb terminate en la carpeta de cada módulo. De forma predeterminada,
la CLI de EB mostrará un error si intenta terminar un entorno del que depende otro entorno en ejecución.
Termine primero el entorno dependiente o utilice la opción --ignore-links para invalidar el
comportamiento predeterminado:
ERROR: An error occurred while handling git command. Error code: 128 Error: fatal: Not a valid object
name HEAD
Causa: este mensaje de error aparece cuando se ha inicializado un repositorio Git, pero aún no se ha
validado. La CLI de EB busca la revisión HEAD cuando la carpeta del proyecto contiene un repositorio Git.
Solución: añada los archivos de su carpeta de proyecto al área de ensayo y realice la validación:
ERROR: This branch does not have a default environment. You must either specify an environment by
typing "eb status my-env-name" or set a default environment by typing "eb use my-env-name".
609
AWS Elastic Beanstalk Developer Guide
Solución de problemas de las implementaciones
Causa: cuando crea una nueva ramificación en git, esta no se asocia a un entorno de Elastic Beanstalk de
forma predeterminada.
Solución: ejecute eb list para ver una lista de los entornos disponibles. Después ejecute eb use env-name
para usar alguno de los entornos disponibles.
ERROR: 2.0+ Platforms require a service role. You can provide one with --service-role option
Causa: si especifica un nombre de entorno con eb create (por ejemplo, eb create my-env), la CLI de EB no
intentará crear un rol de servicio por usted. Si no dispone del rol de servicio predeterminado, se muestra el
error anterior.
Solución: ejecute eb create sin un nombre de entorno y siga las instrucciones para crear el rol de servicio
predeterminado.
1. Ejecute eb status para ver el estado de la implementación actual y el estado de los hosts de EC2. Por
ejemplo:
$ eb status --verbose
Note
El uso del modificador --verbose proporciona información sobre el estado de las instancias
en ejecución. Sin él, eb status mostrará solo información general acerca de su entorno.
2. Ejecute eb health para ver información sobre el estado de su entorno:
$ eb health --refresh
elasticBeanstalkExa-env Degraded
2016-03-28 23:13:20
WebServer
Ruby 2.1 (Puma)
total ok warning degraded severe info pending unknown
5 2 0 2 1 0 0 0
610
AWS Elastic Beanstalk Developer Guide
Solución de problemas de las implementaciones
instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50
p10
Overall 646.7 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001
0.000
i-dac3f859 167.5 1675 0 0 0 0.003 0.002 0.001 0.001
0.000
i-05013a81 161.2 1612 0 0 0 0.003 0.002 0.001 0.001
0.000
i-04013a80 0.0 - - - - - - - -
-
i-3ab524a1 155.9 1559 0 0 0 0.003 0.002 0.001 0.001
0.000
i-bf300d3c 162.1 1621 0 0 0 0.003 0.002 0.001 0.001
0.000
El ejemplo anterior muestra un entorno con cinco instancias en las que la implementación de la
versión "v2" produjo un error en la tercera instancia. Después de un error en la implementación, la
versión se restablece a la última versión correcta, que en este caso es "Sample Application" de la
primera implementación. Para obtener más información, consulte Uso de la CLI de EB para monitorear
el estado del entorno (p. 602).
3. Ejecute eb logs para descargar y ver los registros asociados con la implementación de su aplicación.
$ eb logs
4. Ejecute eb ssh para conectar con la instancia EC2 que ejecuta su aplicación y examinarla
directamente. En la instancia, su aplicación implementada puede encontrarse en el directorio /opt/
python/current/app y su entorno Python se encontrará en /opt/python/run/venv/.
5. Ejecute eb console para ver el entorno de su aplicación en la consola de administración de AWS.
Puede utilizar la interfaz web para examinar distintos aspectos de su implementación, incluida la
configuración, el estado, los eventos y los registros de la aplicación. También puede descargar las
versiones de la aplicación actuales o anteriores que ha implementado en el servidor.
611
AWS Elastic Beanstalk Developer Guide
Comandos de la CLI de EB
Comandos
• eb abort (p. 612)
• eb appversion (p. 613)
• eb clone (p. 616)
• eb codesource (p. 618)
• eb config (p. 619)
• eb console (p. 621)
• eb create (p. 622)
• eb deploy (p. 629)
• eb events (p. 631)
• eb health (p. 632)
• eb init (p. 633)
• eb labs (p. 636)
• eb list (p. 636)
• eb local (p. 637)
• eb logs (p. 640)
• eb open (p. 642)
• eb platform (p. 643)
• eb printenv (p. 650)
• eb restore (p. 651)
• eb scale (p. 652)
• eb setenv (p. 652)
• eb ssh (p. 653)
• eb status (p. 655)
• eb swap (p. 656)
• eb tags (p. 658)
• eb terminate (p. 660)
• eb upgrade (p. 662)
• eb use (p. 663)
• Opciones comunes (p. 663)
eb abort
Descripción
Cancela una actualización cuando una configuración del entorno cambia a instancias que siguen en curso.
612
AWS Elastic Beanstalk Developer Guide
eb appversion
Note
Si tiene más de dos entornos a los que va a aplicar una actualización, se le pedirá que seleccione
el nombre del entorno para el que desea restablecer los cambios.
Sintaxis
eb abort
eb abort environment-name
Opciones
Nombre Descripción
Salida
El comando muestra una lista de los entornos que están siendo actualizados en este momento y se le
pide que seleccione la actualización que desea cancelar. Si solo se está actualizando un entorno en
este momento, no tiene que especificar el nombre del entorno. Si todo sale bien, el comando revierte los
cambios de configuración del entorno. El proceso de restauración continúa hasta que todas las instancias
del entorno tengan la configuración del entorno anterior o hasta que el proceso de restauración produce un
error.
Ejemplo
El siguiente ejemplo cancela la actualización de la plataforma.
$ eb abort
Aborting update to environment "tmp-dev".
<list of events>
eb appversion
Descripción
Administra las versiones de la aplicación de Elastic Beanstalk, como la eliminación de una versión de la
aplicación o la creación de la política de ciclo de vida de versiones de la aplicación. Si invoca el comando
sin ninguna opción, se activa el modo interactivo (p. 614).
Utilice la opción lifecycle para mostrar o crear la política de ciclo de vida de versiones de la aplicación.
Encontrará más información en Configuración del ciclo de vida de las versiones de la aplicación (p. 62)
Sintaxis
eb appversion
613
AWS Elastic Beanstalk Developer Guide
eb appversion
Opciones
Nombre Descripción
o bien
--delete etiqueta-de-
versión
ciclo de vida Invoque el editor predeterminado para crear una nueva política de
ciclo de vida de versiones de aplicación. Utilice esta política para
evitar alcanzar el límite del número de versiones de aplicación que
se pueden crear.
o bien
lifecycle --print
Pulse d para eliminar una versión de la aplicación, pulse l para administrar la política de ciclo de vida de
aplicación o pulse q para salir sin hacer cambios.
Note
Salida
El comando con la opción --delete versión-de-etiqueta muestra un mensaje en el que se confirma
que se eliminó la versión de la aplicación.
Ejemplos
En el ejemplo siguiente, se muestra la ventana interactiva de una aplicación sin implementaciones.
614
AWS Elastic Beanstalk Developer Guide
eb appversion
En el ejemplo siguiente, se muestra la ventana interactiva de una aplicación con la cuarta versión
implementada y la etiqueta de versión Sample Application.
En el siguiente ejemplo, se muestra la salida de un comando eb appversion lifecycle -p, donde ACCOUNT-
ID es el ID de la cuenta de usuario:
615
AWS Elastic Beanstalk Developer Guide
eb clone
VersionLifecycleConfig:
MaxCountRule:
DeleteSourceFromS3: False
Enabled: False
MaxCount: 200
MaxAgeRule:
DeleteSourceFromS3: False
Enabled: False
MaxAgeInDays: 180
ServiceRole: arn:aws:iam::ACCOUNT-ID:role/aws-elasticbeanstalk-service-role
eb clone
Descripción
Clona un entorno en un nuevo entorno para que ambos tengan la misma configuración.
Note
Sintaxis
eb clone
eb clone environment-name
Opciones
Nombre Descripción
o bien
--clone_name cadena
o bien
--cname cadena
--envvars Propiedades del entorno en una lista separada por comas con el
formato nombre=valor.
Tipo: String
Restricciones:
616
AWS Elastic Beanstalk Developer Guide
eb clone
Nombre Descripción
• Las claves pueden contener un máximo de 128 caracteres. Los
valores pueden contener un máximo de 256 caracteres.
• Las claves y los valores distinguen entre mayúsculas y
minúsculas.
• Los valores no pueden coincidir con el nombre del entorno.
• Los valores no pueden incluir aws: ni elasticbeanstalk:.
• El tamaño combinado de todas las propiedades del entorno no
puede superar los 4096 bytes.
--tags nombre=valor Etiquetas (p. 233) para los recursos de su entorno en una lista
separada por comas con el formato nombre=valor.
Salida
Si se ejecuta correctamente, el comando crea un entorno que tiene la misma configuración que el entorno
original o con modificaciones, según se especifique en alguna de las opciones de eb clone.
Ejemplo
El siguiente ejemplo clona el entorno especificado.
$ eb clone
Enter name for Environment Clone
(default is tmp-dev-clone):
Enter DNS CNAME prefix
(default is tmp-dev-clone):
Environment details for: tmp-dev-clone
Application name: tmp
Region: us-west-2
Deployed Version: app-141029_144740
Environment ID: e-vjvrqnn5pv
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev-clone.elasticbeanstalk.com
Updated: 2014-10-29 22:00:23.008000+00:00
Printing Status:
2018-07-11 21:04:20 INFO: createEnvironment is starting.
2018-07-11 21:04:21 INFO: Using elasticbeanstalk-us-west-2-888888888888 as Amazon S3
storage bucket for environment data.
...
2018-07-11 21:07:10 INFO: Successfully launched environment: tmp-dev-clone
617
AWS Elastic Beanstalk Developer Guide
eb codesource
eb codesource
Descripción
Configure la CLI de EB para realizar la implementación desde un repositorio de CodeCommit (p. 598) o
deshabilite la integración de CodeCommit y cargue el paquete de código fuente de su equipo local.
Note
Algunas regiones no ofrecen CodeCommit. La integración entre Elastic Beanstalk y CodeCommit
no funciona en estas regiones.
Para obtener información acerca de los servicios de AWS ofrecidos en cada región, consulte
Tabla de regiones.
Sintaxis
eb codesource
eb codesource codecommit
eb codesource local
Opciones
Nombre Descripción
Salida
eb codesource le pide que elija entre implementaciones con integración de CodeCommit y estándar.
Ejemplos
Utilice eb codesource codecommit para configurar la integración de CodeCommit para la ramificación
actual.
Select a branch
1) master
2) test
3) [ Create new Branch with local HEAD ]
(default is 1): 1
Use eb codesource local para deshabilitar la integración de CodeCommit para la ramificación actual.
618
AWS Elastic Beanstalk Developer Guide
eb config
eb config
Descripción
Cambia las opciones de configuración del entorno. Este comando guarda las opciones de configuración del
entorno, además de cargar, descargar o mostrar las configuraciones guardadas.
Si el directorio raíz contiene un archivo platform.yaml que especifica una plataforma personalizada,
este comando también cambia las opciones de configuración del constructor en función de los valores
definidos en platform.yaml.
Note
eb config no muestra las propiedades del entorno. Para configurar las propiedades del entorno
que se pueden consultar desde la aplicación, utilice eb setenv (p. 269)
Sintaxis
eb config
eb config environment-name
A continuación se describe la sintaxis para utilizar el comando eb config para trabajar con configuraciones
guardadas. Para obtener ejemplos, consulte la sección Ejemplos (p. 620), más adelante en este tema.
Opciones
Nombre Descripción
--cfg config-name El nombre que se usa para una configuración guardada (que puede
especificar posteriormente para crear o actualizar un entorno desde
una configuración guardada).
619
AWS Elastic Beanstalk Developer Guide
eb config
Nombre Descripción
--timeout timeout Número de minutos que deben transcurrir antes de que se agote el
tiempo de espera del comando.
Salida
Si el comando se ejecuta correctamente sin parámetros, muestra los valores de las opciones actuales en el
editor de texto que ha configurado como la variable de entorno EDITOR. (Si no ha configurado una variable
de entorno EDITOR, la CLI de EB muestra el valor de la opción en el editor predeterminado de su equipo
para archivos YAML). Cuando guarde los cambios en el archivo y cierre el editor, el entorno se actualizará
con los valores de opciones del archivo.
Si el comando se ejecuta correctamente con el parámetro get, muestra la ubicación de la copia local que
ha descargado.
Si el comando se ejecuta correctamente con el parámetro save, muestra la ubicación del archivo
guardado.
Ejemplos
En esta sección se describe cómo cambiar el editor de texto que utiliza para ver y editar el archivo de
configuración de opciones.
$ export EDITOR=vim
Para Linux/UNIX, el siguiente ejemplo cambia el editor al que está instalado en /usr/bin/kate.
$ export EDITOR=/usr/bin/kate
En esta sección se proporcionan ejemplos del comando eb config cuando se ejecuta con parámetros.
El siguiente ejemplo descarga la configuración guardada con el nombre app-tmp de su bucket de Amazon
S3.
620
AWS Elastic Beanstalk Developer Guide
eb console
El siguiente ejemplo muestra los nombres de las configuraciones guardadas almacenadas en el bucket de
Amazon S3.
$ eb config list
El siguiente ejemplo carga la copia local de la configuración guardada con el nombre app-tmp en su bucket
de Amazon S3.
El siguiente ejemplo guarda las opciones de configuración del entorno en ejecución actual. Si no
proporciona un nombre para la configuración guardada, Elastic Beanstalk asigna un nombre al archivo de
configuración en función del nombre del entorno. Por ejemplo, en un entorno llamado tmp-dev este nombre
sería tmp-dev.cfg.yml. Elastic Beanstalk guarda el archivo en la carpeta /.elasticbeanstalk/
saved_configs/.
$ eb config save
El siguiente ejemplo muestra cómo utilizar la opción --cfg para guardar las opciones de configuración
del entorno tmp-dev en un archivo llamado v1-app-tmp.cfg.yml. Elastic Beanstalk guarda el archivo
en la carpeta /.elasticbeanstalk/saved_configs/. Si no especifica un nombre de entorno, Elastic
Beanstalk guarda las opciones de configuración del entorno en ejecución actual.
eb console
Descripción
Abra un navegador para mostrar el panel de configuración del entorno en la consola de administración de
Elastic Beanstalk.
Sintaxis
eb console
eb console environment-name
Opciones
Nombre Descripción
621
AWS Elastic Beanstalk Developer Guide
eb create
eb create
Descripción
Crea un nuevo entorno e implementa una versión de la aplicación en él.
Note
• Para usar el comando eb create en una aplicación .NET, debe crear un paquete de
implementación como se describe en Creación de un paquete de código fuente para una
aplicación .NET (p. 70), después definir la configuración de la CLI para implementar el paquete
como un artefacto, como se describe en Implementación de un artefacto en lugar de la carpeta
del proyecto (p. 589).
• Para crear entornos con el EB CLI se requiere una función de servicio (p. 22). Puede crear una
función de servicio creando un entorno en la Consola de Elastic Beanstalk. Si no cuenta con
ninguna función de servicio, el EB CLI intentará crear uno cuando ejecute eb create.
Sintaxis
eb create
eb create environment-name
Un nombre de entorno debe tener entre 4 y 40 caracteres y solo pueden contener letras, números y
guiones. Un nombre de entorno no puede empezar ni terminar con un guion.
Si incluye un nombre del entorno en el comando, la CLI de EB no le pedirá que seleccione ningún valor ni
que cree un rol de servicio.
Si ejecuta el comando sin argumento de nombre de entorno, se ejecuta en un flujo interactivo y le pide
que escriba o seleccione valores para algunos ajustes. En este flujo interactivo, en caso de que esté
implementando una aplicación de ejemplo, la CLI de EB también le pregunta si desea descargar esta
aplicación de ejemplo en el directorio de proyectos locales. Esto le permite utilizar la CLI de EB con el
nuevo entorno más tarde para ejecutar las operaciones que requieran el código de la aplicación, como por
ejemplo eb deploy (p. 629).
Opciones
Ninguna de estas opciones es obligatoria. Si ejecuta eb create sin ninguna opción, la CLI de EB le pedirá
que escriba o seleccione un valor para cada ajuste.
Nombre Descripción
--branch_default
622
AWS Elastic Beanstalk Developer Guide
eb create
Nombre Descripción
--cfg nombre-de-configuración Utilice para la plataforma una configuración guardada (p. 261)
en .elasticbeanstalk/saved_configs/ o el bucket
de Amazon S3. Especifique el nombre del archivo sin la
extensión .cfg.yml.
-db.engine motor Tipo de motor de base de datos. Si ejecuta eb create con esta
opción, la CLI de EB lanza el entorno con una base de datos
o bien adjuntada aunque el comando no se ejecute con la opción --
database.
--database.engine motor
Tipo: String
623
AWS Elastic Beanstalk Developer Guide
eb create
Nombre Descripción
Valores válidos:
Tipo: String
--env-group-suffix groupname Nombre del grupo que se añade al nombre del entorno. Solo
se utiliza con Compose Environments (p. 608).
-ip nombre_de_perfil Perfil de instancia con el rol de IAM que tiene las credenciales
de seguridad temporales que la aplicación necesita para
o bien obtener acceso a los recursos de AWS.
--instance_profile
nombre_de_perfil
624
AWS Elastic Beanstalk Developer Guide
eb create
Nombre Descripción
625
AWS Elastic Beanstalk Developer Guide
eb create
Nombre Descripción
--single Cree el entorno con una sola instancia Amazon EC2 y sin un
balanceador de carga.
Warning
--tier worker
Tipo: String
626
AWS Elastic Beanstalk Developer Guide
eb create
Nombre Descripción
Salida
Si se ejecuta correctamente, el comando le hará preguntas y después devolverá el estado de la operación
de creación. Si hubiera algún problema durante el lanzamiento, utilice la operación eb events (p. 631)
para obtener más detalles.
Ejemplos
En el siguiente ejemplo, se crea un entorno en modo interactivo.
$ eb create
Enter Environment Name
(default is tmp-dev): ENTER
Enter DNS CNAME prefix
(default is tmp-dev): ENTER
Select a load balancer type
1) classic
2) application
3) network
(default is 2): ENTER
Environment details for: tmp-dev
Application name: tmp
627
AWS Elastic Beanstalk Developer Guide
eb create
Region: us-east-2
Deployed Version: app-141029_145448
Environment ID: e-um3yfrzq22
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev.elasticbeanstalk.com
Updated: 2014-10-29 21:54:51.063000+00:00
Printing Status:
...
En el siguiente ejemplo también se crea un entorno en modo interactivo. En este ejemplo, su directorio de
proyecto no tiene código de aplicación. El comando implementa una aplicación de ejemplo y la descarga
en el directorio de proyectos local.
$ eb create
Enter Environment Name
(default is tmp-dev): ENTER
Enter DNS CNAME prefix
(default is tmp-dev): ENTER
Select a load balancer type
1) classic
2) application
3) network
(default is 2): ENTER
NOTE: The current directory does not contain any source code. Elastic Beanstalk is
launching the sample application instead.
Do you want to download the sample application into the current directory?
(Y/n): ENTER
INFO: Downloading sample application to the current directory.
INFO: Download complete.
Environment details for: tmp-dev
Application name: tmp
Region: us-east-2
Deployed Version: Sample Application
Environment ID: e-um3yfrzq22
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev.elasticbeanstalk.com
Updated: 2017-11-08 21:54:51.063000+00:00
Printing Status:
...
$ eb create dev-env
Creating application version archive "app-160312_014028".
Uploading test/app-160312_014028.zip to S3. This may take a while.
Upload Complete.
Application test has been created.
Environment details for: dev-env
Application name: test
Region: us-east-2
Deployed Version: app-160312_014028
Environment ID: e-6fgpkjxyyi
Platform: 64bit Amazon Linux 2015.09 v2.0.8 running PHP 5.6
Tier: WebServer-Standard
CNAME: UNKNOWN
Updated: 2016-03-12 01:40:33.614000+00:00
Printing Status:
...
628
AWS Elastic Beanstalk Developer Guide
eb deploy
eb deploy
Descripción
Implementa el paquete de código fuente de la aplicación desde el directorio del proyecto inicializado en la
aplicación en ejecución.
Si se instala Git, la CLI de EB utiliza el comando git archive para crear un archivo .zip a partir del
contenido del comando git commit más reciente.
Sintaxis
eb deploy
eb deploy environment-name
Opciones
Nombre Descripción
-l etiqueta_de_versión Especifique una etiqueta para usarla con la versión que crea la
CLI de EB. Si la etiqueta ya se ha utilizado, la CLI de EB vuelve a
o bien implementar la versión anterior a dicha etiqueta.
--env-group-suffix Nombre del grupo que se añade al nombre del entorno. Solo se
groupname utiliza con Compose Environments (p. 608).
629
AWS Elastic Beanstalk Developer Guide
eb deploy
Nombre Descripción
--message
"descripción_de_versión"
--modules componente-a Lista de componentes que se van a actualizar. Solo se utiliza con
componente-b Compose Environments (p. 608).
--timeout minutos Número de minutos que deben transcurrir antes de que se agote el
tiempo de espera del comando.
Salida
Si se ejecuta correctamente, el comando devuelve el estado de la operación deploy.
Ejemplo
En el ejemplo siguiente, se implementa la aplicación actual.
$ eb deploy
2018-07-11 21:05:22 INFO: Environment update is starting.
2018-07-11 21:05:27 INFO: Deploying new version to instance(s).
2018-07-11 21:05:53 INFO: New application version was deployed to running EC2 instances.
2018-07-11 21:05:53 INFO: Environment update completed successfully.
630
AWS Elastic Beanstalk Developer Guide
eb events
eb events
Descripción
Muestra los eventos más recientes del entorno.
Sintaxis
eb events
eb events environment-name
Opciones
Nombre Descripción
o bien
--follow
Salida
Si se ejecuta correctamente, el comando devuelve los eventos recientes.
Ejemplo
En el siguiente ejemplo, se devuelven los eventos más recientes.
$ eb events
2014-10-29 21:55:39 INFO createEnvironment is starting.
2014-10-29 21:55:40 INFO Using elasticbeanstalk-us-west-2-111122223333 as Amazon S3
storage bucket for environment data.
2014-10-29 21:55:57 INFO Created load balancer named: awseb-e-r-AWSEBLoa-
NSKUOK5X6Z9J
2014-10-29 21:56:16 INFO Created security group named: awseb-e-rxgrhjr9bx-stack-
AWSEBSecurityGroup-1UUHU5LZ20ZY7
2014-10-29 21:56:20 INFO Created Auto Scaling launch configuration named:awseb-e-
rxgrhjr9bx-stack-AWSEBAutoScalingLaunchConfiguration-AG68JQHE9NWO
2014-10-29 21:57:18 INFO Waiting for EC2 instances to launch. This may take a few
minutes.
2014-10-29 21:57:18 INFO Created Auto Scaling group named: awseb-e-rxgrhjr9bx-stack-
AWSEBAutoScalingGroup-1TE320ZCJ9RPD
2014-10-29 21:57:22 INFO Created Auto Scaling group policy named:
arn:aws:autoscaling:us-east-2:11122223333:scalingPolicy:2cced9e6-859b-421a-
be63-8ab34771155a:autoScalingGroupName/awseb-e-rxgrhjr9bx-stack-
AWSEBAutoScalingGroup-1TE320ZCJ9RPD:policyName/awseb-e-rxgrhjr9bx-stack-
AWSEBAutoScalingScaleUpPolicy-1I2ZSNVU4APRY
2014-10-29 21:57:22 INFO Created Auto Scaling group policy named:
arn:aws:autoscaling:us-east-2:11122223333:scalingPolicy:1f08b863-
bf65-415a-b584-b7fa3a69a0d5:autoScalingGroupName/awseb-e-rxgrhjr9bx-stack-
631
AWS Elastic Beanstalk Developer Guide
eb health
AWSEBAutoScalingGroup-1TE320ZCJ9RPD:policyName/awseb-e-rxgrhjr9bx-stack-
AWSEBAutoScalingScaleDownPolicy-1E3G7PZKZPSOG
2014-10-29 21:57:25 INFO Created CloudWatch alarm named: awseb-e-rxgrhjr9bx-stack-
AWSEBCloudwatchAlarmLow-VF5EJ549FZBL
2014-10-29 21:57:25 INFO Created CloudWatch alarm named: awseb-e-rxgrhjr9bx-stack-
AWSEBCloudwatchAlarmHigh-LA9YEW3O6WJO
2014-10-29 21:58:50 INFO Added EC2 instance 'i-c7ee492d' to Auto ScalingGroup
'awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingGroup-1TE320ZCJ9RPD'.
2014-10-29 21:58:53 INFO Successfully launched environment: tmp-dev
2014-10-29 21:59:14 INFO Environment health has been set to GREEN
2014-10-29 21:59:43 INFO Adding instance 'i-c7ee492d' to your environment.
eb health
Descripción
Devuelve el estado más reciente del entorno.
Sintaxis
eb health
eb health environment-name
Opciones
Nombre Descripción
--refresh
Salida
Si se ejecuta correctamente, el comando devuelve el estado reciente.
Ejemplo
En el siguiente ejemplo se devuelve la información de estado más reciente para un entorno Linux.
~/project $ eb health
elasticBeanstalkExa-env Ok
2015-07-08 23:13:20
WebServer Ruby
2.1 (Puma)
total ok warning degraded severe info pending unknown
5 5 0 0 0 0 0 0
632
AWS Elastic Beanstalk Developer Guide
eb init
instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50
p10 requests
Overall 671.8 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001
0.000
i-d581497d 143.0 1430 0 0 0 0.003 0.002 0.001 0.001
0.000
i-d481497c 128.8 1288 0 0 0 0.003 0.002 0.001 0.001
0.000
i-136e00c0 125.4 1254 0 0 0 0.004 0.002 0.001 0.001
0.000
i-126e00c1 133.4 1334 0 0 0 0.003 0.002 0.001 0.001
0.000
i-8b2cf575 141.2 1412 0 0 0 0.003 0.002 0.001 0.001
0.000
eb init
Descripción
Establece valores predeterminados para las aplicaciones de Elastic Beanstalk que se han creado con la
CLI de EB a través de una serie de preguntas.
Note
Los valores que se establecen con init se aplican únicamente al directorio y repositorio
actuales.
Sintaxis
eb init
633
AWS Elastic Beanstalk Developer Guide
eb init
eb init nombre-de-aplicación
Opciones
Si ejecuta eb init sin especificar la opción --platform, la CLI de EB le pedirá que especifique un valor
para cada ajuste.
Note
Si desea utilizar eb init para crear un nuevo par de claves, ssh-keygen debe estar instalado en
la máquina local y disponible desde la línea de comando.
Nombre Descripción
634
AWS Elastic Beanstalk Developer Guide
eb init
Nombre Descripción
Especifique la opción --platform para omitir la
configuración interactiva.
Note
Opciones
comunes (p. 663)
Salida
Si se ejecuta correctamente, el comando le guía por el proceso de configuración de una nueva aplicación
de Elastic Beanstalk mediante una serie de mensajes.
Ejemplo
La solicitud de ejemplo siguiente inicializa la CLI de EB y le pide que especifique información sobre la
aplicación. Sustituya el texto del marcador de posición rojo por sus propios valores.
$ eb init -i
Select a default region
1) us-east-1 : US East (N. Virginia) 2) us-west-1 : EE.UU. Oeste (Norte de California)
3) us-west-2 : EE.UU. Oeste (Oregón) 4) eu-west-1 : UE (Irlanda) 5) eu-central-1 : UE
(Fráncfort) 6) ap-south-1 : Asia Pacífico (Mumbai) 7) ap-southeast-1 : Asia Pacífico
(Singapur) 8) ap-southeast-2 : Asia Pacífico (Sídney) 9) ap-northeast-1 : Asia Pacífico
(Tokio) 10) ap-northeast-2 : Asia Pacífico (Seúl) 11) sa-east-1 : América del Sur (São
Paulo) 12) cn-north-1 : China (Pekín) 13) cn-northwest-1 : China (Ningxia) 14) us-east-2 :
EE.UU. Este (Ohio) 15) ca-central-1 : Canadá (Central) 16) eu-west-2 : UE (Londres) 17)
eu-west-3 : UE (París) 18) eu-north-1 : UE Estocolmo 19) ap-east-1 : Asia Pacífico (Hong
Kong) 20) me-south-1 : Medio Oriente (Baréin)
(default is 3): 3
635
AWS Elastic Beanstalk Developer Guide
eb labs
Select a keypair.
1) aws-eb
2) [ Create new KeyPair ]
(default is 2): 1
eb labs
Descripción
Los comandos secundarios de eb labs admiten una funcionalidad experimental o en proceso. Estos
comandos pueden eliminarse o modificarse en futuras versiones de la CLI de EB y no se garantiza su
compatibilidad con versiones posteriores.
Para ver una lista de los comandos secundarios disponibles y sus descripciones, ejecute eb labs --help.
eb list
Descripción
Muestra todos los entornos de la aplicación actual o todos los entornos de todas las aplicaciones, según se
especifique en la opción --all.
Si el directorio raíz contiene un archivo platform.yaml que especifica una plataforma personalizada,
este comando también muestra los entornos de constructor.
Sintaxis
eb list
Opciones
Nombre Descripción
636
AWS Elastic Beanstalk Developer Guide
eb local
Nombre Descripción
o bien
--all
--verbose
Salida
Si se ejecuta correctamente, el comando devuelve una lista de nombres de entorno en la que su entorno
actual está marcado con un asterisco (*).
Ejemplo 1
El siguiente ejemplo muestra sus entornos e indica que tmp-dev es su entorno predeterminado.
$ eb list
* tmp-dev
Ejemplo 2
El siguiente ejemplo muestra sus entornos con detalles adicionales.
$ eb list --verbose
Region: us-west-2
Application: tmp
Environments: 1
* tmp-dev : ['i-c7ee492d']
eb local
Descripción
Utilice eb local run para ejecutar localmente los contenedores de la aplicación en Docker. Compruebe el
estado del contenedor de la aplicación con eb local status. Abra la aplicación en un navegador web con eb
local open. Recupere la ubicación de los registros de la aplicación con eb local logs.
eb local setenv y eb local printenv le permiten configurar y ver las variables de entorno proporcionadas
para los contenedores de Docker que se ejecutaron localmente con eb local run.
Debe ejecutar todos los comandos eb local del directorio del proyecto de una aplicación de Docker que se
haya inicializado como un repositorio de la CLI de EB mediante eb init.
Note
Utilice eb local en un equipo local que ejecute Linux o macOS. El comando no admite Windows.
637
AWS Elastic Beanstalk Developer Guide
eb local
Antes de utilizar el comando en macOS, instale Docker para Mac, y asegúrese de que
boot2docker no está instalado (o no está en la ruta de ejecución). El comando eb local intenta
utilizar boot2docker si está presente, pero no funciona correctamente con él en macOS.
Sintaxis
eb local run
eb local status
eb local open
eb local logs
eb local setenv
eb local printenv
Opciones
eb local run
Nombre Descripción
eb local status
eb local open
eb local logs
eb local setenv
eb local printenv
Nombre Descripción
Salida
eb local run
638
AWS Elastic Beanstalk Developer Guide
eb local
Mensajes de estado de Docker. Permanece activo mientras se ejecuta la aplicación. Presione Ctrl+C para
detener la aplicación.
eb local status
Estado de cada uno de los contenedores que utiliza la aplicación, estén en ejecución o no.
eb local open
eb local logs
Ubicación de los registros generados en el directorio del proyecto por las aplicaciones que se ejecutan
localmente con eb local run.
eb local setenv
Ninguno
eb local printenv
Ejemplos
eb local run
eb local status
eb local logs
639
AWS Elastic Beanstalk Developer Guide
eb logs
eb local setenv
eb logs
Descripción
El comando eb logs tiene dos fines distintos: habilitar o deshabilitar el streaming de registros de
CloudWatch Logs y recuperar registros de instancia o registros de CloudWatch Logs. Con la opción --
cloudwatch-logs (-cw), el comando habilita o deshabilita el streaming de registros. Sin esta opción,
recupera los registros.
Al recuperar los registros, especifique la opción --all, --zip o --stream para recuperar los registros
completas. Si no especifica ninguna de estas opciones, Elastic Beanstalk recupera los registros de
finalización.
El comando procesa los registros del entorno especificado o predeterminado. Los registros pertinentes
dependen del tipo de contenedor. Si el directorio raíz contiene un archivo platform.yaml donde se
especifica una plataforma personalizada, este comando también procesa los registros del entorno del
constructor.
Para obtener más información, consulte the section called “CloudWatch Logs” (p. 468).
Sintaxis
Para habilitar o deshabilitar el streaming de registros a CloudWatch Logs:
640
AWS Elastic Beanstalk Developer Guide
eb logs
Opciones
Nombre Descripción
--all
--zip
o bien
--instance instance-id
--log-group log-group
641
AWS Elastic Beanstalk Developer Guide
eb open
Nombre Descripción
Si el streaming de logs de instancias está habilitado, y no especifica
la opción --log-group, el grupo de logs predeterminado es uno de
los siguientes:
Salida
De forma predeterminada, muestra los logs directamente en el terminal. Utiliza un programa de paginación
para mostrar la salida. Pulse Q o q para salir.
Con --stream muestra los logs existentes en el terminal y se sigue ejecutando. Pulse Ctrl+C para salir.
Con --all y --zip se guardan los logs en archivos locales y se muestra la ubicación del archivo.
Ejemplos
En el ejemplo siguiente se habilita el streaming de logs de instancias a CloudWatch Logs.
$ eb logs --zip
Retrieving logs...
Logs were saved to /home/workspace/environment/.elasticbeanstalk/logs/150622_173444.zip
eb open
Descripción
Abre la dirección URL pública de su sitio web en el navegador predeterminado.
Sintaxis
eb open
642
AWS Elastic Beanstalk Developer Guide
eb platform
eb open environment-name
Opciones
Nombre Descripción
Salida
El comando eb open no genera ninguna salida. Simplemente abre la aplicación en una ventana del
navegador.
eb platform
Descripción
Este comando admite dos espacios de trabajo diferentes:
Utilice este espacio de trabajo para seleccionar una plataforma predeterminada o mostrar información
sobre la plataforma actual.
Windows PowerShell utiliza ebp como alias del comando. Si está ejecutando la CLI de EB en
Windows PowerShell, utilice el formato largo de este comando: eb platform.
Sintaxis
eb platform create [version] [options]
643
AWS Elastic Beanstalk Developer Guide
eb platform
Opciones
Nombre Descripción
create [version] Crea una nueva versión de la plataforma. Más información (p. 645).
[options]
delete version [options] Elimina una versión de la plataforma. Más información (p. 646).
logs [version] [options] Muestra los registros creados en el entorno del constructor sobre una
versión de la plataforma. Más información (p. 648).
use [platform] [options] Permite seleccionar una plataforma diferente en la que se van a
crear las nuevas versiones. Más información (p. 648).
Opciones comunes
Todos los comandos eb platform incluyen las siguientes opciones comunes.
Nombre Descripción
O BIEN
--help
O BIEN
--verbose
O BIEN
--region REGION
644
AWS Elastic Beanstalk Developer Guide
eb platform
Nombre Descripción
eb platform create
Crea una nueva versión de la plataforma y devuelve el ARN de la nueva versión. Si ningún entorno del
constructor se está ejecutando en la región actual, este comando lanza uno. La opción versión y la
opción increment (-M, -m y -p) son mutuamente excluyentes.
Opciones
Nombre Descripción
O BIEN
--major-increment
O BIEN
--minor-increment
O BIEN
--patch-increment
--instance-type
TIPO_DE_INSTANCIA
--timeout minutos Establezca el número de minutos que deben transcurrir antes de que
se agote el tiempo de espera del comando.
645
AWS Elastic Beanstalk Developer Guide
eb platform
Nombre Descripción
eb platform delete
Elimina una versión de la plataforma. La versión no se elimina si algún entorno la está utilizando.
Opciones
Nombre Descripción
eb platform events
Muestra los eventos de una versión de la plataforma. Si se especifica una versión, se muestran los
eventos de dicha versión; de lo contrario, se muestran los eventos de la versión actual.
Opciones
Nombre Descripción
version Versión de los eventos que van a mostrar. Este valor es obligatorio.
O BIEN
--follow
eb platform init
Inicializa un repositorio de la plataforma.
Opciones
Nombre Descripción
646
AWS Elastic Beanstalk Developer Guide
eb platform
Nombre Descripción
O BIEN
--interactive
O BIEN
--keyname KEYNAME
Puede ejecutar este comando en un directorio que se haya inicializado anteriormente, aunque, en ese
caso, no se puede cambiar el tipo de espacio de trabajo.
eb platform list
Muestra las versiones de la plataforma vinculadas a un espacio de trabajo (directorio) o una región.
El comando devuelve resultados diferentes en función del tipo de espacio de trabajo en el que se ejecute,
tal y como se indica a continuación:
• En un espacio de trabajo de plataforma (un directorio inicializado por eb platform init), el comando
devuelve una lista de todas las versiones de la plataforma personalizada definida en el espacio de
trabajo. Añada la opción --verbose o --all-platforms para obtener una lista de todas las
versiones de la plataforma de todas las plataformas personalizadas que tiene su cuenta en la región
vinculada al espacio de trabajo.
• En un espacio de trabajo de aplicaciones (un directorio inicializado por eb init), el comando devuelve
una lista de todas las versiones de la plataforma, tanto para plataformas administradas por Elastic
Beanstalk como para las plataformas personalizadas de su cuenta. La lista utiliza nombres de versión
de la plataforma cortos y algunas variantes de versión de la plataforma pueden combinarse. Añada
la opción --verbose para obtener una lista detallada con nombres completos y todas las variantes
enumeradas por separado.
• En un directorio sin inicializar, el comando solo funciona con la opción --region. Devuelve una lista
de todas las versiones de la plataforma administrada por Elastic Beanstalk admitidas en la región. La
lista utiliza nombres de versión de la plataforma cortos y algunas variantes de versión de la plataforma
pueden combinarse. Añada la opción --verbose para obtener una lista detallada con nombres
completos y todas las variantes enumeradas por separado.
Opciones
Nombre Descripción
--all-platforms
647
AWS Elastic Beanstalk Developer Guide
eb platform
Nombre Descripción
--status STATUS • Ready
• Con error
• Deleting (Eliminándose)
• Creación
eb platform logs
Muestra los logs creados en el entorno del constructor sobre una versión de la plataforma.
Opciones
Nombre Descripción
eb platform status
Muestra el estado de una versión de la plataforma.
Opciones
Nombre Descripción
eb platform use
Permite seleccionar una plataforma diferente en la que se van a crear las nuevas versiones.
Opciones
Nombre Descripción
648
AWS Elastic Beanstalk Developer Guide
eb platform
Sintaxis
eb platform list
eb platform select
eb platform show
Opciones
Nombre Descripción
Ejemplo 1
En el siguiente ejemplo, se muestran los nombres de todas las configuraciones de todas las plataformas
que admite Elastic Beanstalk.
$ eb platform list
docker-1.5.0
glassfish-4.0-java-7-(preconfigured-docker)
glassfish-4.1-java-8-(preconfigured-docker)
go-1.3-(preconfigured-docker)
go-1.4-(preconfigured-docker)
iis-7.5
iis-8
iis-8.5
multi-container-docker-1.3.3-(generic)
node.js
php-5.3
php-5.4
php-5.5
python
python-2.7
python-3.4
python-3.4-(preconfigured-docker)
ruby-1.9.3
ruby-2.0-(passenger-standalone)
ruby-2.0-(puma)
ruby-2.1-(passenger-standalone)
ruby-2.1-(puma)
ruby-2.2-(passenger-standalone)
ruby-2.2-(puma)
tomcat-6
tomcat-7
tomcat-7-java-6
tomcat-7-java-7
tomcat-8-java-8
Ejemplo 2
En el siguiente ejemplo, se le pedirá que elija una plataforma en una lista y la versión que desee
implementar en la plataforma especificada.
$ eb platform select
649
AWS Elastic Beanstalk Developer Guide
eb printenv
Select a platform.
1) PHP
2) Node.js
3) IIS
4) Tomcat
5) Python
6) Ruby
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
(default is 1): 5
Ejemplo 3
En el ejemplo siguiente, se muestra información sobre la plataforma predeterminada actual.
$ eb platform show
Current default platform: Python 2.7
New environments will be running: 64bit Amazon Linux 2014.09 v1.2.0 running Python 2.7
eb printenv
Descripción
Muestra todas las propiedades del entorno en la ventana de comandos.
Sintaxis
eb printenv
eb printenv environment-name
Opciones
Nombre Descripción
Salida
Si se ejecuta correctamente, el comando devuelve el estado de la operación printenv.
Ejemplo
El siguiente ejemplo muestras las propiedades de entorno del entorno especificado.
650
AWS Elastic Beanstalk Developer Guide
eb restore
$ eb printenv
Environment Variables:
PARAM1 = Value1
eb restore
Descripción
Vuelve a crear un entorno terminado, creando un nuevo entorno con el mismo nombre, ID y configuración.
El nombre del entorno, el nombre del dominio y la versión de la aplicación debe estar disponibles para que
la reconstrucción se realice correctamente.
Sintaxis
eb restore
eb restore environment_id
Opciones
Nombre Descripción
Salida
La CLI de EB muestra una lista de entornos terminados disponibles para su restauración.
Ejemplo
$ eb restore
Select a terminated environment to restore
651
AWS Elastic Beanstalk Developer Guide
eb scale
eb scale
Descripción
Escala el entorno para que siempre se ejecute en un número especificado de instancias. Para ello,
establece el número mínimo y máximo de instancias en el número especificado.
Sintaxis
eb scale number-of-instances
Opciones
Nombre Descripción
Salida
Si se ejecuta correctamente, el comando actualiza el número mínimo y máximo de instancias que se van a
ejecutar al número especificado.
Ejemplo
En el siguiente ejemplo, el número de instancias se establece en 2.
$ eb scale 2
2018-07-11 21:05:22 INFO: Environment update is starting.
2018-07-11 21:05:27 INFO: Updating environment tmp-dev's configuration settings.
2018-07-11 21:08:53 INFO: Added EC2 instance 'i-5fce3d53' to Auto Scaling Group 'awseb-
e-2cpfjbra9a-stack-AWSEBAutoScalingGroup-7AXY7U13ZQ6E'.
2018-07-11 21:08:58 INFO: Successfully deployed new configuration to environment.
2018-07-11 21:08:59 INFO: Environment update completed successfully.
eb setenv
Descripción
Establece propiedades de entorno (p. 236) para el entorno predeterminado.
Sintaxis
eb setenv key=value
Puede incluir tantas propiedades como desee, pero el tamaño total de todas las propiedades no puede
superar los 4096 bytes. Puede eliminar una variable dejando su valor en blanco. Consulte Configuración
de las propiedades de entorno (p. 237) para ver los límites.
652
AWS Elastic Beanstalk Developer Guide
eb ssh
Note
Si value contiene un carácter especial, ese carácter debe ir precedido por el carácter de escape
\.
Opciones
Nombre Descripción
Salida
Si se ejecuta sin errores, el comando indica que la actualización del entorno se ejecutó correctamente.
Ejemplo
En el ejemplo siguiente, se establece la variable de entorno ExampleVar.
$ eb setenv ExampleVar=ExampleValue
2018-07-11 21:05:25 INFO: Environment update is starting.
2018-07-11 21:05:29 INFO: Updating environment tmp-dev's configuration settings.
2018-07-11 21:06:50 INFO: Successfully deployed new configuration to environment.
2018-07-11 21:06:51 INFO: Environment update completed successfully.
El comando siguiente establece varias propiedades del entorno. Agrega la propiedad de entorno foo y
establece su valor en bar, cambia el valor de la propiedad JDBC_CONNECTION_STRING y elimina las
propiedades PARAM4 y PARAM5.
eb ssh
Descripción
Note
Este comando no funciona con entornos que ejecutan instancias Windows Server.
Conéctese a una instancia Amazon EC2 Linux del entorno a través de Secure Shell (SSH). Si un entorno
tiene varias instancias en ejecución, la CLI de EB le pedirá que especifique a qué instancia quiere
conectarse. Para poder utilizar este comando, SSH debe estar instalado en la máquina local y disponible
en la línea de comando. Los archivos de clave privada deben estar en una carpeta llamada .ssh del
directorio del usuario, y las instancias EC2 del entorno deben tener direcciones IP públicas.
Si no configuró SSH anteriormente, puede utilizar la CLI de EB para crear una clave cuando
ejecute eb init. Si ya ejecutó eb init, hágalo de nuevo con la opción --interactive y seleccione
653
AWS Elastic Beanstalk Developer Guide
eb ssh
Yes y Create New Keypair cuando se lo pidan al configurar SSH. La CLI de EB almacenará las
claves creadas durante este proceso en la propia carpeta.
Este comando abre temporalmente el puerto 22 del grupo de seguridad del entorno al tráfico entrante
procedente de 0.0.0.0/0 (todas las direcciones IP) si no hay ninguna regla aplicable al puerto 22. Si ha
configurado el grupo de seguridad del entorno para que abra el puerto 22 a un intervalo de CIDR limitado
para aumentar la seguridad, la CLI de EB respetará esta configuración y no hará ningún cambio en el
grupo de seguridad. Para anular esta configuración y hacer que la CLI de EB abra el puerto 22 a todo el
tráfico entrante, utilice la opción --force.
Consulte Grupos de seguridad (p. 182) para obtener información sobre la configuración del grupo de
seguridad del entorno.
Sintaxis
eb ssh
eb ssh environment-name
Opciones
Nombre Descripción
--instance
--number
--keep_open
--timeout minutos Establezca el número de minutos que deben transcurrir antes de que
se agote el tiempo de espera del comando.
654
AWS Elastic Beanstalk Developer Guide
eb status
Nombre Descripción
Solo se puede utilizar con el argumento --setup.
Salida
Si se ejecuta correctamente, el comando abre una conexión SSH con la instancia.
Ejemplo
En el siguiente ejemplo, se establece conexión con el entorno especificado.
$ eb ssh
Select an instance to ssh into
1) i-96133799
2) i-5931e053
(default is 1): 1
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
The authenticity of host '54.191.45.125 (54.191.45.125)' can't be established.
RSA key fingerprint is ee:69:62:df:90:f7:63:af:52:7c:80:60:1b:3b:51:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '54.191.45.125' (RSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
No packages needed for security; 1 packages available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-8-185 ~]$ ls
[ec2-user@ip-172-31-8-185 ~]$ exit
logout
Connection to 54.191.45.125 closed.
INFO: Closed port 22 on ec2 instance security group
eb status
Descripción
Proporciona información sobre el estado del entorno.
Sintaxis
eb status
eb status environment-name
655
AWS Elastic Beanstalk Developer Guide
eb swap
Opciones
Nombre Descripción
--verbose
Salida
Si se ejecuta correctamente, el comando devuelve la siguiente información sobre el entorno:
• Environment name
• Nombre de la aplicación
• Versión de la aplicación implementada
• ID del entorno
• Plataforma
• Capa del entorno
• CNAME
• Momento en que se actualizó por última vez el entorno
• Estado
• Estado
Si utiliza el modo detallado, la CLI de EB proporciona también el número de instancias Amazon EC2.
Ejemplo
El siguiente ejemplo muestra el estado del entorno tmp-dev.
$ eb status
Environment details for: tmp-dev
Application name: tmp
Region: us-west-2
Deployed Version: None
Environment ID: e-2cpfjbra9a
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev.elasticbeanstalk.com
Updated: 2014-10-29 21:37:19.050000+00:00
Status: Launching
Health: Grey
eb swap
Descripción
Intercambia el CNAME del entorno con el CNAME de otro entorno (por ejemplo, para evitar tiempos de
inactividad cuando se actualiza la versión de la aplicación).
656
AWS Elastic Beanstalk Developer Guide
eb swap
Note
Si tiene más de dos entornos, se le pedirá que seleccione el nombre del entorno que actualmente
está utilizando el CNAME deseado en una lista de entornos. Para evitar esto, puede especificar el
nombre del entorno que se va utilizar con la opción -n al ejecutar el comando.
Sintaxis
eb swap
eb swap environment-name
Note
Opciones
Nombre Descripción
--destination_name
Salida
Si se ejecuta correctamente, el comando devuelve el estado de la operación swap.
Ejemplos
La solicitud del ejemplo siguiente intercambia el entorno tmp-dev con live-env.
$ eb swap
Select an environment to swap with.
1) staging-dev
2) live-env
(default is 1): 2
2018-07-11 21:05:25 INFO: swapEnvironmentCNAMEs is starting.
2018-07-11 21:05:26 INFO: Swapping CNAMEs for environments 'tmp-dev' and 'live-env'.
2018-07-11 21:05:30 INFO: 'tmp-dev.elasticbeanstalk.com' now points to 'awseb-e-j-
AWSEBLoa-M7U21VXNLWHN-487871449.us-west-2.elb.amazonaws.com'.
2018-07-11 21:05:30 INFO: Completed swapping CNAMEs for environments 'tmp-dev' and
'live-env'.
En el ejemplo siguiente, el entorno tmp-dev se intercambia con el entorno live-env, pero no se le pide que
especifique ni seleccione ningún valor para las opciones de configuración.
657
AWS Elastic Beanstalk Developer Guide
eb tags
eb tags
Descripción
Agregue, elimine, actualice y enumere etiquetas de un recurso de Elastic Beanstalk.
Para obtener más información sobre el etiquetado de recursos en Elastic Beanstalk, consulte Etiquetado
de recursos de aplicaciones de AWS Elastic Beanstalk (p. 72).
Sintaxis
eb tags [environment-name] [--resource ARN] -l | --list
Puede combinar las opciones de subcomando --add, --update y --delete en un único comando. Se
necesita como mínimo uno. No se puede combinar ninguna de estas tres opciones de subcomandos con
--list.
Si no hay argumentos adicionales, todos estos comandos enumeran o modifican las etiquetas del entorno
predeterminado en la aplicación del directorio actual. Con un argumento environment-name, los
comandos enumeran o modifican las etiquetas de ese entorno. Con la opción --resource, los comandos
enumeran o modifican las etiquetas de cualquier recurso de Elastic Beanstalk: una aplicación, un entorno,
una versión de la aplicación, una configuración guardada o una versión de la plataforma personalizada.
Especifique el recurso por su nombre de recurso de Amazon (ARN).
Opciones
Ninguna de estas opciones es obligatoria. Si ejecuta eb create sin especificar ninguna opción, le pedirán
que especifique o seleccione un valor para cada ajuste.
Nombre Descripción
--list
--add key1=value1[,key2=value2 ...]
658
AWS Elastic Beanstalk Developer Guide
eb tags
Nombre Descripción
Valores válidos: consulte Etiquetado de recursos (p. 72).
--region region Para ver la lista de valores que puede especificar para esta
opción, consulte AWS Elastic Beanstalk en Regiones y
puntos de conexión de la Referencia general de Amazon Web
Services.
Salida
La opción del subcomando --list muestra una lista de las etiquetas del recurso. La salida muestra tanto
las etiquetas que Elastic Beanstalk aplica de forma predeterminada como las etiquetas personalizadas.
$ eb tags --list
Showing tags for environment 'MyApp-env':
Key Value
Name MyApp-env
elasticbeanstalk:environment-id e-63cmxwjaut
elasticbeanstalk:environment-name MyApp-env
mytag tagvalue
tag2 2nd value
Las opciones de subcomandos --add, --update y --delete no tienen ninguna salida cuando se
ejecutan con éxito. Puede agregar la opción --verbose para ver la salida detallada de la actividad del
comando.
659
AWS Elastic Beanstalk Developer Guide
eb terminate
Updated Tags:
Key Value
Ejemplos
El siguiente comando añade una etiqueta correctamente con la clave tag1 y el valor value1 al entorno
predeterminado de la aplicación y, al mismo tiempo, elimina la etiqueta tag2.
El siguiente comando añade correctamente una etiqueta a una configuración guardada dentro de una
aplicación.
El siguiente comando produce un error porque intenta actualizar una etiqueta no existente.
tag3
El siguiente comando produce un error porque intenta actualizar y eliminar la misma clave.
eb terminate
Descripción
Termina el entorno en ejecución para que no se generen cargos por los recursos de AWS no utilizados.
Con la opción --all se elimina la aplicación en que se inicializó el directorio actual mediante eb
init (p. 633). El comando termina todos los entornos de la aplicación, termina las versiones de la
aplicación (p. 54) y sus configuraciones guardadas (p. 361) y, a continuación, elimina la aplicación.
Siempre podrá lanzar más adelante un nuevo entorno con la misma versión. Si tiene datos de un
entorno que desea conservar, cree una snapshot de su instancia de base de datos actual antes
de terminar el entorno. Podrá usarla más adelante como referencia para la nueva instancia de
base de datos cuando cree un nuevo entorno. Para obtener más información, consulte Creación
de una instantánea de base de datos en la Guía del usuario de Amazon Relational Database
Service.
660
AWS Elastic Beanstalk Developer Guide
eb terminate
Sintaxis
eb terminate
eb terminate environment-name
Opciones
Nombre Descripción
Salida
Si se ejecuta correctamente, el comando devuelve el estado de la operación terminate.
Ejemplo
La solicitud del ejemplo siguiente termina el entorno tmp-dev.
$ eb terminate
The environment "tmp-dev" and all associated instances will be terminated.
To confirm, type the environment name: tmp-dev
2018-07-11 21:05:25 INFO: terminateEnvironment is starting.
2018-07-11 21:05:40 INFO: Deleted CloudWatch alarm named: awseb-e-2cpfjbra9a-stack-
AWSEBCloudwatchAlarmHigh-16V08YOF2KQ7U
2018-07-11 21:05:41 INFO: Deleted CloudWatch alarm named: awseb-e-2cpfjbra9a-stack-
AWSEBCloudwatchAlarmLow-6ZAWH9F20P7C
2018-07-11 21:06:42 INFO: Deleted Auto Scaling group policy named:
arn:aws:autoscaling:us-east-2:11122223333:scalingPolicy:5d7d3e6b-
d59b-47c5-b102-3e11fe3047be:autoScalingGroupName/awseb-e-2cpfjbra9a-stack-
AWSEBAutoScalingGroup-7AXY7U13ZQ6E:policyName/awseb-e-2cpfjbra9a-stack-AWSEBAutoSca
lingScaleUpPolicy-1876U27JEC34J
2018-07-11 21:06:43 INFO: Deleted Auto Scaling group policy named:
arn:aws:autoscaling:us-east-2:11122223333:scalingPolicy:29c6e7c7-7ac8-46fc-91f5-
cfabb65b985b:autoScalingGroupName/awseb-e-2cpfjbra9a-stack-
AWSEBAutoScalingGroup-7AXY7U13ZQ6E:policyName/awseb-e-2cpfjbra9a-stack-AWSEBAutoSca
lingScaleDownPolicy-SL4LHODMOMU
2018-07-11 21:06:48 INFO: Waiting for EC2 instances to terminate. This may take a few
minutes.
2018-07-11 21:08:55 INFO: Deleted Auto Scaling group named: awseb-e-2cpfjbra9a-stack-
AWSEBAutoScalingGroup-7AXY7U13ZQ6E
2018-07-11 21:08:57 INFO: Deleted Auto Scaling launch configuration named: awseb-
e-2cpfjbra9a-stack-AWSEBAutoScalingLaunchConfiguration-19UFHYGYWORZ
2018-07-11 21:09:10 INFO: Deleted security group named: awseb-e-2cpfjbra9a-stack-
AWSEBSecurityGroup-XT4YYGFL7I99
2018-07-11 21:09:40 INFO: Deleted load balancer named: awseb-e-2-AWSEBLoa-AK6RRYFQVV3S
661
AWS Elastic Beanstalk Developer Guide
eb upgrade
eb upgrade
Descripción
Actualiza la plataforma de su entorno a la versión más reciente de la plataforma en la que se está
ejecutando en este momento.
Si el directorio raíz contiene un archivo platform.yaml que especifica una plataforma personalizada,
este comando actualiza el entorno a la versión más reciente de la plataforma personalizada en la que se
está ejecutando en este momento.
Sintaxis
eb upgrade
eb upgrade environment-name
Opciones
Nombre Descripción
--force Actualiza sin pedirle que confirme el nombre del entorno antes de
empezar el proceso de actualización.
Salida
El comando muestra un resumen de los cambios y le pedirá que confirme la actualización escribiendo el
nombre del entorno. En caso de éxito, el entorno se actualiza y se lanza con la versión más reciente de la
plataforma.
Ejemplo
En el siguiente ejemplo se actualiza la versión de la plataforma actual del entorno especificado a la última
versión de la plataforma disponible.
$ eb upgrade
Current platform: 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7
Latest platform: 64bit Amazon Linux 2014.09 v1.2.0 running Python 2.7
WARNING: This operation replaces your instances with minimal or zero downtime. You may
cancel the upgrade after it has started by typing "eb abort".
You can also change your platform version by typing "eb clone" and then "eb swap".
662
AWS Elastic Beanstalk Developer Guide
eb use
eb use
Descripción
Establece el entorno especificado en el entorno predeterminado.
Cuando se utiliza Git, eb use establece el entorno predeterminado de la ramificación actual. Ejecute este
comando una vez en cada ramificación que desee implementar en Elastic Beanstalk.
Sintaxis
eb use environment-name
Opciones
Nombre Descripción
--region region
Opciones comunes
Puede utilizar las siguientes opciones con todos los comandos de la CLI de EB.
Nombre Descripción
Tipo: String
663
AWS Elastic Beanstalk Developer Guide
CLI de EB 2.6 (retirado)
Debe migrar a la última versión de EB CLI 3. Se pueden administrar los entornos lanzados con EB CLI 2.6
o versiones anteriores de la CLI de EB.
La CLI de EB introduce los comandos eb create, eb deploy, eb open, eb console, eb scale, eb setenv, eb
config, eb terminate, eb clone, eb list, eb use, eb printenv y eb ssh. En EB CLI 3.1 o posterior, también
puede utilizar el comando eb swap. En EB CLI 3.2 solo, puede utilizar los comandos eb abort, eb platform
y eb upgrade. Además de estos nuevos comandos, los comandos de EB CLI 3 se diferencian de los
comandos de EB CLI 2.6 en varios casos:
• eb init: utilice eb init para crear un directorio .elasticbeanstalk en el directorio del proyecto
existente y crear una nueva aplicación de Elastic Beanstalk para el proyecto. A diferencia de lo que
sucede con las versiones anteriores, EB CLI 3 y las versiones posteriores no le piden que cree un
entorno.
• eb start: EB CLI 3 no incluye el comando eb start. Use eb create para crear un entorno.
• eb stop: EB CLI 3 no incluye el comando eb stop. Utilice eb terminate para terminar completamente un
entorno y limpiarlo.
• eb push y git aws.push: EB CLI 3 no incluye los comandos eb push y git aws.push. Use eb deploy
para actualizar el código de la aplicación.
• eb update: EB CLI 3 no incluye el comando eb update. Use eb config para actualizar un entorno.
• eb branch: EB CLI 3 no incluye el comando eb branch.
Para obtener más información acerca del uso de los comandos de EB CLI 3 para crear y administrar una
aplicación, consulte Referencia de los comandos de la CLI de EB (p. 612). Para obtener una tutorial
de implementación de una aplicación de ejemplo con EB CLI 3, consulte Administración de entornos de
Elastic Beanstalk con la CLI de EB (p. 590).
Si aún no lo ha hecho, cree un repositorio de código en CodeCommit, tal y como se describe en Migración
a CodeCommit.
Una vez que haya instalado (p. 579) y configurado (p. 586) la CLI de EB, dispone de dos ocasiones
para asociar la aplicación a su repositorio de CodeCommit, incluida una ramificación específica.
664
AWS Elastic Beanstalk Developer Guide
CLI de la API de EB (retirado)
• Cuando ejecuta eb init, como en el siguiente ejemplo, donde myRepo es el nombre de su repositorio de
CodeCommit y myBranch es la ramificación en CodeCommit.
• Cuando ejecuta eb deploy, como en el siguiente ejemplo, donde myRepo es el nombre de su repositorio
de CodeCommit y myBranch es la ramificación en CodeCommit.
Para obtener más información, incluido cómo implementar actualizaciones de código incrementales en un
entorno de Elastic Beanstalk sin tener que volver a cargar todo el proyecto, consulte Uso de la CLI de EB
con AWS CodeCommit (p. 598).
665
AWS Elastic Beanstalk Developer Guide
Conversión de scripts de CLI de API de Elastic Beanstalk
666
AWS Elastic Beanstalk Developer Guide
Conversión de scripts de CLI de API de Elastic Beanstalk
667
AWS Elastic Beanstalk Developer Guide
Plataformas de Docker
Implementación de aplicaciones
de Elastic Beanstalk desde
contenedores de Docker
Elastic Beanstalk permite implementar aplicaciones web desde contenedores de Docker. Con los
contenedores de Docker, puede definir su propio entorno de ejecución. Puede elegir una plataforma,
un lenguaje de programación y unas dependencias de la aplicación (por ejemplo, herramientas o
administradores de paquetes) propios que no sean compatibles con otras plataformas. Los contenedores
de Docker son autónomos y contienen todo el software y la información de configuración que la aplicación
web necesita para ejecutarse. Todas las variables de entorno definidas en la consola de Elastic Beanstalk
se transfieren a los contenedores.
Si usa Docker con Elastic Beanstalk, tendrá una infraestructura que administrará automáticamente los
detalles de aprovisionamiento de la capacidad, el balanceo de carga, el escalado y la monitorización del
estado de las aplicaciones. Puede administrar la aplicación web en un entono que sea compatible con el
conjunto de servicios que se integran con Elastic Beanstalk; por ejemplo, VPC, RDS e IAM. Para obtener
más información sobre Docker, como su instalación, el software que requiere y el uso de imágenes para
lanzar contenedores de Docker, visite Docker: the Linux container engine.
Note
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Plataformas de Docker
La familia de plataformas de Docker para Elastic Beanstalk tiene dos plataformas genéricas ("single
container" y "multicontainer") y varios contenedores preconfigurados.
Consulte la página Plataformas admitidas en el documento Plataformas de AWS Elastic Beanstalk para
obtener información sobre la versión de la plataforma compatible actualmente con cada plataforma de
Docker.
Si desea ver ejemplos y obtener ayuda para empezar a usar un entorno de Docker con un único
contenedor, consulte Entornos de Docker con un único contenedor (p. 669). Para obtener información
668
AWS Elastic Beanstalk Developer Guide
Multicontainer Docker
detallada sobre los formatos de definición de contenedor y su uso, consulte Configuración de Docker de un
solo contenedor (p. 673).
Multicontainer Docker
La otra plataforma básica, Multicontainer Docker, utiliza Amazon Elastic Container Service para coordinar
una implementación de varios contenedores de Docker en un clúster de Amazon ECS de un entorno de
Elastic Beanstalk. Todas las instancias del entorno ejecutan el mismo conjunto de contenedores, que está
definido en un archivo Dockerrun.aws.json. Utilice la plataforma "Multicontainer" cuando necesite
implementar varios contenedores de Docker en cada instancia.
Para obtener más información sobre la plataforma Docker Multicontainer y su uso, consulte Entornos
Multicontainer Docker (p. 677). En el tema Configuración de Docker multicontenedor (p. 681), se
explica la versión 2 del formato Dockerrun.aws.json, que es similar, aunque no compatible, a la versión que
se utiliza con la plataforma Single Container. También hay un tutorial (p. 685) que le guiará a través de
una implementación desde cero de un entorno con varios contenedores que ejecuta un sitio web de PHP
con un proxy nginx delante instalado en un contenedor diferente.
Para obtener más información, consulte Contenedores de Docker preconfigurados (p. 691).
Temas
• Requisitos previos (p. 669)
• Contenerización de aplicaciones de Elastic Beanstalk (p. 670)
• Prueba local de contenedor (p. 671)
• Implementación de un contenedor con un archivo de Docker (p. 671)
• Prueba de un imagen de Docker remota (p. 671)
• Implementación de una imagen de Docker remota en Elastic Beanstalk (p. 672)
• Eliminación (p. 673)
• Configuración de Docker de un solo contenedor (p. 673)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk, Interfaz de línea de comando de Elastic Beanstalk (CLI de EB) (p. 578) y Docker. Para seguir
este tutorial, necesita una instalación local activa de Docker. Para obtener más información acerca de la
instalación de Docker, consulte la guía de instalación de Docker.
669
AWS Elastic Beanstalk Developer Guide
Contenerización de aplicaciones de Elastic Beanstalk
Si aún no lo ha hecho, siga las instrucciones que se indican en Introducción al uso de Elastic
Beanstalk (p. 3) para lanzara el primer entorno de Elastic Beanstalk. En este tutorial se utiliza la CLI de
EB, pero también puede crear entornos y cargar aplicaciones mediante la Consola de Elastic Beanstalk.
Para obtener más información acerca de la configuración de entornos de Docker de un solo contenedor,
consulte Configuración de Docker de un solo contenedor (p. 673).
~/eb-docker-flask/
|-- Dockerfile
|-- application.py
Example ~/eb-docker-flask/application.py
# Add a rule when the page is accessed with a name appended to the site
# URL
application.add_url_rule('/<username>', 'hello', (lambda username:
header_text + say_hello(username) + home_link + footer_text))
Example ~/eb-docker-flask/Dockerfile
FROM python:3.6
COPY . /app
WORKDIR /app
RUN pip install Flask==1.0.2
670
AWS Elastic Beanstalk Developer Guide
Prueba local de contenedor
EXPOSE 5000
CMD ["python", "application.py"]
(Opcional) Utilice eb local run para crear y ejecutar el contenedor de forma local. Para obtener más
información acerca del comando eb local, consulte eb local (p. 637). El comando eb local no es compatible
con Windows. Si lo prefiere, puede crear y ejecutar el contenedor con los comandos docker build y docker
run. Para obtener más información, consulte la documentación de Docker.
(Opcional) Aunque el contenedor se está ejecutando, utilice el comando eb local open para ver la
aplicación en un navegador web. Si lo prefiere, abra http://localhost:5000/ en un navegador web.
Una vez que su entorno se haya lanzado, utilice eb open para verlo en un navegador web.
~/eb-docker-flask$ eb open
Una vez que hemos creado y enviado nuestra imagen, podemos implementarla en Elastic Beanstalk con
un archivo Dockerrun.aws.json. Para crear una imagen de Docker de la aplicación Flask de la sección
anterior y enviarla a Docker Hub, ejecute los siguientes comandos. Vamos a usar el mismo directorio del
ejemplo anterior, pero puede usar cualquier directorio con el código de la aplicación.
671
AWS Elastic Beanstalk Developer Guide
Implementación de una imagen de
Docker remota en Elastic Beanstalk
Note
Ahora puede implementar la aplicación utilizando solo un archivo Dockerrun.aws.json. Para obtener
más información sobre los archivos Dockerrun.aws.json, consulte Configuración de Docker de un solo
contenedor (p. 673).
Example ~/remote-docker/Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "username/beanstalk-flask",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "5000"
}
]
}
Utilice la CLI de EB para configurar el repositorio local con el fin de implementarse en Elastic Beanstalk.
(Opcional) Utilice eb local run para crear y ejecutar el contenedor de forma local. Para obtener más
información acerca del comando eb local, consulte eb local (p. 637).
(Opcional) Aunque el contenedor se está ejecutando, utilice el comando eb local open para ver la
aplicación en un navegador web. Si lo prefiere, abra http://localhost:5000/ en un navegador web.
Una vez que su entorno se haya lanzado, utilice eb open para verlo en un navegador web.
~/remote-docker$ eb open
672
AWS Elastic Beanstalk Developer Guide
Eliminación
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
• Cree un archivo Dockerfile para que Elastic Beanstalk cree y ejecute una imagen personalizada.
• Cree un archivo Dockerrun.aws.json para implementar una imagen de Docker de un repositorio
alojado en Elastic Beanstalk.
• Cree un archivo .zip que contenga los archivos de la aplicación, todas las dependencias de los
archivos de la aplicación, el archivo Dockerfile y el archivo Dockerrun.aws.json. Si utiliza la CLI
de EB para implementar la aplicación, se creará un archivo .zip automáticamente.
Este tema es una referencia de sintaxis. Para obtener los procedimientos detallados sobre cómo
iniciar entornos de Docker de un solo contenedor, consulte Entornos de Docker con un único
contenedor (p. 669).
Secciones
• Dockerrun.aws.json v1 (p. 673)
• Uso de imágenes de un repositorio privado (p. 676)
• Creación de imágenes personalizadas con un Dockerfile (p. 676)
Dockerrun.aws.json v1
Un archivo Dockerrun.aws.json describe cómo implementar una imagen de Docker remota como una
aplicación de Elastic Beanstalk. Este archivo JSON es específico de Elastic Beanstalk. Si la aplicación se
673
AWS Elastic Beanstalk Developer Guide
Configuración de Docker de un solo contenedor
ejecuta en una imagen que está disponible en un repositorio alojado, puede especificar la imagen en un
archivo Dockerrun.aws.json y omitir el archivo Dockerfile.
Las claves y valores válidos para el archivo Dockerrun.aws.json son los siguientes:
AWSEBDockerrunVersion
(Obligatorio) Especifica el número de versión como el valor 1 para entornos Docker de un solo
contenedor.
Autenticación
(Obligatorio solo para repositorios privados) Especifica el objeto de Amazon S3 que almacena el
archivo .dockercfg.
(Obligatorio al especificar la clave Image (Imagen)) Muestra los puertos que se exponen en el
contenedor Docker. Elastic Beanstalk usa el valor ContainerPort para conectar el contenedor Docker
al proxy inverso que se ejecuta en el host.
Puede especificar varios puertos de contenedor, pero Elastic Beanstalk utiliza únicamente el primero
para conectar su contenedor al proxy inverso del host y dirigir las solicitudes de la Internet pública. Si
utiliza un archivo Dockerfile, el primer valor ContainerPort debe coincidir con la primera entrada de
la lista EXPOSE de Dockerfile.
Si lo desea, puede especificar una lista de puertos en HostPort. Las entradas de HostPort especifican
los puertos de host a los que están asignados los valores ContainerPort. Si no especifica un valor
HostPort, se usa de forma predeterminada el valor ContainerPort.
{
"Image": {
"Name": "image-name"
},
"Ports": [
{
"ContainerPort": 8080,
"HostPort": 8000
}
]
}
674
AWS Elastic Beanstalk Developer Guide
Configuración de Docker de un solo contenedor
Volúmenes
Asigne volúmenes de una instancia EC2 a su contenedor Docker. Especifique una o varias matrices
de volúmenes que desee asignar.
{
"Volumes": [
{
"HostDirectory": "/path/inside/host",
"ContainerDirectory": "/path/inside/container"
}
]
...
Registro
Especifique el directorio del contenedor para que la aplicación escriba los registros. Elastic Beanstalk
carga los registros de este directorio en Amazon S3 cuando se solicitan registros de finalización o
de paquete. Si rota los registros en una carpeta con el nombre rotated dentro de este directorio,
también puede configurar Elastic Beanstalk para que cargue los registros rotados en Amazon S3 para
su almacenamiento permanente. Para obtener más información, consulte Consulta de los registros
desde las instancias de Amazon EC2 en su entorno de Elastic Beanstalk (p. 457).
Comando
Especifique un comando predeterminado para ejecutarse cuando se inicia el contenedor. Para obtener
más información, consulte ENTRYPOINT en la documentación de Docker.
El siguiente fragmento es un ejemplo que ilustra la sintaxis del archivo Dockerrun.aws.json para un
solo contenedor.
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx",
"Entrypoint": "/app/bin/myapp",
"Command": "--argument"
}
Puede proporcionar a Elastic Beanstalk solo el archivo Dockerrun.aws.json o un archivo .zip que
contenga los archivos Dockerrun.aws.json y Dockerfile. Cuando proporciona ambos archivos,
675
AWS Elastic Beanstalk Developer Guide
Configuración de Docker de un solo contenedor
Los dos archivos deben estar en la raíz, o en el nivel superior, del archivo .zip. No cree el
archivo desde un directorio que contenga los archivos. Vaya a ese directorio y cree en él el
archivo.
Al proporcionar ambos archivos, no especifique una imagen en el archivo
Dockerrun.aws.json. Elastic Beanstalk crea y usa la imagen descrita en Dockerfile y omite
la imagen especificada en el archivo Dockerrun.aws.json.
Para obtener información sobre cómo generar y cargar el archivo de autenticación, consulte Uso de
imágenes de un repositorio privado (p. 696).
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "my-bucket",
"Key": "mydockercfg"
},
"Image": {
"Name": "quay.io/johndoe/private-image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx"
}
El siguiente fragmento es un ejemplo del archivo Dockerfile. Cuando siga las instrucciones de Entornos
de Docker con un único contenedor (p. 669), podrá cargar este archivo Dockerfile tal como está
escrito. Elastic Beanstalk ejecuta el juego 2048 cuando usa este archivo Dockerfile.
FROM ubuntu:12.04
676
AWS Elastic Beanstalk Developer Guide
Multicontainer Docker
EXPOSE 80
Para obtener más información sobre las instrucciones que puede incluir en el archivo Dockerfile,
consulte la referencia de Dockerfile en el sitio web de Docker.
Elastic Beanstalk utiliza Amazon Elastic Container Service (Amazon ECS) para coordinar las
implementaciones de contenedores en entornos de Docker con varios contenedores. Amazon ECS cuenta
con herramientas para administrar un clúster de instancias que ejecutan contenedores de Docker. Elastic
Beanstalk se encarga de las tareas de Amazon ECS, como la creación de clásteres o la definición y
ejecución de tareas.
Note
Algunas regiones no ofrecen Amazon ECS. Los entornos Multicontainer Docker no se admiten en
estas regiones.
Para obtener información acerca de los servicios de AWS ofrecidos en cada región, consulte
Tabla de regiones.
Temas
• Plataforma Multicontainer Docker (p. 677)
• Archivo Dockerrun.aws.json (p. 678)
• Imágenes de Docker (p. 678)
• Rol de la instancia de contenedor (p. 679)
• Recursos de Amazon ECS creados por Elastic Beanstalk (p. 679)
• Uso de varios agentes de escucha de Elastic Load Balancing (p. 680)
• Implementaciones de contenedores con errores (p. 681)
• Configuración de Docker multicontenedor (p. 681)
• Entornos de Multicontainer Docker con la Consola de administración de AWS (p. 685)
En el siguiente diagrama se muestra un ejemplo de un entorno de Elastic Beanstalk configurado con tres
contenedores de Docker que se ejecutan en cada instancia Amazon EC2 de un grupo de Auto Scaling:
677
AWS Elastic Beanstalk Developer Guide
Archivo Dockerrun.aws.json
Archivo Dockerrun.aws.json
Las instancias de contenedor, es decir, las instancias Amazon EC2 que ejecutan Multicontainer
Docker en un entorno de Elastic Beanstalk, necesitan un archivo de configuración denominado
Dockerrun.aws.json. Este archivo es específico para Elastic Beanstalk y puede utilizarse solo o junto
con el código fuente y el contenido de un paquete de código fuente (p. 64) para crear un entorno en una
plataforma de Docker.
Note
Consulte Dockerrun.aws.json v2 (p. 682) para obtener más información sobre el formato actualizado y un
archivo de ejemplo.
Imágenes de Docker
La plataforma Multicontainer Docker de Elastic Beanstalk necesita imágenes prediseñadas y almacenadas
en un repositorio de imágenes online público o privado.
Note
678
AWS Elastic Beanstalk Developer Guide
Rol de la instancia de contenedor
• Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, ubuntu
o mongo).
• Las imágenes de otros repositorios de Docker Hub se identifican con un nombre de organización (por
ejemplo, amazon/amazon-ecs-agent).
• Las imágenes de otros registros online se identifican además con un nombre de dominio (por ejemplo,
quay.io/assemblyline/ubuntu).
Si desea configurar Elastic Beanstalk para que se autentique en un repositorio privado, incluya el
parámetro authentication en el archivo Dockerrun.aws.json.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECSAccess",
"Effect": "Allow",
"Action": [
"ecs:Poll",
"ecs:StartTask",
"ecs:StopTask",
"ecs:DiscoverPollEndpoint",
"ecs:StartTelemetrySession",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:Submit*"
],
"Resource": "*"
}
]
}
• Clúster de Amazon ECS: las instancias de contenedor de Amazon ECS están organizadas en clústeres.
Cuando se utiliza con Elastic Beanstalk, se crea siempre un clúster para cada entorno de Multicontainer
Docker.
679
AWS Elastic Beanstalk Developer Guide
Uso de varios agentes de escucha
de Elastic Load Balancing
Elastic Beanstalk crea volúmenes de logs en la instancia de contenedor, uno para cada contenedor, en /
var/log/containers/containername. Estos volúmenes se llaman awseb-logs-containername
y se proporcionan para los contenedores que se van a montar. Consulte Formato de definición de
contenedor (p. 684) para obtener más información acerca de cómo montarlos.
Cree una carpeta .ebextensions en el paquete de código fuente y agregue un archivo con la extensión
.config. En el ejemplo siguiente, se muestra un archivo de configuración que crea un agente de escucha
de Elastic Load Balancing en el puerto 8080.
.ebextensions/elb-listener.config
option_settings:
aws:elb:listener:8080:
ListenerProtocol: HTTP
InstanceProtocol: HTTP
InstancePort: 8080
Si el entorno se ejecuta en una Amazon Virtual Private Cloud (Amazon VPC) personalizada creada por
usted, Elastic Beanstalk se encarga del resto. En una VPC predeterminada, debe configurar el grupo de
seguridad de la instancia para que permita la entrada desde el balanceador de carga. Utilice un segundo
archivo de configuración que agregue una regla de entrada al grupo de seguridad:
.ebextensions/elb-ingress.config
Resources:
port8080SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 8080
FromPort: 8080
SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer",
"SourceSecurityGroup.GroupName"] }
680
AWS Elastic Beanstalk Developer Guide
Implementaciones de contenedores con errores
Para obtener más información sobre el formato de los archivos de configuración, consulte Añadir y
personalizar recursos del entorno de Elastic Beanstalk (p. 342) y Opciones de configuración (p. 321).
"portMappings": [
{
"hostPort": 8080,
"containerPort": 8080
}
]
Consulte Dockerrun.aws.json v2 (p. 682) para obtener más información sobre el formato de archivo
Dockerrun.aws.json.
Se puede usar un archivo Dockerrun.aws.json tal como está o incluirlo en un solo archivo junto con
el código fuente adicional. El código fuente archivado con un Dockerrun.aws.json se implementa en
instancias de contenedor Amazon EC2 y está accesible en el directorio /var/app/current/. Utilice
la sección volumes del archivo de configuración para proporcionar volúmenes de archivo para los
contenedores de Docker que se ejecutan en la instancia del host. Utilice la sección mountPoints de las
definiciones de contenedor integradas para mapear estos volúmenes a puntos de montaje que pueden
utilizar las aplicaciones de los contenedores de Docker.
Temas
• Dockerrun.aws.json v2 (p. 682)
• Uso de imágenes de un repositorio privado (p. 683)
• Formato de definición de contenedor (p. 684)
681
AWS Elastic Beanstalk Developer Guide
Configuración de Docker multicontenedor
Dockerrun.aws.json v2
El archivo Dockerrun.aws.json incluye tres secciones:
AWSEBDockerrunVersion
Crea volúmenes a partir de carpetas de la instancia de contenedor de Amazon EC2 o a partir del
paquete de código fuente (implementado en /var/app/current). Monte estos volúmenes en
rutas que estén dentro de los contenedores de Docker utilizando mountPoints en la definición de
contenedor (p. 684).
Note
Elastic Beanstalk configura volúmenes adicionales para los logs, uno para cada contenedor.
Estos los deben montar los contenedores de Docker para poder escribir logs en la
instancia del host. Para obtener más información, consulte Formato de definición de
contenedor (p. 684).
"volumes": [
{
"name": "volumename",
"host": {
"sourcePath": "/path/on/host/instance"
}
}
],
autenticación
"authentication": {
"bucket": "my-bucket",
"key": "mydockercfg"
},
Consulte Uso de imágenes de un repositorio privado (p. 683) para obtener más información.
El siguiente fragmento es un ejemplo que ilustra la sintaxis del archivo Dockerrun.aws.json para una
instancia con dos contenedores.
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
682
AWS Elastic Beanstalk Developer Guide
Configuración de Docker multicontenedor
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"environment": [
{
"name": "Container",
"value": "PHP"
}
],
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}
683
AWS Elastic Beanstalk Developer Guide
Configuración de Docker multicontenedor
authentication contiene un bucket de Amazon S3 y una clave válidos. El bucket de Amazon S3 debe
estar alojado en la misma región que el entorno que lo está utilizando. Elastic Beanstalk no descargará
archivos de buckets de Amazon S3 si están alojados en otras regiones.
Para obtener información sobre cómo generar y cargar el archivo de autenticación, consulte Uso de
imágenes de un repositorio privado (p. 696).
Los siguientes ejemplos muestran un subconjunto de parámetros que se utilizan habitualmente. Hay
disponibles otros parámetros opcionales. Para obtener más información sobre el formato de definición de
tarea y una lista completa de los parámetros de definición de tarea, consulte Amazon ECS Task Definitions
en la Guía para desarrolladores de Amazon ECS.
nombre
El nombre del contenedor. Consulte Standard Container Definition Parameters para obtener
información sobre la longitud máxima y los caracteres permitidos.
image
El nombre de una imagen de Docker en un repositorio Docker insertado desde el que va a crear un
contenedor Docker. Tenga en cuenta estas convenciones:
• Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo,
ubuntu o mongo).
• Las imágenes de otros repositorios de Docker Hub se cualifican con un nombre de organización (por
ejemplo, amazon/amazon-ecs-agent.
• Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por
ejemplo, quay.io/assemblyline/ubuntu).
environment
Por ejemplo, la siguiente entrada define una variable de entorno con el nombre Container y el valor
PHP:
"environment": [
{
"name": "Container",
"value": "PHP"
}
],
essential
Es True si la tarea se debe detener si el contenedor produce un error. Los contenedores Nonessential
puedan terminar o bloquearse sin que ello afecte al resto de los contenedores de la instancia.
memory
684
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
memoryReservation
El límite flexible (en MiB) de memoria que reservar para el contenedor. Especifique un entero distinto
de cero para uno o ambos parámetros memory o memoryReservation en las definiciones de
contenedor.
mountPoints
Elastic Beanstalk crea volúmenes de registros en la instancia de contenedor, uno para cada
contenedor de Docker, en /var/log/containers/containername. Estos volúmenes se
denominan awseb-logs-containername y deben montarse en la ubicación dentro de la estructura
de archivos del contenedor donde se escriben los logs.
Por ejemplo, el siguiente punto de montaje asigna la ubicación de los registros de nginx en el
contenedor al volumen generado por Elastic Beanstalk para el contenedor nginx-proxy.
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
portMappings
Lista de contenedores que se van a vincular. Los contenedores vinculados pueden detectarse entre sí
y comunicarse de forma segura.
volumesFrom
Esta opción le permite montar todos los volúmenes desde un contenedor diferente. Por ejemplo, para
montar volúmenes desde un contenedor con el nombre web:
"volumesFrom": [
{
"sourceContainer": "web"
}
],
En cada instancia Amazon Elastic Compute Cloud (Amazon EC2) de un entorno de Elastic Beanstalk, se
ejecutan en paralelo los contenedores, una aplicación PHP y un proxy nginx. Después de crear el entorno
685
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
y comprobar que las aplicaciones están en ejecución, se conectará a una instancia de contenedor para ver
cómo encaja todo.
Secciones
• Definición de contenedores de Docker (p. 686)
• Agregar contenido (p. 688)
• Implementar en Elastic Beanstalk (p. 688)
• Conexión con una instancia de contenedor (p. 689)
• Inspección del agente de contenedor de Amazon ECS (p. 690)
Todo el código de este tutorial está disponible en el repositorio awslabs de GitHub, en https://
github.com/awslabs/eb-docker-nginx-proxy.
El archivo que Elastic Beanstalk utiliza para configurar los contenedores de una instancia Amazon EC2 es
un archivo de texto con formato JSON llamado Dockerrun.aws.json. Cree un archivo de texto con este
nombre en la raíz de la aplicación y agregue el siguiente texto:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
686
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}
Esta configuración de ejemplo define dos contenedores y un sitio web de PHP con un proxy nginx delante.
Estos dos contenedores se ejecutarán en paralelo en los contenedores de Docker de cada instancia
del entorno de Elastic Beanstalk y obtendrán acceso al contenido compartido (el contenido del sitio
web) desde los volúmenes de la instancia del host, que también se define en este archivo. Los propios
contenedores se crean a partir de imágenes hospedadas en repositorios oficiales de Docker Hub. El
entorno resultante se parece al siguiente:
687
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
Para obtener más información sobre el formato de Dockerrun.aws.json y sus parámetros, consulte
Formato de definición de contenedor (p. 684).
Agregar contenido
A continuación, va a agregar contenido en el sitio de PHP para que lo vean los visitantes y un archivo de
configuración para el proxy nginx.
php-app/index.php
<h1>Hello World!!!</h1>
<h3>PHP Version <pre><?= phpversion()?></pre></h3>
php-app/static.html
<h1>Hello World!</h1>
<h3>This is a static HTML page.</h3>
proxy/conf.d/default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass php-app:9000;
fastcgi_index index.php;
}
}
### Dockerrun.aws.json
### php-app
# ### index.php
# ### static.html
### proxy
### conf.d
### default.conf
688
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
Esto es todo lo que necesita para crear el entorno de Elastic Beanstalk. Cree un archivo .zip con los
documentos y carpetas anteriores (no incluya la carpeta del proyecto del nivel superior). Para crear el
archivo en el Explorador de Windows, seleccione el contenido de la carpeta del proyecto, haga clic con el
botón derecho, seleccione Enviar a y haga clic en Carpeta comprimida (en zip).
Note
Para obtener más información sobre la estructura de archivos e instrucciones para la creación
de archivos en otros entornos, consulte Creación del paquete de código fuente de una
aplicación (p. 64).
A continuación, cargue el paquete de código fuente en Elastic Beanstalk y cree el entorno. Cuando le pidan
que seleccione una plataforma, elija Multi-container Docker.
La Consola de administración de AWS le redirigirá al panel de administración del nuevo entorno. En esta
pantalla, se muestra el estado del entorno y la salida de eventos del servicio Elastic Beanstalk. Si el estado
es verde, haga clic en la URL que está situada junto al nombre del entorno para ver el nuevo sitio web.
La forma más sencilla de conectarse a una instancia del entorno es utilizar la CLI de EB. Para utilizarla,
instale la CLI de EB (p. 579), si aún no lo ha hecho. También necesitará configurar su entorno con un par
de claves SSH de Amazon EC2. Para ello, utilice la página de configuración de seguridad (p. 231) de la
consola o el comando eb init (p. 633) de la CLI de EB. Para conectarse a una instancia del entorno, utilice
el comando eb ssh (p. 653) de la CLI de EB.
Ahora que se ha conectado a la instancia Amazon EC2 que aloja los contenedores de Docker, puede ver
cómo funciona todo. Ejecute ls en /var/app/current:
Este directorio contiene los archivos del paquete de código fuente que cargó en Elastic Beanstalk durante
la creación del entorno.
689
AWS Elastic Beanstalk Developer Guide
Tutorial: Multicontainer Docker
nginx-proxy php-app-b894601a1364-stdouterr.log
Aquí es donde se crean los logs de la instancia de contenedor y los recopila Elastic Beanstalk. Elastic
Beanstalk crea un volumen en este directorio para cada contenedor, que se monta en la ubicación del
contenedor donde se escriben los logs.
También puede consultar Docker para ver los contenedores en ejecución mediante docker ps.
Aquí pueden verse los dos contenedores en ejecución que implementó, así como el agente de contenedor
de Amazon ECS que coordinó la implementación.
Compruebe el estado del agente de contenedor con una solicitud HTTP GET en http://
localhost:51678/v1/metadata:
Esta estructura muestra el nombre del clúster de Amazon ECS y el ARN (nombre de recurso de Amazon)
de la instancia del clúster (instancia Amazon EC2 a la que está conectado).
Para obtener más detalles, realice una solicitud HTTP GET de la información disponible en http://
localhost:51678/v1/tasks:
690
AWS Elastic Beanstalk Developer Guide
Contenedores preconfigurados
{
"DockerId":"b894601a1364a438156a239813c77cdef17040785bc4d5e49349470dc1556b15",
"DockerName":"ecs-eb-dv-example-env-qpoxiguye24-2-php-app-cec0918ed1a3a49a8001",
"Name":"php-app"
},
{
"DockerId":"ffffd873ada5f537c88862cce4e1de7ec3edf962645982fb236961c833a5d0fe",
"DockerName":"ecs-eb-dv-example-env-qpoxiguye24-2-nginx-
proxy-90fce996cc8cbecb2800",
"Name":"nginx-proxy"
}
]
}
]
}
Esta estructura describe la tarea que se ejecuta para implementar los dos contenedores en el proyecto de
ejemplo de este tutorial. Se muestra la siguiente información:
Aún hay más información disponible en el propio servicio Amazon ECS, que puede llamar a través de
AWS Command Line Interface. Para obtener instrucciones sobre el uso de AWS CLI con Amazon ECS e
información general sobre Amazon ECS, consulte la Guía del usuario de Amazon ECS.
Elastic Beanstalk también es compatible con las versiones de la plataforma con contenedores
Docker preconfigurados para Go y Python. Estas versiones de la plataforma se han programado
para retirarse.
La siguiente sección ofrece un procedimiento detallado para implementar una aplicación en Elastic
Beanstalk con un contenedor Docker preconfigurado.
Para obtener más detalles acerca de las versiones de la plataforma con contenedores Docker
preconfigurados compatibles, consulte Docker preconfigurado en el documento Plataformas de AWS
Elastic Beanstalk.
691
AWS Elastic Beanstalk Developer Guide
Introducción a los contenedores Docker preconfigurados
~$ mkdir eb-preconf-example
~$ cd eb-preconf-example
~$ wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-
glassfish-v1.zip
~$ unzip docker-glassfish-v1.zip
~$ rm docker-glassfish-v1.zip
Example ~/eb-preconf-example/Dockerfile
Para obtener más información sobre cómo usar un Dockerfile, consulte Configuración de Docker
de un solo contenedor (p. 673).
2. Cree la imagen de Docker.
Debe incluir la marca -p para asignar el puerto 8080 del contenedor al puerto 3000 del
host local. Los contenedores Docker de Elastic Beanstalk siempre exponen la aplicación
en el puerto 8080 del contenedor. Las marcas -it ejecutan la imagen como un proceso
interactivo. La marca --rm limpia el sistema de archivos del contenedor cuando el
contenedor existe. De forma opcional, puede incluir una marca -d para ejecutar la imagen
como un daemon.
692
AWS Elastic Beanstalk Developer Guide
Introducción a los contenedores Docker preconfigurados
http://localhost:3000
693
AWS Elastic Beanstalk Developer Guide
Configuración del entorno
• Instance profile (Perfil de instancia): perfil de instancia (p. 23) del entorno, que debe tener acceso de
escritura al bucket de almacenamiento de Amazon S3 del entorno para poder cargar los logs.
• Enable log file rotation to Amazon S3 (Habilitar rotación de archivos de registro en Amazon S3):
configure las instancias del entorno para que se puedan cargar logs rotados (p. 457).
La sección Environment Properties le permite especificar variables de entorno que se pueden leer desde el
código de la aplicación.
Secciones
• Imágenes de Docker (p. 694)
• Configuración de volúmenes de almacenamiento adicionales (p. 697)
• Recuperación de espacio de almacenamiento de Docker (p. 697)
• Configuración de actualizaciones administradas para entornos de Docker (p. 698)
Imágenes de Docker
Las plataformas "single container" y "multicontainer" de Docker para Elastic Beanstalk permiten usar
imágenes de Docker guardadas en un repositorio de imágenes online público o privado.
• Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, ubuntu
o mongo).
• Las imágenes de otros repositorios de Docker Hub se identifican con un nombre de organización (por
ejemplo, amazon/amazon-ecs-agent).
• Las imágenes de otros repositorios online se designan además con un nombre de dominio (por ejemplo,
quay.io/assemblyline/ubuntu o account-id.dkr.ecr.us-east-2.amazonaws.com/
ubuntu:trusty).
694
AWS Elastic Beanstalk Developer Guide
Imágenes de Docker
Solo en los entornos con un único contenedor, puede crear también su propia imagen durante la
generación del entorno utilizando un archivo Dockerfile. Consulte Creación de imágenes personalizadas
con un Dockerfile (p. 676) para obtener más información.
No obstante, sí es necesario que proporcione a las instancias permiso para obtener acceso a las imágenes
del repositorio de Amazon ECR. Para ello, agregue permisos al perfil de instancia del entorno. Puede
asociar la política administrada AmazonEC2ContainerRegistryReadOnly al perfil de instancia para
proporcionar acceso de solo lectura a todos los repositorios de Amazon ECR de la cuenta o conceder
acceso a un único repositorio utilizando la siguiente plantilla para crear una política personalizada:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEbAuth",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": [
"*"
]
},
{
"Sid": "AllowPull",
"Effect": "Allow",
"Resource": [
"arn:aws:ecr:us-east-2:account-id:repository/repository-name"
],
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
]
}
]
}
Sustituya el nombre de recurso de Amazon (ARN) en la política anterior por el ARN del repositorio.
"Image": {
"Name": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
"Update": "true"
},
695
AWS Elastic Beanstalk Developer Guide
Imágenes de Docker
"containerDefinitions": [
{
"name": "my-image",
"image": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
Genere un archivo de autenticación con el comando docker login. En el caso de los repositorios de Docker
Hub, ejecute docker login:
$ docker login
Important
A partir de la versión 1.7 de Docker, el comando docker login cambia el nombre y el formato
del archivo de autenticación. Elastic Beanstalk requiere el archivo de configuración con formato
~/.dockercfg más antiguo.
Con la versión 1.7 de Docker y otras posteriores, el comando docker login crea el archivo de
autenticación en ~/.docker/config.json con el siguiente formato:
{
"auths":{
"server":{
"auth":"key"
}
}
}
Con la versión 1.6.2 de Docker y otras anteriores, el comando docker login crea el archivo de
autenticación en ~/.dockercfg con el siguiente formato:
{
"server" :
{
"auth" : "auth_token",
"email" : "email"
}
}
Para convertir un archivo config.json, elimine la clave auths externa, añada una clave email
y adapte el documento JSON para que se ajuste al formato antiguo.
Cargue una copia llamada .dockercfg del archivo de autenticación en un bucket de Amazon S3 seguro.
El bucket de Amazon S3 debe estar alojado en la misma región que el entorno que lo está utilizando.
Elastic Beanstalk no puede descargar archivos de un bucket de Amazon S3 si está alojado en otras
696
AWS Elastic Beanstalk Developer Guide
Configuración de volúmenes de almacenamiento adicionales
regiones. Conceda permisos para la operación s3:GetObject al rol de IAM en el perfil de instancia. Para
obtener más información, consulte Administración de perfiles de instancias de Elastic Beanstalk (p. 486).
Si desea obtener más información sobre el formato Dockerrun.aws.json para entornos con un único
contenedor, consulte Configuración de Docker de un solo contenedor (p. 673). En el caso de entornos
con varios contenedores, consulte Configuración de Docker multicontenedor (p. 681).
Para obtener más información sobre el archivo de autenticación, consulte Store images on Docker Hub y
docker login en el sitio web de Docker.
Si necesita más espacio de almacenamiento o un mayor número de IOPS para las imágenes de Docker,
puede personalizar el volumen de almacenamiento de imágenes utilizando la opción de configuración
BlockDeviceMapping del espacio de nombres aws: autoscaling: launchconfiguration (p. 273).
Por ejemplo, el siguiente archivo de configuración (p. 320) aumenta el tamaño del volumen de
almacenamiento a 100 GB con 500 IOPS provisionadas:
Example .ebextensions/blockdevice-xvdcz.config
option_settings:
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: /dev/xvdcz=:100::io1:500
Example .ebextensions/blockdevice-sdh.config
option_settings:
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: /dev/xvdcz=:12:true:gp2,/dev/sdh=:24
Tenga en cuenta que si cambia la configuración de este espacio de nombres, Elastic Beanstalk sustituirá
todas las instancias del entorno por instancias que ejecuten la nueva configuración. Consulte Cambios de
configuración (p. 140) para obtener más información.
697
AWS Elastic Beanstalk Developer Guide
Configuración de actualizaciones
administradas para entornos de Docker
ejemplo, los volcados periódicos de las copias de seguridad de base de datos), ya que llenaría el espacio
de almacenamiento de la aplicación.
Una solución consiste en aumentar el tamaño de almacenamiento de la aplicación, tal y como se describió
en la sección anterior. La otra opción es menos eficaz y consiste en ejecutar fstrim periódicamente en el
sistema operativo del host (utilizando, por ejemplo, cron) en el espacio libre del contenedor para recuperar
los bloques de datos del contenedor que no están en uso.
docker ps -q | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ sudo fstrim /
proc/Z/root/
En el caso de los entornos de Docker, es posible que decida si una actualización de plataforma automática
debe suceder en varias versiones de Docker, si la nueva versión de configuración de la plataforma incluye
una nueva versión de Docker. Elastic Beanstalk admite las actualizaciones de plataforma administradas
en diferentes versiones de Docker al actualizar desde un entorno que ejecuta una versión de plataforma
de Docker posterior a la 2.9.0. Cuando una nueva versión de la plataforma incluye una nueva versión de
Docker, Elastic Beanstalk aumenta el número de versión de actualización secundaria. Por lo tanto, para
permitir las actualizaciones de plataforma administradas en diferentes versiones de Docker, habilítelas
para las actualizaciones de versiones secundarias y de parche. Para evitar las actualizaciones de
plataforma administradas en diferentes versiones de Docker, habilítelas para que solo apliquen las
actualizaciones de versión de parche.
Por ejemplo, el siguiente archivo de configuración (p. 320) habilita las actualizaciones de plataforma
administradas a las 9:00 h UTC cada martes para las actualizaciones de versiones secundarias y de
parche, lo que permite las actualizaciones administradas en diferentes versiones de Docker:
Example .ebextensions/managed-platform-update.config
option_settings:
aws:elasticbeanstalk:managedactions:
ManagedActionsEnabled: true
PreferredStartTime: "Tue:09:00"
aws:elasticbeanstalk:managedactions:platformupdate:
UpdateLevel: minor
En los entornos que ejecutan versiones de plataforma de Docker 2.9.0 o anteriores, Elastic Beanstalk
nunca realiza las actualizaciones de plataforma administradas si la nueva versión de plataforma incluye
una nueva versión de Docker.
698
AWS Elastic Beanstalk Developer Guide
Requisitos previos para ejecutar
locamente aplicaciones Docker
Temas
• Requisitos previos para ejecutar locamente aplicaciones Docker (p. 699)
• Preparación de una aplicación Docker para usarla con la CLI de EB (p. 700)
• Ejecución local de una aplicación Docker (p. 700)
• Limpieza después de la ejecución local de una aplicación Docker (p. 701)
Ejecute eb init en el directorio del proyecto para inicializar un repositorio de CLI de EB. Si no ha usado
la CLI de EB con anterioridad, consulte Administración de entornos de Elastic Beanstalk con la CLI de
EB (p. 590).
• Docker versión 1.6 o superior
Añádase usted mismo al grupo docker, cierre la sesión y vuelva a iniciar sesión para asegurarse de
que puede ejecutar comandos de Docker sin sudo:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
Si no dispone de una aplicación Docker en una carpeta del proyecto de su equipo local, consulte
Implementación de aplicaciones de Elastic Beanstalk desde contenedores de Docker (p. 668) para
obtener una introducción sobre cómo usar Docker con AWS Elastic Beanstalk.
• Perfil de Docker (opcional)
Si la aplicación utiliza imágenes de Docker que están en un repositorio privado, ejecute docker login
y siga las instrucciones para crear un perfil de autenticación.
• w3m (opcional)
W3m es un navegador web que puede utilizar para ver la aplicación web en ejecución en un terminal
de línea de comandos con eb local run. Si utiliza la línea de comandos en un entorno de escritorio, no
necesita w3m.
Los contenedores Docker se ejecutan localmente sin emular los recursos de AWS que se aprovisionan
cuando implementa una aplicación en Elastic Beanstalk, incluidos los grupos de seguridad y los datos o
capas de trabajo.
Puede configurar los contenedores locales para que se conecten a una base de datos pasando la cadena
de conexión necesaria u otras variables con la opción envvars, pero debe asegurarse de que los recursos
699
AWS Elastic Beanstalk Developer Guide
Preparación de una aplicación
Docker para usarla con la CLI de EB
de AWS estén accesibles desde su equipo local abriendo los puertos correspondientes en los grupos de
seguridad asignados o asociando una gateway predeterminada o dirección IP elástica.
La CLI de EB lee la configuración de Docker y ejecuta los comandos de Docker necesarios para ejecutar
su aplicación. La primera vez que ejecuta un proyecto localmente, Docker descarga imágenes de un
repositorio remoto y las almacena en su equipo local. Este proceso puede tardar varios minutos.
Note
Este comando indica a la CLI de EB que use el puerto 8080 del host y lo asigne al puerto
expuesto en el contenedor. Si no especifica un puerto, la CLI de EB utiliza el puerto del
contenedor del host. Esta opción solo funciona con aplicaciones de un solo contenedor.
Para pasar variables de entorno a los contenedores de la aplicación, utilice la opción envvars:
Utilice variables de entorno para configurar una conexión a la base de datos, establecer
opciones de depuración o pasar claves secretas de forma segura a su aplicación. Para obtener
más información sobre las opciones admitidas por los subcomandos eb local, consulte eb
local (p. 637).
Una vez que los contenedores estén funcionando en Docker, estarán listos para recibir solicitudes de
los clientes. El proceso eb local permanece abierto mientras los contenedores se estén ejecutando. Si
necesita detener el proceso y los contenedores, pulse Ctrl+C.
Abra un segundo terminal para ejecutar comandos adicionales mientras el proceso eb local se está
ejecutando. Utilice eb local status para ver el estado de su aplicación:
700
AWS Elastic Beanstalk Developer Guide
Limpieza después de la ejecución
local de una aplicación Docker
Platform: 64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3 (Generic)
Container name: elasticbeanstalk_nginxproxy_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): 80
Full local URL(s): 127.0.0.1:80
Puede utilizar docker ps para ver el estado de los contenedores desde el punto de vista de Docker:
~/project$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
6a8e71274fed nginx:latest "nginx -g 'daemon of 9 minutes ago Up 9
minutes 0.0.0.0:80->80/tcp, 443/tcp elasticbeanstalk_nginxproxy_1
82cbf620bdc1 php:fpm "php-fpm" 9 minutes ago Up 9
minutes 9000/tcp elasticbeanstalk_phpapp_1
Esta salida muestra que la aplicación web en el contenedor Docker recibió una solicitud GET HTTP para
index.php que finalizó correctamente con un estado 200 (sin error).
Ejecute eb local logs para ver dónde la CLI de EB escribe los logs.
Vuelva al terminal que ejecuta el proceso eb local y pulse Ctrl+C para detener la aplicación:
701
AWS Elastic Beanstalk Developer Guide
Limpieza después de la ejecución
local de una aplicación Docker
Stopping elasticbeanstalk_nginxproxy_1...
Stopping elasticbeanstalk_phpapp_1...
Aborting.
[1]+ Exit 5 eb local run
La CLI de EB intenta detener cada contenedor en ejecución de forma limpia con comandos de Docker. Si
necesita detener un proceso inmediatamente, pulse de nuevo Ctrl+C.
Después de detener las aplicaciones, también se debe detener la ejecución de los contenedores. Verifique
esto con docker ps:
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
73d515d99d2a nginx:latest "nginx -g 'daemon of 21 minutes ago Exited
(0) 11 minutes ago elasticbeanstalk_nginxproxy_1
7061c76220de php:fpm "php-fpm" 21 minutes ago Exited
(0) 11 minutes ago elasticbeanstalk_phpapp_1
La opción all muestra los contenedores detenidos (si ha omitido esta opción, la salida estará vacía). En el
ejemplo anterior, Docker muestra que los contenedores dejaron de ejecutarse con un estado 0 (sin error).
Si ha terminado de usar Docker y los comandos locales de la CLI de EB, puede eliminar las imágenes de
Docker de su equipo local para ahorrar espacio.
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL
SIZE
php fpm 68bc5150cffc 1 hour ago 414.1
MB
nginx latest 637d3b2f5fb5 1 hour ago 93.44
MB
702
AWS Elastic Beanstalk Developer Guide
Introducción
Implementación de aplicaciones Go
en aplicaciones de Elastic Beanstalk
Temas
• Introducción a Go en Elastic Beanstalk (p. 703)
• Configuración del entorno de desarrollo de Go (p. 705)
• Uso de la plataforma Go de AWS Elastic Beanstalk (p. 706)
• Implementación de una aplicación Go en AWS Elastic Beanstalk (p. 710)
Elastic Beanstalk para Go facilita la implementación, administración y escalado de sus aplicaciones web
Go que utilizan Amazon Web Services. Elastic Beanstalk para Go está disponible para todo aquel que
desee desarrollar o alojar una aplicación web con Go. En este capítulo se proporcionan instrucciones paso
a paso para implementar su aplicación web en Elastic Beanstalk.
Después de implementar la aplicación de Elastic Beanstalk, puede continuar utilizando la CLI de EB para
administrar la aplicación y el entorno, o bien puede usar la Consola de Elastic Beanstalk, la CLI de AWS o
las API.
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Muestras
703
AWS Elastic Beanstalk Developer Guide
Lanzamiento de un entorno con
una aplicación Go de ejemplo
4. Elija la capa del entorno (p. 15) Web server environment (Entorno de servidor web) o Worker
environment (Entorno de trabajo). Una vez creado, no se puede cambiar la capa del entorno.
Note
La plataforma .NET en Windows Server (p. 758) no admite la capa del entorno de trabajo.
5. Elija un valor en Platform (Plataforma) que se corresponda con el lenguaje utilizado en la aplicación.
Note
Elastic Beanstalk admite varias versiones (p. 32) para la mayoría de las plataformas que
se indican. De forma predeterminada, la consola selecciona la última versión del lenguaje,
el contenedor web o el marco compatible con Elastic Beanstalk (p. 32). Si su aplicación
necesita una versión anterior, elija Configure more options (Configurar más opciones), como
se describe en el paso 7.
6. En App code (Código de aplicación), seleccione Sample application (Aplicación de muestra).
7. Para personalizar aún más el entorno, elija Configure more options (Configurar más opciones). Solo
puede establecer las siguientes opciones durante la creación del entorno:
• Environment name
• Nombre de dominio
• Versión de la plataforma (configuración)
704
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
• VPC
• datos y búsqueda
Puede modificar los siguientes ajustes después de crear el entorno, pero requieren que se
aprovisionen nuevas instancias u otros recursos, lo que puede llevar algún tiempo:
• Tipo de instancia, volumen raíz, par de claves y rol de AWS Identity and Access Management (IAM)
• Base de datos interna de Amazon RDS
• Balanceador de carga
Para obtener más información sobre los ajustes disponibles, consulte El asistente de creación de
nuevo entorno (p. 90).
8. Seleccione Create environment (Crear entorno).
Pasos siguientes
Una vez que disponga de un entorno que ejecute una aplicación, podrá implementar una nueva versión de
la aplicación o una aplicación distinta en cualquier momento. La implementación de una nueva versión de
la aplicación es una tarea muy rápida, ya que no se requiere aprovisionar ni reiniciar instancias EC2.
Después de que implemente una aplicación de ejemplo o dos y esté listo para empezar a desarrollar y
poner en funcionamiento las aplicaciones de Go de forma local, consulte Configuración del entorno de
desarrollo de Go (p. 705).
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Instalación de Go
Para ejecutar las aplicaciones de Go de forma local, instale Go. Si no necesita una versión específica,
obtenga la versión más reciente que es compatible con Elastic Beanstalk. Consulte Go en el documento
Plataformas de AWS Elastic Beanstalk para ver una lista de las versiones que se admiten actualmente.
Descárguese Go en https://golang.org/doc/install.
$ go get github.com/aws/aws-sdk-go
705
AWS Elastic Beanstalk Developer Guide
La plataforma Go
• Puede proporcionar un paquete de código fuente con un archivo en la raíz llamado application.go
que contenga el paquete principal de la aplicación. Elastic Beanstalk crea el binario con el siguiente
comando:
Una vez que se crea la aplicación, Elastic Beanstalk la inicia en el puerto 5000.
• Puede proporcionar un paquete de código fuente con un archivo binario llamado application. El
archivo binario puede estar ubicado en la raíz o en el directorio bin/ del paquete de código fuente. Si
sitúa el archivo binario application en las dos ubicaciones, Elastic Beanstalk utiliza el archivo del
directorio bin/.
• Puede proporcionar un paquete de código fuente que incluya los archivos de código fuente de la
aplicación junto con un archivo Buildfile (p. 709) y un archivo Procfile (p. 708). El archivo Buildfile
contiene un comando para crear la aplicación y el archivo Procfile incluye instrucciones para ejecutar la
aplicación.
• Puede proporcionar un paquete de código fuente que incluya los archivos binarios de la aplicación junto
con un archivo Procfile. El archivo Procfile contiene instrucciones para ejecutar la aplicación.
Orden de ejecución
Puede utilizar la Consola de administración de AWS para habilitar la rotación de registros en Amazon S3 y
configurar variables que su aplicación pueda leer desde el entorno.
706
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Go
Log Options
La sección Log Options tiene dos valores:
• Instance profile (Perfil de instancia): especifica el perfil de instancia que tiene permiso para obtener
acceso al bucket de Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Static Files
Para mejorar el desempeño, puede configurar el servidor proxy para servir archivos estáticos de servidor
(por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en su aplicación web. Cuando
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente
el archivo en lugar de direccionar la solicitud la aplicación. Puede definir la ruta virtual y los mapeos de
directorio en la sección Static Files (Archivos estáticos) de la página de configuración Modify software
(Modificar software).
Para obtener más información sobre la configuración de archivos estáticos con la Consola de Elastic
Beanstalk, consulte Distribución de archivos estáticos (p. 372).
Environment Properties
La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de
configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Las propiedades
del entorno se pasan como pares de clave-valor a la aplicación.
Dentro del entorno de Go que se ejecuta en Elastic Beanstalk, es posible acceder a las variables
de entorno mediante la función os.Getenv. Por ejemplo, podría leer una propiedad denominada
API_ENDPOINT en una variable con el siguiente código:
endpoint := os.Getenv("API_ENDPOINT")
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
707
AWS Elastic Beanstalk Developer Guide
Procfile
Por ejemplo, este archivo de configuración (p. 320) le indica el servidor proxy que proporcione los archivos
en la carpeta myimages de la ruta /images:
Example .ebextensions/go-settings.config
option_settings:
aws:elasticbeanstalk:container:golang:staticfiles:
/html: statichtml
/images: staticimages
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
<process_name>: <command>
Cada línea del archivo Procfile debe ajustarse a la siguiente expresión regular: ^[A-Za-z0-9_]+:\s*.+
$.
Elastic Beanstalk espera que los procesos que se ejecutan desde Procfile lo hagan de forma continua.
Elastic Beanstalk monitoriza estas aplicaciones y reinicia todos los procesos que terminan. En los procesos
de corta ejecución, utilice un comando Buildfile (p. 709).
Puede utilizar cualquier nombre para la aplicación Go, siempre que se corresponda con la expresión
regular mencionada anteriormente. Debe llamar a la aplicación principal web.
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
Elastic Beanstalk expone la aplicación web principal en la raíz de la URL entorno; por ejemplo, http://
my-go-env.elasticbeanstalk.com.
Elastic Beanstalk configura el proxy nginx para que reenvíe las solicitudes a la aplicación en el número
de puerto especificado en la variable de entorno PORT de la aplicación. La aplicación siempre debe usar
ese puerto como escucha. Para obtener acceso a esta variable dentro de la aplicación, llame al método
os.Getenv("PORT").
Elastic Beanstalk utiliza el número de puerto especificado en la opción PORT como puerto de la primera
aplicación de Procfile y después va a aumentando el número de puerto de las siguientes aplicaciones
de Procfile en incrementos de 100. Si la opción PORT no está establecida, Elastic Beanstalk utiliza el
puerto 5000 como puerto inicial.
Puede especificar el puerto inicial utilizando la opción PORT con el espacio de nombres
aws:elasticbeanstalk:application:environment (p. 286), tal y como se muestra en el ejemplo siguiente.
708
AWS Elastic Beanstalk Developer Guide
Buildfile
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: PORT
value: <first_port_number>
Para obtener más información sobre cómo configurar las variables de la aplicación, consulte Opciones de
configuración (p. 321).
Elastic Beanstalk también ejecuta todas las aplicaciones cuyo nombre no contiene el prefijo web_, aunque
estas aplicaciones no están disponibles desde el exterior de la instancia.
La salida estándar y las secuencias de error de los procesos iniciados con un Procfile se capturan en
archivos log a los que después del proceso se les asigna un nombre y se almacenan en /var/log. Por
ejemplo, el proceso web del ejemplo anterior genera los logs llamados web-1.log y web-1.error.log
para stdout y stderr, respectivamente.
Todas las rutas de Procfile son rutas relativas que hacen referencia a la raíz del paquete de código
fuente. Si sabe con antelación dónde se van a situar los archivos en la instancia, puede incluir rutas
absolutas en Procfile.
<process_name>: <command>
El comando del archivo Buildfile debe ajustarse a la siguiente expresión regular: ^[A-Za-z0-9_]+:
\s*.+$.
Elastic Beanstalk no monitoriza la aplicación que se ejecuta con un archivo Buildfile. Utilice un archivo
Buildfile con comandos que se ejecuten durante cortos periodos de tiempo y terminen después de
completar las tareas. Para procesos de larga educación que no deben terminar, utilice en su lugar el
archivo Procfile (p. 708).
En el siguiente ejemplo de Buildfile, build.sh es un script de shell que se encuentra en la raíz del
paquete de código fuente:
make: ./build.sh
Todas las rutas de Buildfile son rutas relativas que hacen referencia a la raíz del paquete de código
fuente. Si sabe con antelación dónde se van a situar los archivos en la instancia, puede incluir rutas
absolutas en Buildfile.
709
AWS Elastic Beanstalk Developer Guide
Tutorial de Go
Si también desea incluir directivas en el bloque nginx.conf http, puede proporcionar otros archivos de
configuración en el directorio .ebextensions/nginx/conf.d/ del paquete de código fuente. Todos los
archivos de este directorio debe tener la extensión .conf.
Para aprovechar la funcionalidad proporcionada por Elastic Beanstalk, como Informes y monitorización de
estado mejorados (p. 416), los mapeos automáticos de aplicaciones y los archivos estáticos, debe incluir la
línea siguiente en el bloque server del archivo de configuración nginx:
include conf.d/elasticbeanstalk/*.conf;
Secciones
• Requisitos previos (p. 710)
• Crear una aplicación de Go (p. 710)
• Implementar la aplicación de Go con la CLI de EB (p. 711)
• Eliminación (p. 713)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Este tutorial utiliza la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB) Para obtener detalles
sobre la instalación y configuración de la CLI de EB, consulte Instalación de la CLI de EB con scripts de
configuración (p. 579) y Configuración de la CLI de EB (p. 586).
~$ mkdir eb-go
~$ cd eb-go
710
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación de Go con la CLI de EB
A continuación, vamos a crear una aplicación que implementará con Elastic Beanstalk. Crearemos el
servicio web RESTful "Hello World".
En este ejemplo, se imprime un saludo personalizado que varía en función de la ruta utilizada para obtener
acceso al servicio.
En este directorio, cree un archivo de texto llamado application.go con el contenido siguiente:
Example ~/eb-go/application.go
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":5000", nil)
}
Este comando crea una aplicación llamada go-tutorial y configura el repositorio local para crear
entornos con la última versión de la plataforma de Go.
2. (Opcional) Ejecute de nuevo eb init para configurar un par de claves predeterminadas de forma que
pueda usar SSH para conectarse a la instancia EC2 donde se ejecuta la aplicación.
~/eb-go$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
Seleccione un par de claves si ya tiene uno o siga las instrucciones para crear uno. Si no ve el símbolo
del sistema o más adelante necesita cambiar la configuración, ejecute eb init -i.
711
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación de Go con la CLI de EB
3. Cree un entorno e implemente la aplicación en él con eb create. Elastic Beanstalk crea de forma
automática un archivo binario para la aplicación y la inicia en el puerto 5000.
El entorno tarda unos cinco minutos en crearse e incluye los siguientes recursos:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Elastic Beanstalk administra todos estos recursos. Cuando termina su entorno, Elastic Beanstalk termina
todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Cuando finalice el proceso de creación del entorno, abra el sitio web con eb open.
~/eb-go$ eb open
Se abre una ventana del navegador con el nombre de dominio creado para su aplicación.
712
AWS Elastic Beanstalk Developer Guide
Eliminación
En caso de que sí vea la aplicación en ejecución, (le felicitamos en ese caso), habrá implementado la
aplicación de Go con Elastic Beanstalk.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
~/eb-go$ eb terminate
713
AWS Elastic Beanstalk Developer Guide
Creación e implementación de
aplicaciones Java en AWS Elastic
Beanstalk
AWS Elastic Beanstalk admite varias versiones de plataforma (p. 32) para aplicaciones Java, incluidas
varias versiones de Java con el servidor de aplicaciones de Tomcat y versiones de plataforma de solo Java
para aplicaciones que no utilizan Tomcat.
Apache Tomcat (p. 721) es un contenedor web de código abierto para aplicaciones que utilizan Java
y JavaServer Pages (JSP) para servir solicitudes HTTP. Tomcat facilita el desarrollo de aplicaciones
web proporcionando varios subprocesos, configuración de seguridad declarativa y amplia capacidad
de personalización. Las versiones de la plataforma están disponibles para cada una de las versiones
principales de Tomcat actuales.
También se proporcionan versiones de la plataforma Java SE (p. 731) (sin Tomcat) para las aplicaciones
que no usan un contenedor web o utilizan una plataforma distinta de Tomcat, como Jetty o GlassFish.
Puede incluir cualquier archivo Java de la biblioteca (JAR) usado por la aplicación en el paquete de código
fuente que implementa en Elastic Beanstalk.
AWS proporciona varias herramientas para trabajar con Java y Elastic Beanstalk. Independientemente de
la versión de plataforma que elija, puede utilizar AWS SDK para Java (p. 721) para usar otros servicios
de AWS desde dentro de la aplicación Java. AWS SDK para Java es un conjunto de bibliotecas que le
permiten utilizar las API de AWS desde el código de su aplicación sin necesidad de escribir llamadas HTTP
sin procesar desde cero.
Si utiliza el entorno de desarrollo integrado (IDE) de Eclipse para desarrollar su aplicación Java, también
puede obtener AWS Toolkit for Eclipse (p. 743). AWS Toolkit for Eclipse es un complemento de código
abierto que le permite administrar los recursos de AWS, incluidas las aplicaciones y los entornos de Elastic
Beanstalk, desde el IDE de Eclipse.
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Temas
• Introducción a Java en Elastic Beanstalk (p. 715)
• Configuración del entorno de desarrollo de Java (p. 720)
• Uso de la plataforma Tomcat de AWS Elastic Beanstalk (p. 721)
• Uso de la plataforma Java SE de AWS Elastic Beanstalk (p. 731)
• Añadir una instancia de base de datos de Amazon RDS a un entorno de aplicaciones Java (p. 737)
• Uso de AWS Toolkit for Eclipse (p. 743)
• Recursos (p. 757)
714
AWS Elastic Beanstalk Developer Guide
Introducción
Los ejemplos de una sola página muestran el mismo código que obtiene cuando crea un entorno sin
proporcionar su propio código fuente. Los ejemplos más complejos se encuentran en GitHub y puede que
sea necesario compilarlos para implementarlos en un entorno de Elastic Beanstalk.
Ejemplos
Nombre
Versiones compatibles Tipo Fuente Descripción
de
entorno
Tomcat
Tomcat 8 con Java 8 Servidor
java- Aplicación web Tomcat con
Default web tomcat- una sola página (index.jsp)
v3.zip configurada para mostrarse en la
Entorno raíz del sitio web.
de
trabajo Para los entornos de
trabajo (p. 165), este ejemplo
incluye un archivo cron.yaml
que configura una tarea
programada que llama a
scheduled.jsp una vez
por minuto. Cuando se llama
scheduled.jsp, se escribe un
archivo log en /tmp/sample-
app.log. Por último, se incluye
un archivo de configuración en
.ebextensions que copia
los registros de /tmp/ a las
ubicaciones que Elastic Beanstalk
lee cuando solicita registros del
entorno.
Si habilita la integración de X-
Ray (p. 240) en un entorno que
ejecute este ejemplo, la aplicación
muestra contenido adicional sobre
X-Ray y proporciona una opción
para generar información de
depuración que puede ver en la
consola de X-Ray.
Tomcat
Tomcat 7 con Java 7 Servidor
java7- Una versión de la aplicación
7 web tomcat7.zip
Tomcat Default destinada a Java
Tomcat 7 con Java 6
715
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación Java de ejemplo
Nombre
Versiones compatibles Tipo Fuente Descripción
de
entorno
Entorno 7 o versiones anteriores con
de Tomcat 7.
trabajo
Si habilita la integración de X-
Ray (p. 240) en un entorno que
ejecute este ejemplo, la aplicación
muestra contenido adicional sobre
X-Ray y proporciona una opción
para generar información de
depuración que puede ver en la
consola de X-Ray.
716
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación Java de ejemplo
Nombre
Versiones compatibles Tipo Fuente Descripción
de
entorno
Scorekeep
Java 8 Servidor
Clonar Scorekeep es una API web
web el RESTful que utiliza la plataforma
repositorioSpring a fin de ofrecer una interfaz
en para la creación y administración
GitHub.com de usuarios, sesiones y juegos. La
API está empaquetada con una
aplicación web de Angular 1.5 que
utiliza la API a través de HTTP.
717
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación Java de ejemplo
Nombre
Versiones compatibles Tipo Fuente Descripción
de
entorno
Locust
Java 8 Servidor
Clonar Aplicación web que puede utilizar
Load web el para realizar una prueba de carga
Generator repositoriode otra aplicación web que se
en ejecute en un entorno de Elastic
GitHub.com Beanstalk diferente. Muestra el
uso de los archivos Buildfile y
Procfile, DynamoDB y Locust,
una herramienta de pruebas de
carga de código abierto.
4. Elija la capa del entorno (p. 15) Web server environment (Entorno de servidor web) o Worker
environment (Entorno de trabajo). Una vez creado, no se puede cambiar la capa del entorno.
718
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación Java de ejemplo
Note
La plataforma .NET en Windows Server (p. 758) no admite la capa del entorno de trabajo.
5. Elija un valor en Platform (Plataforma) que se corresponda con el lenguaje utilizado en la aplicación.
Note
Elastic Beanstalk admite varias versiones (p. 32) para la mayoría de las plataformas que
se indican. De forma predeterminada, la consola selecciona la última versión del lenguaje,
el contenedor web o el marco compatible con Elastic Beanstalk (p. 32). Si su aplicación
necesita una versión anterior, elija Configure more options (Configurar más opciones), como
se describe en el paso 7.
6. En App code (Código de aplicación), seleccione Sample application (Aplicación de muestra).
7. Para personalizar aún más el entorno, elija Configure more options (Configurar más opciones). Solo
puede establecer las siguientes opciones durante la creación del entorno:
• Environment name
• Nombre de dominio
• Versión de la plataforma (configuración)
• VPC
• datos y búsqueda
Puede modificar los siguientes ajustes después de crear el entorno, pero requieren que se
aprovisionen nuevas instancias u otros recursos, lo que puede llevar algún tiempo:
• Tipo de instancia, volumen raíz, par de claves y rol de AWS Identity and Access Management (IAM)
• Base de datos interna de Amazon RDS
• Balanceador de carga
Para obtener más información sobre los ajustes disponibles, consulte El asistente de creación de
nuevo entorno (p. 90).
8. Seleccione Create environment (Crear entorno).
719
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Una vez que disponga de un entorno que ejecute una aplicación, podrá implementar una nueva
versión (p. 130) de la aplicación o una aplicación totalmente diferente en cualquier momento. La
implementación de una nueva versión de la aplicación es una tarea muy rápida, ya que no se requiere
aprovisionar ni reiniciar instancias EC2.
Después de haber implementado una o dos aplicaciones de ejemplo y una vez que esté preparado para
empezar a desarrollar y ejecutar aplicaciones Java localmente, consulte la siguiente sección (p. 720)
para configurar un entorno de desarrollo de Java con todas las herramientas y bibliotecas que va a
necesitar.
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Secciones
• Instalación del kit de desarrollo de Java (p. 720)
• Instalación de un contenedor web (p. 720)
• Descarga de bibliotecas (p. 720)
• Instalación de AWS SDK para Java (p. 721)
• Instalación de un IDE o un editor de texto (p. 721)
• Instalación de AWS Toolkit for Eclipse (p. 721)
JDK incluye el compilador de Java, que se puede utilizar para crear archivos de origen en los archivos de
clases que se pueden ejecutar en un servidor web de Elastic Beanstalk.
Descarga de bibliotecas
Las plataformas de Elastic Beanstalk contienen algunas bibliotecas de forma predeterminada. Descargue
las bibliotecas que la aplicación va a utilizar y guárdelas en la carpeta de proyecto para implementar el
paquete de código fuente de la aplicación.
Si ha instalado Tomcat localmente, puede copiar las bibliotecas de Servlet API y JavaServer Pages (JSP)
API de la carpeta de instalación. Si la implementación se realiza con una versión de plataforma de Tomcat,
720
AWS Elastic Beanstalk Developer Guide
Instalación de AWS SDK para Java
no tiene que incluir estos archivos en el paquete de código fuente, aunque deben estar en classpath
para poder compilar las clases que los utilizan.
JUnit, Google Guava y Apache Commons cuentan con varias bibliotecas útiles. Visite sus páginas para
obtener más información:
• Download JUnit
• Download Google Guava
• Download Apache Commons
Visite la página de inicio de AWS SDK para Java si desea obtener más información e instrucciones de
instalación.
Note
Un IDE podría agregar archivos a la carpeta de proyectos que tal vez no quiera confirmar en el
control de código fuente. Para evitar confirmar estos archivos en el control de código fuente, utilice
.gitignore o la característica equivalente de la herramienta de control de código fuente.
Si simplemente quiere comenzar a escribir el código y no necesita todas las características de un IDE,
considere la posibilidad de instalar Sublime Text.
721
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de Tomcat
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
Las plataforma Tomcat de Elastic Beanstalk incluye un proxy inverso que reenvía las solicitudes a su
aplicación. El servidor predeterminado es Apache HTTP Server versión 2.4. Puede utilizar las opciones de
configuración (p. 724) para configurar Elastic Beanstalk para utilizar la herencia Apache HTTP Server
Version 2.2 en su lugar, o utilizar nginx. Elastic Beanstalk proporciona también opciones de configuración
para configurar el servidor proxy para servir recursos estáticos de una carpeta del código fuente con el
fin de reducir la carga en su aplicación. Para escenarios avanzados, puede incluir sus propios archivos
.conf (p. 728) en el paquete de código fuente para ampliar la configuración del proxy de Elastic
Beanstalk o sobrescribirla completamente.
Debe empaquetar las aplicaciones Java en un archivo de aplicación web (WAR) con una estructura
específica. Para obtener información sobre la estructura necesaria y su relación con la estructura de
directorios de su proyecto, consulte Estructuración de la carpeta de proyectos (p. 726).
Para ejecutar varias aplicaciones en el mismo servidor web, puede agrupar varios archivos WAR (p. 725)
en un solo paquete de código fuente. Cada aplicación de un paquete múltiple de código fuente WAR
se ejecuta en la ruta raíz (ROOT.war se ejecuta en myapp.elasticbeanstalk.com/) o en una ruta
directamente debajo de ella (app2.war se ejecuta en myapp.elasticbeanstalk.com/app2/), según
lo especifique el nombre del paquete WAR. En un único paquete de código fuente WAR, la aplicación
siempre se ejecuta en la ruta raíz.
Puede utilizar la Consola de administración de AWS para habilitar la rotación de registros en Amazon S3 y
configurar variables que su aplicación pueda leer desde el entorno.
722
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de Tomcat
modificar los valores de Initial JVM Heap Size (-Xms argument) y Maximum JVM Heap Size (-Xmx
argument). Un tamaño de montón inicial mayor permite que se creen más objetos antes de que se
recopilen los elementos no utilizados, pero también implica que el recolector de elementos no utilizados
tardará más tiempo en compactar el montón. El tamaño de montón máximo especifica la cantidad máxima
de memoria que la JVM puede asignar al ampliar el montón durante un periodo de actividad intensa.
Note
La memoria disponible depende del tipo de instancia Amazon EC2. Para obtener más información
acerca de los tipos de instancias EC2 disponibles para su entorno de Elastic Beanstalk. consulte
Tipos de instancia en la Guía del usuario de Amazon Elastic Compute Cloud para las instancias
de Linux.
La generación permanente es una sección del montón de JVM que almacena definiciones de clases
y metadatos asociados. Para modificar el tamaño de la generación permanente, especifique el nuevo
tamaño en el campo Maximum JVM PermGen Size (-XX:MaxPermSize argument). Esta configuración solo
se aplica a Java 7 y versiones anteriores.
Log Options
La sección Log Options (Opciones de registro) tiene dos valores:
• Instance profile: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de
Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Static Files
Para mejorar el desempeño, puede configurar el servidor proxy para servir archivos estáticos de servidor
(por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en su aplicación web. Cuando
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente
el archivo en lugar de direccionar la solicitud la aplicación. Puede definir la ruta virtual y los mapeos de
directorio en la sección Static Files (Archivos estáticos) de la página de configuración Modify software
(Modificar software).
Para obtener más información sobre la configuración de archivos estáticos con la Consola de Elastic
Beanstalk, consulte Distribución de archivos estáticos (p. 372).
Environment Properties
En la sección Environment Properties (Propiedades de entorno), puede especificar opciones de
configuración del entorno en las instancias Amazon EC2 que ejecutan su aplicación. Las propiedades del
entorno se pasan como pares de clave-valor a la aplicación.
La plataforma Tomcat define una propiedad comodín denominada JDBC_CONNECTION_STRING para los
entornos Tomcat para pasar una cadena de conexión a una base de datos externa.
Note
Si asocia una instancia de base de datos de RDS a su entorno, cree la cadena de conexión de
JDBC dinámicamente desde las propiedades del entorno de Amazon Relational Database Service
(Amazon RDS) proporcionadas por Elastic Beanstalk. Utilice JDBC_CONNECTION_STRING solo
para las instancias de base de datos que no se aprovisionan con Elastic Beanstalk.
Para obtener más información sobre el uso de Amazon RDS con su aplicación Java, consulte
Añadir una instancia de base de datos de Amazon RDS a un entorno de aplicaciones
Java (p. 737).
723
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Tomcat
Dentro del entorno de Tomcat que se ejecuta en Elastic Beanstalk, las variables de entorno están
accesibles a través de System.getProperty(). Por ejemplo, podría leer una propiedad denominada
API_ENDPOINT en una variable con el siguiente código.
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
La plataforma Tomcat admite las opciones de los siguientes espacios de nombres, además de las
opciones admitidas para todos los entornos de Elastic Beanstalk (p. 271):
Example .ebextensions/tomcat-settings.config
option_settings:
aws:elasticbeanstalk:container:tomcat:jvmoptions:
Xms: 512m
Xmx: 512m
JVM Options: '-Xmn128m'
aws:elasticbeanstalk:application:environment:
API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com
aws:elasticbeanstalk:environment:proxy:
GzipCompression: 'true'
ProxyServer: nginx
aws:elasticbeanstalk:environment:proxy:staticfiles:
/html: statichtml
/images: staticimages
724
AWS Elastic Beanstalk Developer Guide
Agrupación de archivos WAR
Example
Si se trata de una aplicación que necesite varios archivos WAR, consulte Agrupación de varios archivos
WAR en entornos Tomcat (p. 725) para obtener información más detallada.
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
Para implementar varias aplicaciones web en el entorno, combine los archivos WAR (archivo de aplicación
web) de cada componente en un único paquete de código fuente (p. 64).
Para crear un paquete de código fuente de la aplicación que contenga varios archivos WAR, organice
estos archivos utilizando la siguiente estructura.
MyApplication.zip
### .ebextensions
### foo.war
### bar.war
### ROOT.war
Si implementa un paquete de código fuente que contiene varios archivos WAR en un entorno de AWS
Elastic Beanstalk, el acceso a cada aplicación estará disponible en diferentes rutas fuera del nombre de
dominio raíz. El ejemplo anterior contenía tres aplicaciones: foo, bar, and ROOT. ROOT.war es un nombre
de archivo especial que le indica a Elastic Beanstalk que ejecute esa aplicación en el dominio raíz, por lo
que las tres aplicaciones estarán disponibles en http://MyApplication.elasticbeanstalk.com/
foo, http://MyApplication.elasticbeanstalk.com/bar y http://
MyApplication.elasticbeanstalk.com.
El paquete de código fuente solo puede incluir una carpeta .ebextensions opcional y los archivos WAR.
La carpeta .ebextensions puede contener archivos de configuración (p. 320) para personalizar los
recursos implementados en el entorno.
725
AWS Elastic Beanstalk Developer Guide
Estructuración de la carpeta de proyectos
Para obtener más información sobre la creación de paquetes de código fuente, consulte Creación del
paquete de código fuente de una aplicación (p. 64).
~/workspace/my-app/
|-- build.sh - Build script that compiles classes and creates a WAR
|-- README.MD - Readme file with information about your project, notes
|-- ROOT.war - Source bundle artifact created by build.sh
`-- src - Source code folder
|-- WEB-INF - Folder for private supporting files
| |-- classes - Compiled classes
| |-- lib - JAR libraries
| |-- tags - Tag files
| |-- tlds - Tag Library Descriptor files
| `-- web.xml - Deployment Descriptor
|-- com - Uncompiled classes
|-- css - Style sheets
|-- images - Image files
|-- js - JavaScript files
`-- default.jsp - JSP (JavaServer Pages) webpage
El contenido del archivo src coincide con lo que se va a empaquetar e implementar en el servidor, a
excepción de la carpeta com. La carpeta com contiene las clases no compiladas (archivos .java). Deben
compilarse y guardarse en el directorio WEB-INF/classes para que estén accesibles desde el código de
la aplicación.
El siguiente ejemplo es idéntico al directorio de proyectos anterior, salvo que contiene más archivos
y subdirectorios. En este ejemplo, el proyecto contiene etiquetas sencillas, un modelo y clases de
compatibilidad, así como un archivo de Java Server Pages (JSP) para un recurso record. También
contiene una hoja de estilos y JavaScript for Bootstrap, un archivo JSP y una página para errores 404.
WEB-INF/lib contiene un archivo de Java Archive (JAR) con el controlador de Java Database
Connectivity (JDBC) para PostgreSQL. WEB-INF/classes está vacío, ya que no se han compilado
todavía los archivos de clase.
~/workspace/my-app/
|-- build.sh
|-- README.MD
|-- ROOT.war
`-- src
|-- WEB-INF
| |-- classes
726
AWS Elastic Beanstalk Developer Guide
Estructuración de la carpeta de proyectos
| |-- lib
| | `-- postgresql-9.4-1201.jdbc4.jar
| |-- tags
| | `-- header.tag
| |-- tlds
| | `-- records.tld
| `-- web.xml
|-- com
| `-- myapp
| |-- model
| | `-- Record.java
| `-- web
| `-- ListRecords.java
|-- css
| |-- bootstrap.min.css
| `-- myapp.css
|-- images
| `-- myapp.png
|-- js
| `-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
cd src
javac -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/
Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/
ListRecords.java
Dentro del archivo WAR, encontrará la misma estructura que en el directorio src del ejemplo anterior,
a excepción de la carpeta src/com. El comando jar crea automáticamente el archivo META-INF/
MANIFEST.MF.
~/workspace/my-app/ROOT.war
|-- META-INF
| `-- MANIFEST.MF
|-- WEB-INF
| |-- classes
| | `-- com
| | `-- myapp
| | |-- model
| | | `-- Records.class
| | `-- web
| | `-- ListRecords.class
| |-- lib
| | `-- postgresql-9.4-1201.jdbc4.jar
| |-- tags
| | `-- header.tag
| |-- tlds
| | `-- records.tld
| `-- web.xml
727
AWS Elastic Beanstalk Developer Guide
Configuración del proxy
|-- css
| |-- bootstrap.min.css
| `-- myapp.css
|-- images
| `-- myapp.png
|-- js
| `-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
Uso .gitignore
Para evitar que se validen los archivos de clases compiladas y los archivos WAR en su repositorio de Git
o que aparezcan mensajes cuando ejecute comandos Git, agregue los tipos de archivo pertinentes en un
archivo denominado .gitignore en la carpeta de su proyecto.
~/workspace/myapp/.gitignore
*.zip
*.class
De forma predeterminada, la plataforma Tomcat utiliza Apache 2.4 para el proxy. Puede elegir usar Apache
2.2 o nginx incluyendo un archivo de configuración (p. 320) en el código fuente. El siguiente ejemplo
configura Elastic Beanstalk para usar nginx.
Example .ebextensions/nginx-proxy.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: nginx
Secciones
• Migración de Apache 2.2 a Apache 2.4 (p. 728)
• Ampliación y anulación de la configuración predeterminada de Apache (p. 729)
• Ampliación de la configuración predeterminada de nginx (p. 730)
A partir de las configuraciones de la versión 3.0.0 de la plataforma Tomcat, que se publicaron con
la actualización de Java con la plataforma Tomcat el 24 de mayo de 2018, Apache 2.4 es el proxy
predeterminado de la plataforma Tomcat. Los archivos de Apache 2.4 .conf son principalmente,
pero no en su totalidad, retrocompatible con los de Apache 2.2. Elastic Beanstalk incluye archivos
.conf predeterminados que funcionan correctamente con cada versión de Apache. Si la aplicación
no personaliza la configuración de Apache, tal y como se explica en Ampliación y anulación de la
configuración predeterminada de Apache (p. 729), debería migrar a Apache 2.4 sin problemas.
728
AWS Elastic Beanstalk Developer Guide
Configuración del proxy
Si la aplicación amplía o anula la configuración de Apache, es posible que tenga que realizar algunos
cambios para migrar a Apache 2.4. Para obtener más información, consulte Upgrading to 2.4 from 2.2 en
el sitio web de The Apache Software Foundation. Como medida temporal, hasta que migre correctamente
a Apache 2.4, puede utilizar Apache 2.2 con su aplicación; para ello, incluya el segmento archivo de
configuración (p. 320) en el código fuente.
Example .ebextensions/apache-legacy-proxy.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: apache/2.2
Para obtener una solución rápida, también puede seleccionar el servidor proxy en la Consola de Elastic
Beanstalk.
Para ampliar la configuración de Apache predeterminada de Elastic Beanstalk, agregue los archivos de
configuración .conf a una carpeta con el nombre .ebextensions/httpd/conf.d en el paquete de
código fuente de su aplicación. La configuración de Apache de Elastic Beanstalk incluye archivos .conf
en esta carpeta automáticamente.
~/workspace/my-app/
729
AWS Elastic Beanstalk Developer Guide
Configuración del proxy
|-- .ebextensions
| -- httpd
| -- conf.d
| -- myconf.conf
| -- ssl.conf
-- index.jsp
Por ejemplo, la siguiente configuración de Apache 2.4 agrega un agente de escucha en el puerto 5000.
Example .ebextensions/httpd/conf.d/port5000.conf
listen 5000
<VirtualHost *:5000>
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
Para anular completamente la configuración de Apache predeterminada de Elastic Beanstalk, incluya una
configuración en su paquete de código fuente en .ebextensions/httpd/conf/httpd.conf.
~/workspace/my-app/
|-- .ebextensions
| `-- httpd
| `-- conf
| `-- httpd.conf
`-- index.jsp
Si anula la configuración de Apache de Elastic Beanstalk, agregue las siguientes líneas a su httpd.conf
para extraer las configuraciones de Elastic Beanstalk de Informes y monitorización de estado
mejorados (p. 416), la compresión de respuesta y los archivos estáticos.
IncludeOptional conf.d/*.conf
IncludeOptional conf.d/elasticbeanstalk/*.conf
Si su entorno utiliza Apache 2.2 como proxy, reemplace las directivas IncludeOptional por Include.
Para obtener más información acerca del comportamiento de estas dos directivas en las dos versiones de
Apache, consulte Include en Apache 2.4, IncludeOptional en Apache 2.4 e Include en Apache 2.2.
Note
Para anular el agente de escucha predeterminado en el puerto 80, incluya un archivo denominado
00_application.conf en .ebextensions/httpd/conf.d/elasticbeanstalk/ para
sobrescribir la configuración de Elastic Beanstalk.
730
AWS Elastic Beanstalk Developer Guide
La plataforma Java SE
código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye archivos .conf en
esta carpeta automáticamente.
~/workspace/my-app/
|-- .ebextensions
| `-- nginx
| `-- conf.d
| |-- elasticbeanstalk
| | `-- my-server-conf.conf
| `-- my-http-conf.conf
`-- index.jsp
Los archivos con la extensión .conf en la carpeta conf.d se incluyen en el bloque http de la
configuración predeterminada. Los archivos de la carpeta conf.d/elasticbeanstalk se incluyen en el
bloque server dentro del bloque http.
Para anular completamente la configuración predeterminada de nginx de Elastic Beanstalk, incluya una
configuración en el paquete de código fuente en .ebextensions/nginx/nginx.conf.
~/workspace/my-app/
|-- .ebextensions
| `-- nginx
| `-- nginx.conf
`-- index.jsp
Si anula la configuración de nginx de Elastic Beanstalk, agregue la siguiente línea al bloque server de su
configuración para extraer las configuraciones de Elastic Beanstalk del agente de escucha en el puerto 80,
la compresión de respuesta y los archivos estáticos.
include conf.d/elasticbeanstalk/*.conf;
Note
Para anular el agente de escucha predeterminado en el puerto 80, incluya un archivo denominado
00_application.conf en .ebextensions/nginx/conf.d/elasticbeanstalk/ para
sobrescribir la configuración de Elastic Beanstalk.
Incluya también la línea siguiente en el bloque http de su configuración para extraer las configuraciones
de Elastic Beanstalk para Informes y monitorización de estado mejorados (p. 416) y los registros.
include conf.d/*.conf;
731
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de Java SE
Note
Elastic Beanstalk no analiza archivo JAR de la aplicación. Mantenga los archivos que necesita
Elastic Beanstalk fuera del archivo JAR. Por ejemplo, incluya el archivo cron.yaml de un entorno
de trabajo (p. 165) en la raíz del paquete de código fuente de la aplicación junto al archivo JAR.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
La plataforma Java SE de Elastic Beanstalk incluye un servidor nginx que actúa como proxy inverso,
que sirve contenido estático almacenado en caché y pasa solicitudes a su aplicación. La plataforma
proporciona también opciones para configurar el servidor proxy y atender recursos estáticos de una
carpeta del código fuente con el fin de reducir la carga en su aplicación. Para escenarios avanzados,
puede incluir sus propios archivos .conf (p. 735) en el paquete de código fuente para ampliar la
configuración del proxy de Elastic Beanstalk o sobrescribirla completamente.
Si solo tiene un archivo JAR, Elastic Beanstalk lo ejecutará con java -jar application_name.jar.
Para configurar los procesos que se ejecutan en las instancias de servidor en su entorno, incluya un
Procfile (p. 734) opcional en su paquete de código fuente. El Procfile es necesario si tiene más de un
JAR en la raíz del paquete de código fuente, o bien si desea personalizar el comando Java para establecer
opciones de JVM.
Para compilar clases Java y ejecutar otros comandos de compilación en las instancias EC2 de su entorno
en el momento de la implementación, incluya un Buildfile (p. 735) en el paquete de código fuente de
su aplicación. Un Buildfile le permite implementar el código fuente tal y como está y compilarlo en el
servidor en lugar de compilar los archivos JAR localmente. La plataforma Java SE incluye herramientas de
compilación comunes que le permiten compilar en el servidor.
Orden de ejecución
Puede utilizar la Consola de administración de AWS para habilitar la rotación de registros en Amazon S3 y
configurar variables que su aplicación pueda leer desde el entorno.
732
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Java SE
Log Options
La sección Log Options tiene dos valores:
• Instance profile (Perfil de instancia): especifica el perfil de instancia que tiene permiso para obtener
acceso al bucket de Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Static Files
Para mejorar el desempeño, puede configurar el servidor proxy para servir archivos estáticos de servidor
(por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en su aplicación web. Cuando
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente
el archivo en lugar de direccionar la solicitud la aplicación. Puede definir la ruta virtual y los mapeos de
directorio en la sección Static Files (Archivos estáticos) de la página de configuración Modify software
(Modificar software).
Para obtener más información sobre la configuración de archivos estáticos con la Consola de Elastic
Beanstalk, consulte Distribución de archivos estáticos (p. 372).
Environment Properties
La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de
configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Las propiedades
del entorno se pasan como pares de clave-valor a la aplicación.
Dentro del entorno de Java SE que se ejecuta en Elastic Beanstalk, es posible acceder a las variables
de entorno mediante System.getenv(). Por ejemplo, podría leer una propiedad denominada
API_ENDPOINT en una variable con el siguiente código:
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
733
AWS Elastic Beanstalk Developer Guide
Procfile
Por ejemplo, este fragmento de option_settings (p. 321) define dos opciones en el espacio de nombres de
archivos estáticos. La primera asigna la ruta /public a una carpeta con el nombre public y la segunda
asigna la ruta /images a una carpeta con el nombre img:
option_settings:
aws:elasticbeanstalk:container:java:staticfiles:
/html: statichtml
/images: staticimages
Las carpetas que se asignan a través de este espacio de nombres deben ser carpetas reales situadas en
la raíz del paquete de código fuente. No puede asignar una ruta a una carpeta en un archivo JAR.
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
Debe guardar el archivo Procfile en la raíz del paquete de código fuente. El nombre de archivo distingue
entre mayúsculas y minúsculas. Formatee el archivo Procfile del siguiente modo: un nombre de proceso,
seguido de dos puntos, seguido de un comando Java que ejecute un archivo JAR. Cada línea de su
archivo Procfile debe coincidir con la siguiente expresión regular: ^[A-Za-z0-9_]+:\s*.+$.
Procfile
El comando que ejecuta el archivo JAR principal de su aplicación debe llamarse web y debe ser el primer
comando incluido en el archivo Procfile. El servidor nginx reenvía todas las solicitudes HTTP que recibe
del balanceador de carga de su entorno a esta aplicación.
De forma predeterminada, Elastic Beanstalk configura el proxy nginx para reenviar las solicitudes a la
aplicación en el puerto 5000. Puede invalidar el puerto predeterminado estableciendo la propiedad del
entorno (p. 732) PORT en el puerto en el que desea que la aplicación principal esté a la escucha.
Note
El puerto en que su aplicación está a la escucha no afecta al puerto en el que el servidor nginx
está a la escucha para recibir las solicitudes del balanceador de carga.
Si utiliza un archivo Procfile para ejecutar varias aplicaciones, Elastic Beanstalk espera que cada
aplicación adicional esté a la escucha en un puerto 100 mayor que el anterior. Elastic Beanstalk
establece que la variable PORT sea accesible desde cada aplicación en el puerto en el que espera que
se ejecute la aplicación. Puede tener acceso a esta variable en el código de su aplicación llamando a
System.getenv("PORT").
Note
En el ejemplo anterior, la aplicación web está a la escucha en el puerto 5000, cache en el puerto
5100 y web_foo en el puerto 5200. web configura su puerto de escucha leyendo la variable PORT
734
AWS Elastic Beanstalk Developer Guide
Buildfile
y añade 100 a dicho número para determinar en qué puerto cache está a la escucha para poder
enviarle solicitudes.
La salida estándar y las secuencias de error de los procesos iniciados con un Procfile se capturan en
archivos log a los que después del proceso se les asigna un nombre y se almacenan en /var/log. Por
ejemplo, el proceso web del ejemplo anterior genera los logs llamados web-1.log y web-1.error.log
para stdout y stderr, respectivamente.
Elastic Beanstalk asume que todas las entradas del archivo Procfile deben ejecutarse en todo momento y
reinicia automáticamente todas las aplicaciones definidas en el archivo Procfile que termina. Para ejecutar
comandos que terminan y no deben reiniciarse, utilice un Buildfile (p. 735).
Un archivo Buildfile tiene la misma sintaxis que un archivo Procfile, pero los comandos de un
archivo Buildfile solo se ejecutan una vez y deben terminar cuando se completen, mientras que se
espera que los comandos de un archivo Procfile se ejecuten durante el ciclo de vida de la aplicación y
se reinicien si terminan. Para ejecutar los archivos JAR de su aplicación, utilice un Procfile en su lugar.
Añada un archivo denominado Buildfile (distingue mayúsculas de minúsculas) a la raíz del paquete de
código fuente y configúrelo para que invoque un comando de compilación de la siguiente manera:
Buildfile
El ejemplo anterior ejecuta Apache Maven para compilar una aplicación web a partir de código fuente.
Consulte los ejemplos de aplicaciones web Java (p. 715) para ver una aplicación de ejemplo que utiliza
esta característica.
La plataforma Java SE incluye las siguientes herramientas de compilación, que puede invocar desde un
script de compilación:
Para ampliar la configuración de nginx predeterminada de Elastic Beanstalk, añada los archivos de
configuración de .conf a una carpeta llamada .ebextensions/nginx/conf.d/ en el paquete de
código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye los archivos .conf
en esta carpeta automáticamente.
~/workspace/my-app/
|-- .ebextensions
735
AWS Elastic Beanstalk Developer Guide
Configuración del proxy
| `-- nginx
| `-- conf.d
| `-- myconf.conf
`-- web.jar
Para invalidar completamente la configuración predeterminada de nginx de Elastic Beanstalk, incluya una
configuración en su paquete de código fuente en .ebextensions/nginx/nginx.conf:
~/workspace/my-app/
|-- .ebextensions
| `-- nginx
| `-- nginx.conf
`-- web.jar
include conf.d/elasticbeanstalk/*.conf;
Example .ebextensions/nginx/nginx.conf
user nginx;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 33282;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
include conf.d/*.conf;
server {
listen 80 default_server;
root /var/app/current/public;
location / {
}
location /api {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
736
AWS Elastic Beanstalk Developer Guide
Añadir una base de datos
client_header_timeout 60;
client_body_timeout 60;
keepalive_timeout 60;
gzip off;
gzip_comp_level 4;
Si es la primera vez que utiliza Amazon RDS, añada una instancia de base de datos a un entorno de
prueba con la Consola de Elastic Beanstalk y verifique que su aplicación puede conectarse a ella.
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
737
AWS Elastic Beanstalk Developer Guide
Descargar el controlador JDBC
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227). Para obtener instrucciones sobre cómo
configurar una base de datos externa para usarla con Elastic Beanstalk, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Para conectarse a la base de datos, añada el archivo JAR del controlador correspondiente a su aplicación,
cargue la clase del controlador en el código y cree un objeto de conexión con las propiedades de entorno
proporcionadas por Elastic Beanstalk.
Secciones
• Descargar el controlador JDBC (p. 738)
• Conexión a una base de datos (plataformas Java SE) (p. 739)
• Conexión a una base de datos (plataformas Tomcat) (p. 739)
• Solución de problemas de conexión a la base de datos (p. 741)
Puede encontrar el controlador más reciente para su motor de base de datos en las siguientes
ubicaciones:
Para utilizar el controlador JDBC, llame a Class.forName() para cargarlo antes de crear la conexión con
DriverManager.getConnection() en su código.
jdbc:driver://hostname:port/dbName?user=userName&password=password
Puede recuperar el nombre de host, el puerto, el nombre de la base de datos, el nombre de usuario y la
contraseña desde las variables de entorno que Elastic Beanstalk proporciona a la aplicación. El nombre
del controlador es específico del tipo de base de datos y de la versión del controlador. A continuación se
muestran algunos nombres de controlador de ejemplo:
738
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos (plataformas Java SE)
El siguiente código de ejemplo muestra una clase que crea una conexión a una base de datos
PostgreSQL.
739
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos (plataformas Tomcat)
Si tiene problemas para obtener una conexión o ejecutar instrucciones SQL, pruebe a colocar el siguiente
código en un archivo JSP. Este código establece una conexión con una instancia de base de datos, crea
una tabla y escribe en ella.
try {
// Create connection to RDS DB instance
conn = DriverManager.getConnection(jdbcUrl);
setupStatement.addBatch(createTable);
setupStatement.addBatch(insertRow1);
setupStatement.addBatch(insertRow2);
setupStatement.executeBatch();
setupStatement.close();
try {
conn = DriverManager.getConnection(jdbcUrl);
readStatement = conn.createStatement();
resultSet = readStatement.executeQuery("SELECT Resource FROM Beanstalk;");
resultSet.first();
740
AWS Elastic Beanstalk Developer Guide
Solución de problemas de conexión a la base de datos
results = resultSet.getString("Resource");
resultSet.next();
results += ", " + resultSet.getString("Resource");
resultSet.close();
readStatement.close();
conn.close();
Para mostrar los resultados, coloque el siguiente código en el cuerpo de la parte HTML del archivo JSP.
<p>Established connection to RDS. Read first two rows: <%= results %></p>
Consulta de logs
Puede ver todos los logs de su entorno de Elastic Beanstalk desde Eclipse. Si no tiene abierta la vista
de AWS Explorer, elija la flecha situada junto al icono de AWS naranja en la barra de herramientas y, a
continuación, elija Show AWS Explorer View. Expanda AWS Elastic Beanstalk y el nombre de su entorno
y, a continuación, abra el menú contextual (haga clic con el botón derecho) del servidor. Elija Open in WTP
Server Editor.
Elija la pestaña Log de la vista Server para ver los registros acumulados de su entorno. Para abrir los
últimos registros, seleccione el botón Refresh en la esquina superior derecha de la página.
-------------------------------------
/var/log/tomcat7/catalina.out
-------------------------------------
INFO: Server startup in 9285 ms
Loading driver...
Driver loaded!
SQLException: Table 'Beanstalk' already exists
SQLState: 42S01
VendorError: 1050
Closing the connection.
Closing the connection.
Toda la información que la aplicación web envía a la salida estándar aparece en el log del contenedor web.
En el ejemplo anterior, la aplicación intenta crear la tabla cada vez que se carga la página. Esto produce
una excepción SQL en cada carga de página después de la primera.
741
AWS Elastic Beanstalk Developer Guide
Solución de problemas de conexión a la base de datos
Esto es aceptable porque se trata de un ejemplo. Pero en las aplicaciones reales mantenga las
definiciones de base de datos en objetos del esquema, realice las transacciones desde las clases del
modelo y coordine las solicitudes con servlets de controlador.
En primer lugar, abra el grupo de seguridad en su instancia de base de datos de RDS para permitir el
tráfico desde su equipo.
La base de datos podría tener varias entradas etiquetadas como Security Groups. Utilice la
primera, que empieza por awseb, solo si tiene una cuenta antigua que no dispone de una
Amazon Virtual Private Cloud (Amazon VPC) predeterminada.
7. En Security group details, elija la pestaña Inbound y, a continuación, elija Edit.
8. Añada una regla para MySQL (puerto 3306) que permita el tráfico procedente de la dirección IP,
especificada en formato CIDR.
9. Seleccione Save (Guardar). Los cambios surtirán efecto de inmediato.
Consulte de nuevo los datos de configuración de Elastic Beanstalk para el entorno y anote el punto de
enlace. Utilizará el nombre de dominio para conectarse a la instancia de base de datos de RDS.
Instale el cliente de MySQL e inicie una conexión con la base de datos en el puerto 3306. En Windows,
instale MySQL Workbench desde la página de inicio de MySQL y siga las instrucciones.
Una vez que se haya conectado, puede ejecutar comandos SQL para ver el estado de la base de datos, si
se crearon las tablas y las filas y otra información.
742
AWS Elastic Beanstalk Developer Guide
Conjunto de herramientas de Eclipse
+--------------+
| Resource |
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)
AWS Toolkit for Eclipse solamente es compatible con proyectos que utilizan la plataforma Java
con Tomcat, pero no la plataforma Java SE.
Para obtener más información sobre los requisitos previos y la instalación de AWS Toolkit for Eclipse,
visite https://aws.amazon.com/eclipse. También puede ver el vídeo Using AWS Elastic Beanstalk with
the AWS Toolkit for Eclipse. Este tema contiene también información útil sobre herramientas, temas con
procedimientos y otros recursos para los desarrolladores de Java.
Para importar entornos existentes, expanda el nodo AWS Elastic Beanstalk y haga doble clic en un entorno
de AWS Explorer dentro de Eclipse. Ahora, puede implementar las aplicaciones de Elastic Beanstalk en
este entorno.
Con AWS Toolkit for Eclipse, puede modificar el aprovisionamiento y la configuración de los recursos
de AWS que se utilizan en los entornos de aplicaciones. Para obtener más información sobre la
administración de sus entornos de aplicaciones a través de la consola de administración de AWS, consulte
743
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Administración de entornos (p. 77). En esta sección, se abordan las opciones específicas del servicio que
se pueden editar en AWS Toolkit for Eclipse durante la configuración del entorno de aplicaciones. Para
obtener más información sobre AWS Toolkit for Eclipse, consulte Guía de introducción a AWS Toolkit for
Eclipse.
1. Si la vista de AWS Explorer no aparece en Eclipse, en el menú, haga clic en Window > Show View >
AWS Explorer. Expanda el nodo Elastic Beanstalk y el nodo de la aplicación.
2. En AWS Explorer, haga doble clic en el entorno de Elastic Beanstalk.
3. En la parte inferior del panel, haga clic en la pestaña Configuration.
744
AWS Elastic Beanstalk Developer Guide
Administración de entornos
En Server (Servidor), en la pestaña Configuration (Configuración) del entorno de Toolkit for Eclipse, puede
editar la configuración de la instancia Amazon EC2 del entorno de Elastic Beanstalk.
Para obtener más información acerca de los tipos de instancias de Amazon EC2 disponibles con la
aplicación de Elastic Beanstalk, consulte Tipos de instancias en la Guía del usuario de la Amazon Elastic
Compute Cloud.
745
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Puede configurar los grupos de seguridad de Amazon EC2 a través de la consola de administración de
AWS o a través de AWS Toolkit for Eclipse. Puede especificar qué grupos de seguridad de Amazon EC2
controlan el acceso a la aplicación de Elastic Beanstalk especificando los nombres de uno o varios grupos
de seguridad de Amazon EC2 (delimitados por comas) en el cuadro EC2 Security Groups (Grupos de
seguridad de la EC2).
Note
1. En AWS Toolkit for Eclipse, haga clic en la pestaña AWS Explorer. Expanda el nodo Amazon EC2 y
haga doble clic en Security Groups (Grupos de seguridad).
2. Haga clic con el botón derecho en cualquier lugar de la tabla de la izquierda y seleccione New Group.
3. En el cuadro de diálogo Security Group, escriba un nombre y una descripción para el grupo de
seguridad y haga clic en OK.
Para obtener más información sobre los grupos de seguridad de Amazon EC2, consulte Uso de grupos de
seguridad en la Guía del usuario de Amazon Elastic Compute Cloud.
Debe crear un par de claves de Amazon EC2 y configurar las instancias Amazon EC2
aprovisionadas para Elastic Beanstalk de forma que utilicen el par de claves de Amazon EC2
antes de poder acceder a sus instancias Amazon EC2 aprovisionadas por Elastic Beanstalk.
Puede crear el par de claves utilizando Publish to Beanstalk Wizard (Asistente de publicar en
Beanstalk) en AWS Toolkit for Eclipse cuando implemente la aplicación en Elastic Beanstalk.
Si lo desea, también puede configurar el par de claves de Amazon EC2 con la consola de
746
AWS Elastic Beanstalk Developer Guide
Administración de entornos
administración de AWS. Si desea obtener instrucciones acerca de cómo se crea un par de claves
de Amazon EC2, consulte la Guía de introducción de Amazon Elastic Compute Cloud.
Para obtener más información sobre los pares de claves de Amazon EC2, consulte Uso de credenciales
de Amazon EC2 en la Guía del usuario de Amazon Elastic Compute Cloud. Para obtener más información
acerca de cómo conectarse a las instancias Amazon EC2, consulte Conexión a instancias y Conexión
a una instancia Linux/UNIX desde Windows utilizando PuTTY en la Guía del usuario de Amazon Elastic
Compute Cloud.
Métricas de CloudWatch
De forma predeterminada, solo están habilitadas las métricas básicas de Amazon CloudWatch, que
devuelven datos en periodos de cinco minutos. Puede habilitar métricas CloudWatch más detalladas de un
minuto seleccionando 1 minute en Monitoring Interval de la sección Server de la pestaña Configuration de
su entorno en AWS Toolkit for Eclipse.
Note
Se pueden aplicar gastos por las métricas en intervalos de un minuto del servicio Amazon
CloudWatch. consulte Amazon CloudWatch para obtener más información.
ID de AMI personalizada
Puede anular la AMI predeterminada utilizada en las instancias de Amazon EC2 y sustituirla por la suya
personalizada escribiendo el identificador de la AMI personalizada en el cuadro Custom AMI ID de la
sección Server de la pestaña Configuration del entorno en AWS Toolkit for Eclipse.
Important
El uso de una AMI propia es una tarea avanzada que debe llevarse a cabo con precaución. Si
necesita una AMI personalizada, le recomendamos que comience con la AMI predeterminada
de Elastic Beanstalk y después la modifique. Para darlas por buenas, Elastic Beanstalk espera
que las instancias de Amazon EC2 satisfagan una serie de requisitos, entre ellos disponer de
un administrador host en ejecución. Si no se cumplen, es posible que el entorno no funcione
correctamente.
Elastic Load Balancing distribuye y balancea automáticamente el tráfico entrante de la aplicación entre
todas las instancias de servidor EC2 que están en ejecución. Además, el servicio facilita la incorporación
de nuevas instancias cuando es necesario aumentar la capacidad de la aplicación.
Cuando se implementa una aplicación, Elastic Beanstalk aprovisiona automáticamente Elastic Load
Balancing. En Toolkit for Eclipse, en la opción Load Balancing (Balanceo de carga) de la pestaña
Configuration (Configuración) del entorno, puede editar la configuración de balanceo de carga del entorno
de Elastic Beanstalk.
747
AWS Elastic Beanstalk Developer Guide
Administración de entornos
En las siguientes secciones se describen los parámetros de Elastic Load Balancing que puede configurar
para la aplicación.
Puertos
El balanceador de carga aprovisionado para atender las solicitudes de la aplicación Elastic Beanstalk
envía solicitudes a las instancias Amazon EC2 donde se ejecuta la aplicación. El balanceador de
carga aprovisionado puede escuchar las solicitudes de los puertos HTTP y HTTPS y direccionarlas a
las instancias Amazon EC2 de la aplicación de AWS Elastic Beanstalk. De forma predeterminada, el
balanceador de carga atiende las solicitudes en el puerto HTTP. Al menos uno de los puertos (HTTP o
HTTPS) debe estar activo.
Important
Para desactivar el puerto HTTP, seleccione OFF en HTTP Puerto Listener. Para activar el puerto HTTP,
seleccione un puerto HTTP (por ejemplo, 80).
Note
Para tener acceso al entorno usando un puerto diferente del predeterminado 80, por ejemplo, el
puerto 8080, añada un agente de escucha al balanceador de carga existente y configúrelo para
que escuche en dicho puerto.
Por ejemplo, si usa Agentes de escucha para el Classic Load Balancer, escriba el comando
siguiente reemplazando LOAD_BALANCER_NAME por el nombre de su balanceador de carga para
Elastic Beanstalk.
748
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Por ejemplo, si usa la CLI de AWS para Application Load Balancers, escriba el comando siguiente
y sustituya LOAD_BALANCER_ARN por el ARN del balanceador de carga para Elastic Beanstalk.
Si quiere que Elastic Beanstalk supervise el entorno, no elimine el agente de escucha del puerto
80.
1. Cree un certificado nuevo con AWS Certificate Manager (ACM) o cargue un certificado y una clave
en AWS Identity and Access Management (IAM). Para obtener más información sobre cómo solicitar
un certificado de ACM, consulte Solicitar un certificado en la Guía del usuario de AWS Certificate
Manager. Para obtener más información sobre la importación de certificados de terceros en ACM,
consulte Importar certificados en la Guía del usuario de AWS Certificate Manager. Si ACM no está
disponible en su región, use AWS Identity and Access Management (IAM) para cargar un certificado
de terceros. Los servicios de ACM e IAM guardan el certificado y proporcionan un nombre de recurso
de Amazon (ARN) para el certificado SSL. Para obtener más información sobre la creación y carga de
certificados en IAM, consulte Uso de certificados de servidor en la Guía del usuario de IAM.
2. Especifique el puerto HTTPS seleccionando un puerto en la lista desplegable de HTTPS Listener Port.
3. En el cuadro de texto SSL Certificate ID (ID de certificado SSL), escriba el nombre de recurso de
Amazon (ARN) del certificado SSL. Por ejemplo, arn:aws:iam::123456789012:server-
certificate/abc/certs/build o arn:aws:acm:us-
east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678. Utilice el
certificado SSL que ha creado y cargado en el paso 1.
Para desactivar el puerto HTTPS, seleccione OFF en HTTPS Listener Port (HTTP Puerto Listener).
Comprobaciones de estado
Puede administrar la configuración de la comprobación de estado a través de la sección EC2 Instance
Health Check (Comprobación de estado de instancia EC2) del panel Load Balancing (Balanceo de carga).
En la siguiente lista se describen los parámetros de comprobación de estado que puede definir para la
aplicación.
749
AWS Elastic Beanstalk Developer Guide
Administración de entornos
• Para determinar el estado de la instancia, Elastic Beanstalk busca un código de respuesta 200 en
una dirección URL que consulta. De forma predeterminada, Elastic Beanstalk busca contenedores no
heredados en TCP:80 y contenedores heredados en HTTP:80. Puede anular para que coincida con un
recurso existente en la aplicación (por ejemplo, /myapp/index.jsp) utilizando el cuadro Application
Health Check URL (URL de comprobación de estado de aplicación). Si anula la URL predeterminada,
Elastic Beanstalk utilizará HTTP para consultar el recurso. Para comprobar si está usando un tipo
de contenedor heredado, consulte ¿Por qué algunos tipos de contenedores están marcados como
heredados? (p. 159).
• En Health Check Interval (seconds) (Intervalo de comprobación de estado [segundos]), especifique
el número de segundos que deben transcurrir entre las comprobaciones de estado de las instancias
Amazon EC2 de la aplicación.
• En Health Check Timeout, especifique el número de segundos que Elastic Load Balancing va a esperar
para recibir una respuesta antes de considerar que la instancia no responde.
• Utilice los cuadros Healthy Check Count Threshold y Unhealthy Check Count Threshold para especificar
el número de sondeos de URL consecutivos que deben realizarse correcta o incorrectamente antes de
que Elastic Load Balancing cambie el estado de la instancia. Por ejemplo, si se especifica el valor 5 en
el cuadro de texto Unhealthy Check Count Threshold, la dirección URL devolvería un mensaje de error
o un mensaje de tiempo de espera agotado cinco veces seguidas antes de que Elastic Load Balancing
considerara que no se ha superado la comprobación de estado.
Sessions
De forma predeterminada, un balanceador de carga direcciona cada solicitud por separado a la instancia
de servidor con menor carga. Por su parte, una sesión sticky vincula la sesión de un usuario con una
instancia de servidor específica para que todas las solicitudes que provengan de ese usuario durante la
sesión se envíen a la misma instancia de servidor.
Elastic Beanstalk utiliza cookies HTTP generadas por el balanceador de carga cuando las sesiones sticky
están habilitadas en una aplicación. El balanceador de carga utiliza una cookie especial generada por el
balanceador de carga para hacer un seguimiento de la instancia de aplicación de cada solicitud. Cuando el
balanceador de carga recibe una solicitud, primero comprueba si esta cookie está presente en la solicitud.
Si lo está, la solicitud se envía a la instancia de aplicación especificada en la cookie. Si no encuentra
ninguna cookie, el balanceador de carga elige una instancia de aplicación en función del algoritmo de
balanceo de carga existente. Para vincular las solicitudes posteriores del mismo usuario a esa instancia de
aplicación, se inserta una cookie en la respuesta. La configuración de la política define el vencimiento de la
cookie, que establece el periodo de validez de cada cookie.
Para obtener más información sobre Elastic Load Balancing, consulte la Guía para desarrolladores de
Elastic Load Balancing.
750
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Amazon EC2 Auto Scaling le permite tomar un grupo de instancias de Amazon EC2 y definir diversos
parámetros para hacer que el número de instancias aumente o se reduzca automáticamente. Amazon
EC2 Auto Scaling puede agregar o quitar instancias de Amazon EC2 de ese grupo, lo que le ayudará a
administrar eficazmente los cambios de tráfico de la aplicación.
Amazon EC2 Auto Scaling también monitoriza el estado de cada instancia Amazon EC2 que lanza. Si
una instancia termina de forma inesperada, Amazon EC2 Auto Scaling lo detecta y lanza una instancia de
sustitución. Esta función le permite mantener un número fijo de instancias Amazon EC2 automáticamente.
Elastic Beanstalk aprovisiona Amazon EC2 Auto Scaling para la aplicación. En Toolkit for Eclipse, en la
opción Auto Scaling de la pestaña Configuration (Configuración) del entorno, puede editar la configuración
de Auto Scaling del entorno de Elastic Beanstalk.
En las secciones siguientes se explica cómo se configuran los parámetros de Auto Scaling para la
aplicación.
Configuración de lanzamiento
Puede editar la configuración de lanzamiento para controlar la forma en que la aplicación de Elastic
Beanstalk aprovisiona los recursos de Amazon EC2 Auto Scaling.
Utilice las opciones Minimum Instance Count (Número mínimo de instancias) y Maximum Instance Count
(Número máximo de instancias) para especificar el tamaño mínimo y máximo del grupo de Auto Scaling
que la aplicación de Elastic Beanstalk utiliza.
751
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Note
Para mantener un número fijo de instancias Amazon EC2, establezca los cuadros de texto
Minimum Instance Count (Número mínimo de instancias) y Maximum Instance Count (Número
máximo de instancias) en el mismo valor.
Desencadenadores
Un disparador es un mecanismo de Amazon EC2 Auto Scaling que se define para indicar al sistema
cuándo debe aumentar (escalado ascendente) y reducir (escalado descendente) el número de instancias.
Puede configurar disparadores para activar cualquiera de las métricas publicadas en Amazon CloudWatch,
como el uso de la CPU, y determinar si se han cumplido las condiciones especificadas. Cuando se supera
el umbral superior o inferior de la métrica durante el período de tiempo especificado, el disparador lanza un
proceso de larga ejecución llamado actividad de escalado.
Puede definir un disparador de escalado para la aplicación de Elastic Beanstalk utilizando AWS Toolkit for
Eclipse.
En Toolkit for Eclipse, puede configurar la siguiente lista de parámetros de disparadores en la sección
Scaling Trigger (Disparador de escalado) de la pestaña Configuration (Configuración) del entorno.
752
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Para obtener más información sobre Amazon EC2 Auto Scaling, consulte la sección Amazon EC2 Auto
Scaling en la Documentación de Amazon Elastic Compute Cloud.
1. Si la vista de AWS Explorer no aparece en Eclipse, en el menú, haga clic en Window > Show View >
AWS Explorer. Expanda el nodo Elastic Beanstalk y el nodo de la aplicación.
2. En AWS Explorer, haga doble clic en el entorno de Elastic Beanstalk.
3. En la parte inferior del panel, haga clic en la pestaña Configuration.
4. En Container (Contenedor), puede configurar las opciones del contenedor.
753
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Depuración remota
Para probar la aplicación en remoto, puede ejecutarla en modo de depuración.
1. En el menú de AWS Toolkit for Eclipse, haga clic en Window > Show View (Mostrar vista) > Other
(Otro).
2. Expanda la carpeta Server y haga clic en Servers. Haga clic en Aceptar.
3. En el panel Servers, haga clic con el botón derecho del servidor en el que se ejecuta la aplicación y
seleccione Restart in Debug.
AWS Toolkit for Eclipse aún no permite modificar la configuración, incluidas las propiedades
del sistema, de los entornos de una VPC. A menos que tenga una cuenta antigua que utilice
EC2 Classic, deberá usar la consola de administración de AWS (que se describe en la siguiente
sección) o la CLI de EB (p. 578)
Note
Las opciones de configuración del entorno pueden contener cualquier carácter ASCII imprimible,
excepto el acento grave (', ASCII 96), y no pueden superar los 200 caracteres.
1. Si la vista de AWS Explorer no aparece en Eclipse, seleccione Window, Show View, Other. Expanda
AWS Toolkit y haga clic en AWS Explorer.
2. En el panel AWS Explorer, expanda Elastic Beanstalk, expanda también el nodo de la aplicación y
haga doble clic en el entorno de Elastic Beanstalk.
3. En la parte inferior del panel del entorno, haga clic en la pestaña Advanced.
4. En aws:elasticbeanstalk:application:environment, haga clic en JDBC_CONNECTION_STRING
y escriba una cadena de conexión. Por ejemplo, la siguiente cadena de conexión de JDBC se
conectaría a una instancia de base de datos de MySQL en el puerto 3306 del host local con el nombre
de usuario me y la contraseña mypassword:
jdbc:mysql://localhost:3306/mydatabase?user=me&password=mypassword
Esta cadena de conexión estaría accesible para la aplicación de Elastic Beanstalk como una
propiedad del sistema llamada JDBC_CONNECTION_STRING.
754
AWS Elastic Beanstalk Developer Guide
Administración de varias cuentas de AWS
5. Presione Ctrl+C en el teclado o seleccione File (Archivo), Save (Guardar) para guardar los cambios
realizados en la configuración del entorno. Los cambios tardan aproximadamente un minuto en
reflejarse.
Para agregar una cuenta de AWS con AWS Toolkit for Eclipse
1. En Eclipse, asegúrese de que la barra de herramientas está visible. En la barra de herramientas, haga
clic en la flecha situada junto al icono de AWS y seleccione Preferences.
2. Haga clic en Add account.
3. En el cuadro de texto Account Name, especifique el nombre que se va mostrar para la cuenta.
4. En el cuadro de texto Access Key ID, escriba el ID de clave de acceso de AWS.
5. En el cuadro de texto Secret Access Key, escriba la clave secreta de AWS.
For API access, you need an access key ID and secret access key. Use IAM user access keys instead
of Usuario de la cuenta raíz de AWS access keys. For more information about creating access keys,
see Managing Access Keys for IAM Users in the Guía del usuario de IAM.
6. Haga clic en Aceptar.
Si desea utilizar una cuenta distinta para implementar una aplicación en Elastic Beanstalk
1. En la barra de herramientas de Eclipse, haga clic en la flecha situada junto al icono de AWS y
seleccione Preferences.
2. En Default Account (Cuenta predeterminada), seleccione la cuenta que desea utilizar para
implementar aplicaciones en Elastic Beanstalk.
755
AWS Elastic Beanstalk Developer Guide
Consulta de eventos
Consulta de eventos
Puede utilizar AWS Toolkit for Eclipse para obtener acceso a los eventos y notificaciones relacionados con
la aplicación.
1. Si la vista de AWS Explorer no aparece en Eclipse, en el menú, haga clic en Window > Show View >
AWS Explorer. Expanda el nodo Elastic Beanstalk y el nodo de la aplicación.
2. En AWS Explorer, haga doble clic en el entorno de Elastic Beanstalk.
3. En la parte inferior del panel, haga clic en la pestaña Events.
Aparece una lista con los eventos de todos los entornos de la aplicación.
1. En AWS Toolkit for Eclipse, haga clic en AWS Explorer. Expanda el nodo Amazon EC2 y haga doble
clic en Instances.
2. En la ventana Amazon EC2 Instances, en la columna Instance ID, haga clic con el botón derecho en el
valor de Instance ID de la instancia de Amazon EC2 que está en ejecución en el balanceador de carga
de la aplicación. A continuación, haga clic en Open Shell.
756
AWS Elastic Beanstalk Developer Guide
Terminación de un entorno
Eclipse abre automáticamente el cliente SSH y establece la conexión con la instancia EC2.
Para obtener más información sobre cómo conectarse a una instancia Amazon EC2, consulte la Guía
de introducción de Amazon Elastic Compute Cloud.
Terminación de un entorno
Para evitar que se apliquen cargos por recursos de AWS que no utiliza, puede terminar el entorno en
ejecución a través de AWS Toolkit for Eclipse. Para obtener más información sobre la terminación del
entorno, consulte Terminación de un entorno de Elastic Beanstalk (p. 118).
1. En AWS Toolkit for Eclipse, haga clic en el panel AWS Explorer. Expanda el nodo Elastic Beanstalk.
2. Amplíe la aplicación de Elastic Beanstalk y haga clic con el botón derecho en el entorno de Elastic
Beanstalk.
3. Haga clic en Terminate Environment. Elastic Beanstalk tarda unos minutos en terminar los recursos de
AWS que se ejecutan en el entorno.
Recursos
Existen varios lugares a los que puede acudir para obtener ayuda adicional con el desarrollo de las
aplicaciones Java.
Recurso Descripción
757
AWS Elastic Beanstalk Developer Guide
Creación e implementación de
aplicaciones de Elastic Beanstalk
en .NET mediante AWS Toolkit for
Visual Studio
Elastic Beanstalk para .NET facilita la implementación, la administración y el escalado de sus aplicaciones
web ASP.NET que utilizan Amazon Web Services. Elastic Beanstalk para .NET está disponible para todo
aquel que vaya a desarrollar o alojar una aplicación web que use IIS.
Empezar ahora: para empezar con un tutorial, puede ir directamente a Tutorial: Cómo implementar una
aplicación de ejemplo .NET mediante AWS Elastic Beanstalk (p. 770). En este tutorial, implementará una
aplicación web ASP.NET de ejemplo en un contenedor de aplicaciones de AWS Elastic Beanstalk.
En el resto de esta sección se indican las instrucciones para crear, probar, implementar y volver a
implementar su aplicación web ASP.NET en Elastic Beanstalk mediante AWS Toolkit for Visual Studio.
En la segunda parte se explica cómo administrar y configurar sus aplicaciones y entornos utilizando AWS
Toolkit for Visual Studio. Para obtener más información acerca de los requisitos previos, instrucciones de
instalación y ejecución de ejemplos de código, vaya a AWS Toolkit for Microsoft Visual Studio. Este sitio
contiene también información útil sobre herramientas, temas con procedimientos y otros recursos para los
desarrolladores de ASP.NET.
Note
Esta plataforma no admite las siguientes características de Elastic Beanstalk:
• Entornos de trabajo. Para obtener más información, consulte Entornos de trabajo de AWS
Elastic Beanstalk (p. 165).
• Registros de paquete. Para obtener más información, consulte Consulta de los registros de
instancias (p. 457).
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Temas
• Introducción a .NET en Elastic Beanstalk (p. 759)
• Configuración del entorno de desarrollo de .NET (p. 761)
• Uso de la plataforma .NET de AWS Elastic Beanstalk (p. 761)
• Tutorial: Cómo implementar una aplicación de ejemplo .NET mediante AWS Elastic
Beanstalk (p. 770)
• Implementación de una aplicación de ASP.NET Core con AWS Elastic Beanstalk (p. 778)
• Agregar una instancia de base de datos de Amazon RDS a un entorno de aplicaciones .NET (p. 786)
• AWS Toolkit for Visual Studio (p. 789)
• Recursos (p. 816)
758
AWS Elastic Beanstalk Developer Guide
Introducción
Ejemplos
Nombre
Configuraciones admitidas Tipo Fuente Descripción
de
entorno
WS 2012
WS 2008 R2
ASP.NET
WS 2012 R2 Servidor
dotnet- Aplicación web ASP.NET con una
MVC5 web aspmvc5-arquitectura clásica de modelo-
v1.zip vista-control.
4. Elija la capa del entorno (p. 15) Web server environment (Entorno de servidor web) o Worker
environment (Entorno de trabajo). Una vez creado, no se puede cambiar la capa del entorno.
Note
La plataforma .NET en Windows Server (p. 758) no admite la capa del entorno de trabajo.
759
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
5. Elija un valor en Platform (Plataforma) que se corresponda con el lenguaje utilizado en la aplicación.
Note
Elastic Beanstalk admite varias versiones (p. 32) para la mayoría de las plataformas que
se indican. De forma predeterminada, la consola selecciona la última versión del lenguaje,
el contenedor web o el marco compatible con Elastic Beanstalk (p. 32). Si su aplicación
necesita una versión anterior, elija Configure more options (Configurar más opciones), como
se describe en el paso 7.
6. En App code (Código de aplicación), seleccione Sample application (Aplicación de muestra).
7. Para personalizar aún más el entorno, elija Configure more options (Configurar más opciones). Solo
puede establecer las siguientes opciones durante la creación del entorno:
• Environment name
• Nombre de dominio
• Versión de la plataforma (configuración)
• VPC
• datos y búsqueda
Puede modificar los siguientes ajustes después de crear el entorno, pero requieren que se
aprovisionen nuevas instancias u otros recursos, lo que puede llevar algún tiempo:
• Tipo de instancia, volumen raíz, par de claves y rol de AWS Identity and Access Management (IAM)
• Base de datos interna de Amazon RDS
• Balanceador de carga
Para obtener más información sobre los ajustes disponibles, consulte El asistente de creación de
nuevo entorno (p. 90).
8. Seleccione Create environment (Crear entorno).
Pasos siguientes
Una vez que disponga de un entorno que ejecute una aplicación, podrá implementar una nueva
versión (p. 130) de la aplicación o una aplicación totalmente diferente en cualquier momento. La
760
AWS Elastic Beanstalk Developer Guide
Entorno de desarrollo
implementación de una nueva versión de la aplicación es una tarea muy rápida, ya que no se requiere
aprovisionar ni reiniciar instancias EC2.
Después de haber implementado una aplicación de ejemplo o dos y una vez que esté preparado para
empezar a implementar localmente, consulte la siguiente sección (p. 761) para configurar un entorno de
desarrollo de .NET.
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Secciones
• Instalación de un IDE (p. 761)
• Instalación de AWS Toolkit for Visual Studio (p. 761)
Si necesita administrar recursos de AWS desde la aplicación, instale AWS SDK para .NET. Por ejemplo,
puede utilizar Amazon S3 para almacenar y recuperar datos.
Con AWS SDK para .NET, puede ponerse en marcha en cuestión de minutos con un único paquete
descargable que incluye plantillas del proyecto de Visual Studio, la biblioteca de .NET para AWS, ejemplos
de código en C# y documentación. Se proporcionan ejemplos prácticos en C# sobre el uso de las
bibliotecas para crear aplicaciones. Se proporcionan también tutoriales de vídeo online y documentación
de referencia le que ayudarán a aprender a usar las bibliotecas y los ejemplos de código.
Visite la página de inicio de AWS SDK para .NET si desea obtener más información e instrucciones de
instalación.
Instalación de un IDE
Los entornos de desarrollo integrado (IDE) cuentan con una amplia gama de características que facilitan
el desarrollo de aplicaciones. Si no ha usado un IDE para el desarrollo en .NET, pruebe Visual Studio
Community para empezar.
Visite la página Visual Studio Community para descargar e instalar Visual Studio Community.
761
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de .NET en
la Consola de administración de AWS
Elastic Beanstalk proporciona opciones de configuración (p. 252) que se pueden usar para personalizar el
software que se ejecuta en las instancias EC2 del entorno de Elastic Beanstalk. También puede configurar
las variables de entorno que necesita la aplicación, habilitar la rotación de logs en Amazon S3 y establecer
la configuración de .NET Framework.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
Opciones de contenedor
• Target .NET runtime (Tiempo de ejecución .NET objetivo): establezca en 2.0 para ejecutar CLR v2.
• Enable 32-bit applications (Habilitar aplicaciones de 32 bits): establezca en True para ejecutar
aplicaciones de 32 bits.
Log Options
La sección Log Options tiene dos valores:
• Instance profile (Perfil de instancia): especifica el perfil de instancia que tiene permiso para obtener
acceso al bucket de Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
762
AWS Elastic Beanstalk Developer Guide
El espacio de nombres
aws:elasticbeanstalk:container:dotnet:apppool
Environment Properties
La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de
configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Estos ajustes se
pasan como pares clave-valor a la aplicación. Utilice System.GetEnvironmentVariable para leerlos.
Pueden existir claves idénticas en ambos web.config y como propiedades de entorno. Utilice el espacio
de nombres System.Configuration para leer valores de web.config.
Note
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
El espacio de nombres
aws:elasticbeanstalk:container:dotnet:apppool
Puede usar un archivo de configuración (p. 320) para definir opciones de configuración y realizar otras
tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración se
pueden definir a través del servicio Elastic Beanstalk o la plataforma que utilice y están organizadas por
espacios de nombres.
En el siguiente ejemplo, el archivo de configuración muestra los ajustes de cada una de las opciones
disponibles en este espacio de nombres:
Example .ebextensions/dotnet-settings.config
option_settings:
aws:elasticbeanstalk:container:dotnet:apppool:
Target Runtime: 2.0
Enable 32-bit Applications: True
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
763
AWS Elastic Beanstalk Developer Guide
Migración de versiones principales
La plataforma Windows Server se encuentra actualmente en la versión 2 (v2). Si la aplicación utiliza una
versión de la plataforma de Windows Server anterior a la versión 2, le recomendamos que migre a dicha
versión.
• Control de versiones: cada lanzamiento obtiene un nuevo número de versión y puede consultar las
versiones anteriores (que aún están disponibles) al crear y administrar los entornos.
• Estado mejorado: consulte Informes y monitorización de estado mejorados (p. 416) para obtener más
información.
• Implementaciones Inmutable y Continua con un lote adicional: para ver más información sobre las
políticas de implementación, consulte Implementación de aplicaciones en entornos de AWS Elastic
Beanstalk (p. 130).
• Actualizaciones inmutables: para obtener detalles acerca de los tipos de actualización, consulte Cambios
de configuración (p. 140).
• Actualizaciones de plataformas administradas: para obtener más detalles, consulte Actualizaciones de
plataforma administradas (p. 154).
Note
En las versiones anteriores, el orden de procesamiento de los archivos de configuración no era coherente.
Durante la creación del entorno, Container Commands se ejecutaba después de que el código fuente
de la aplicación se implementaba en IIS. Durante las implementaciones en entornos en ejecución,
los comandos de contenedor se ejecutaban antes de que se implementara la nueva versión. En las
operaciones de escalado vertical, los archivos de configuración no se procesaban.
764
AWS Elastic Beanstalk Developer Guide
Migración de versiones principales
Además, IIS se iniciaba antes de que los comandos de contenedor se ejecutaran. Este comportamiento
ha hecho que algunos clientes implementen soluciones en los comandos de contenedor, que detienen el
servidor de IIS antes de que los comandos se ejecuten y lo inician de nuevo cuando se han completado.
De V1 a V2
La plataforma de Windows Server v2 no es compatible con .NET Core 1.x y 2.0. Si va a migrar su
aplicación desde Windows Server v1 hasta v2 y la aplicación utiliza una de estas versiones de .NET Core,
actualice la aplicación a una versión de .NET Core compatible con v2. Para ver una lista de versiones
compatibles, consulte .NET en Windows Server con IIS en la Plataformas de AWS Elastic Beanstalk.
Si la aplicación utiliza una imagen de máquina de Amazon (Amazon Machine Image, AMI) personalizada,
cree una nuevo AMI personalizada basada en una AMI de la plataforma de Windows Server
v2. Para obtener más información, consulte Uso de una Imagen de máquina de Amazon (AMI)
personalizada (p. 370).
Note
Antes de la versión 1
Además de las cuestiones relativas a la migración desde v1, si va a migrar la aplicación desde una pila
de soluciones de Windows Server anterior a la v1 y actualmente utiliza comandos de contenedor, quite
los comandos que haya agregado para evitar incoherencias de procesamiento al migrar a una versión
más reciente. A partir de la v1, está garantizado que los comandos de contenedores se van a ejecutar
por completo antes de que el código fuente de la aplicación que se implementa y antes de que IIS se
inicie. Esto le permite realizar cambios en el código fuente en C:\staging y modificar los archivos de
configuración de IIS durante este paso sin problemas.
765
AWS Elastic Beanstalk Developer Guide
Manifiesto de implementación
Por ejemplo, puede utilizar la CLI de AWS para descargar un archivo DLL de Amazon S3 en el código
fuente de la aplicación:
.ebextensions\copy-dll.config
container_commands:
copy-dll:
command: aws s3 cp s3://my-bucket/dlls/large-dll.dll .\lib\
Para obtener más información sobre el uso de los archivos de configuración, consulte Personalización
avanzada de entornos con archivos de configuración (.ebextensions) (p. 320).
Los manifiestos de implementación agregan compatibilidad con las aplicaciones de .NET Core (p. 766)
en Elastic Beanstalk. Puede implementar una aplicación .NET Framework sin necesidad de un manifiesto,
pero las aplicaciones de .NET Core necesitan uno para poder ejecutarse en Elastic Beanstalk. Si utiliza
un manifiesto de implementación, debe crear un archivo del sitio para cada aplicación y empaquetar todos
ellos después en un segundo ZIP que contenga el manifiesto de implementación.
Para una mayor personalización, puede escribir sus propios scripts de implementación (p. 769) en
Windows PowerShell e indicarle a Elastic Beanstalk qué scripts van a instalar, desinstalar y reiniciar la
aplicación.
Secciones
• Aplicaciones de .NET Core (p. 766)
• Ejecución de varias aplicaciones (p. 768)
• Configuración de grupos de aplicaciones (p. 769)
• Definición de implementaciones personalizadas (p. 769)
766
AWS Elastic Beanstalk Developer Guide
Manifiesto de implementación
comando (dotnet) que puede utilizar para generar una aplicación, ejecutarla localmente y prepararla para
su publicación.
Note
Visite Implementación de una aplicación de ASP.NET Core con AWS Elastic Beanstalk (p. 778)
para ver un tutorial y una aplicación de ejemplo donde se usa un manifiesto de aplicación para
ejecutar una aplicación de .NET Core en Elastic Beanstalk.
Para ejecutar una aplicación de .NET Core en Elastic Beanstalk, ejecute dotnet publish y empaquete
la salida en un archivo ZIP, sin incluir los directorios que contiene. Coloque el archivo del sitio en un
paquete de código fuente con un manifiesto de implementación que tenga un destino de implementación
de tipo aspNetCoreWeb.
El siguiente manifiesto de implementación ejecuta una aplicación de .NET Core desde un archivo del sitio
llamado dotnet-core-app.zip situado en la ruta raíz.
{
"manifestVersion": 1,
"deployments": {
"aspNetCoreWeb": [
{
"name": "my-dotnet-core-app",
"parameters": {
"archive": "dotnet-core-app.zip",
"iisPath": "/"
}
}
]
}
}
Empaquete el manifiesto y el archivo del sitio en un ZIP para crear un paquete de código fuente.
Example dotnet-core-bundle.zip
.
|-- aws-windows-deployment-manifest.json
`-- dotnet-core-app.zip
El archivo del sitio contiene el código compilado de la aplicación, las dependencias y el archivo
web.config.
Example dotnet-core-app.zip
.
|-- Microsoft.AspNetCore.Hosting.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.dll
|-- Microsoft.AspNetCore.Http.Abstractions.dll
|-- Microsoft.AspNetCore.Http.Extensions.dll
|-- Microsoft.AspNetCore.Http.Features.dll
|-- Microsoft.AspNetCore.Http.dll
|-- Microsoft.AspNetCore.HttpOverrides.dll
|-- Microsoft.AspNetCore.Server.IISIntegration.dll
|-- Microsoft.AspNetCore.Server.Kestrel.dll
|-- Microsoft.AspNetCore.WebUtilities.dll
|-- Microsoft.Extensions.Configuration.Abstractions.dll
767
AWS Elastic Beanstalk Developer Guide
Manifiesto de implementación
|-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll
|-- Microsoft.Extensions.Configuration.dll
|-- Microsoft.Extensions.DependencyInjection.Abstractions.dll
|-- Microsoft.Extensions.DependencyInjection.dll
|-- Microsoft.Extensions.FileProviders.Abstractions.dll
|-- Microsoft.Extensions.FileProviders.Physical.dll
|-- Microsoft.Extensions.FileSystemGlobbing.dll
|-- Microsoft.Extensions.Logging.Abstractions.dll
|-- Microsoft.Extensions.Logging.dll
|-- Microsoft.Extensions.ObjectPool.dll
|-- Microsoft.Extensions.Options.dll
|-- Microsoft.Extensions.PlatformAbstractions.dll
|-- Microsoft.Extensions.Primitives.dll
|-- Microsoft.Net.Http.Headers.dll
|-- System.Diagnostics.Contracts.dll
|-- System.Net.WebSockets.dll
|-- System.Text.Encodings.Web.dll
|-- dotnet-core-app.deps.json
|-- dotnet-core-app.dll
|-- dotnet-core-app.pdb
|-- dotnet-core-app.runtimeconfig.json
`-- web.config
{
"manifestVersion": 1,
"deployments": {
"aspNetCoreWeb": [
{
"name": "WebAPITest",
"parameters": {
"appBundle": "webapi.zip",
"iisPath": "/api"
}
},
{
"name": "ASPNetTest",
"parameters": {
"appBundle": "aspnet.zip",
"iisPath": "/"
}
}
]
}
}
768
AWS Elastic Beanstalk Developer Guide
Manifiesto de implementación
{
"manifestVersion": 1,
"iisConfig": {
"appPools": [
{
"name": "App pool",
"recycling": {
"regularTimeInterval": 10
}
}
]
},
"deployments": {
"msDeploy": [
{
"name": "Web app",
"parameters": {
"archive": "site.zip",
"iisPath": "/",
"appPool": "MyPool"
}
}
]
}
}
Cada implementación del bloque deployments especifica un archivo, una ruta de ejecución y un
appPool en el que se ejecuta.
El siguiente manifiesto de implementación le indica a Elastic Beanstalk que ejecute un script install
llamado siteInstall.ps1 para instalar el sitio web durante el lanzamiento de instancias e
implementaciones, que ejecute un script llamado uninstall antes de instalar una nueva versión en una
implementación, y que ejecute un script llamado restart para reiniciar la aplicación cuando se seleccione
Restart App Server (p. 80) en la consola de administración.
{
"manifestVersion": 1,
"deployments": {
"custom": [
{
"name": "Custom site",
769
AWS Elastic Beanstalk Developer Guide
Tutorial: ASP.NET MVC5
"scripts": {
"install": {
"file": "siteInstall.ps1"
},
"restart": {
"file": "siteRestart.ps1"
},
"uninstall": {
"file": "siteUninstall.ps1"
}
}
}
]
}
}
Incluya los artefactos necesarios para ejecutar la aplicación en el paquete de código fuente con el
manifiesto y los scripts.
Example custom-site-bundle.zip
.
|-- aws-windows-deployment-manifest.json
|-- siteInstall.ps1
|-- siteRestart.ps1
|-- siteUninstall.ps1
`-- site-contents.zip
Este tutorial utiliza una aplicación web ASP.NET de ejemplo que puede descargar aquí. También
utiliza Toolkit for Visual Studio y se ha probado mediante Visual Studio Professional 2012.
Crear el entorno
En primer lugar, utilice el asistente Create New Application de la Consola de Elastic Beanstalk para crear el
entorno de la aplicación. En Platform (Plataforma), elija .NET.
770
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
Cuando el entorno está en funcionamiento, añada una instancia de base de datos de Amazon RDS que
utiliza la aplicación para almacenar datos. En DB engine (Motor de base de datos), seleccione sqlserver-
ex.
771
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
6. En la página Publicar en AWS Elastic Beanstalk, para Destino de la implementación, elija el entorno
que acaba de crear y después elija Siguiente.
772
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
7. En la página Opciones de la aplicación, acepte todos los valores predeterminados y elija Siguiente.
773
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
774
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
9. Si desea monitorizar el estado de la implementación, utilice NuGet Package Manager en Visual Studio.
775
AWS Elastic Beanstalk Developer Guide
Publicar su aplicación en Elastic Beanstalk
10. Vuelva a la Consola de Elastic Beanstalk y elija el nombre de la aplicación, que aparece junto al
nombre del entorno.
776
AWS Elastic Beanstalk Developer Guide
Limpiar los recursos de AWS
Si ha terminado de trabajar con Elastic Beanstalk por ahora, puede terminar su entorno .NET.
Elastic Beanstalk limpia todos los recursos de AWS asociados a su entorno, incluidas las instancias
EC2, la instancia de base de datos, el balanceador de carga, los grupos de seguridad, las alarmas de
CloudWatch, etc.
Para obtener más información, consulte Creación e implementación de aplicaciones de Elastic Beanstalk
en .NET mediante AWS Toolkit for Visual Studio (p. 758), el blog de desarrollo de AWS .NET o el blog de
administración de aplicaciones de AWS.
777
AWS Elastic Beanstalk Developer Guide
Tutorial: .NET Core
En primer lugar, usará la herramienta de línea de comandos dotnet del SDK de .NET Core para generar
una aplicación básica de línea de comandos de .NET Core, instalar las dependencias, compilar el código
y ejecutar las aplicaciones localmente. A continuación, creará la clase Program.cs predeterminada y
añadirá una clase Startup.cs de ASP.NET y archivos de configuración para crear una aplicación que
sirva solicitudes HTTP con ASP.NET e IIS.
Finalmente, Elastic Beanstalk usa un manifiesto de implementación (p. 766) para configurar las
implementaciones de aplicaciones de .NET Core, aplicaciones personalizadas y varias aplicaciones
de .NET Core o MSBuild en un único servidor. Para implementar una aplicación de .NET Core en un
entorno de Windows Server, tendrá que añadir un archivo del sitio a un paquete de código fuente de la
aplicación con un manifiesto de implementación. El comando dotnet publish genera clases compiladas
y dependencias que puede empaquetar con un archivo web.config para crear un archivo del sitio. El
manifiesto de implementación indica a Elastic Beanstalk la ruta en la que debe ejecutarse el sitio y se
puede usar para configurar grupos de aplicación y ejecutar varias aplicaciones en diferentes rutas.
Secciones
• Requisitos previos (p. 778)
• Generar un proyecto de .NET Core (p. 779)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 780)
• Actualizar el código fuente (p. 780)
• Implementar la aplicación (p. 784)
• Eliminación (p. 786)
• Pasos siguientes (p. 786)
Requisitos previos
Este tutorial utiliza el SDK de .NET Core para generar una aplicación básica de .NET Core, ejecutarla
localmente y crear un paquete implementable.
Requisitos
1. Descargue el instalador desde microsoft.com/net/core. Elija Windows. Elija Download .NET SDK.
2. Ejecute el instalador y siga las instrucciones.
Este tutorial utiliza una herramienta ZIP de línea de comandos para crea un paquete de código fuente
que puede implementar en Elastic Beanstalk. Para utilizar el comando zip en Windows, puede instalar
778
AWS Elastic Beanstalk Developer Guide
Generar un proyecto de .NET Core
UnxUtils, una colección ligera de herramientas útiles de línea de comandos como zip y ls. Otra opción
es usar el Explorador de Windows (p. 66) u otra herramienta ZIP para crear archivos de paquetes de
código fuente.
1. Descargar UnxUtils.
2. Extraiga el archivo en un directorio local. Por ejemplo, C:\Program Files (x86).
3. Agregue la ruta de los binarios en la variable de usuario Windows PATH. Por ejemplo, C:\Program
Files (x86)\UnxUtils\usr\local\wbin.
> zip -h
Copyright (C) 1990-1999 Info-ZIP
Type 'zip "-L"' for software license.
...
1. Abra una nueva ventana de símbolo del sistema y desplácese hasta la carpeta de su usuario.
> cd %USERPROFILE%
2. Utilice el comando dotnet new para generar un nuevo proyecto de .NET Core.
779
AWS Elastic Beanstalk Developer Guide
Lanzamiento de un entorno de Elastic Beanstalk
Se tarda alrededor de diez minutos en crear el entorno. Durante este tiempo, puede actualizar el código
fuente.
Los ejemplos de código fuente para seguir están disponibles aquí: dotnet-core-tutorial-source.zip
Note
El siguiente procedimiento muestra cómo convertir el código del proyecto en aplicación web. Para
simplificar el proceso, puede generar el proyecto como aplicación web desde el principio. En la
sección anterior Generar un proyecto de .NET Core (p. 779), modifique el comando del paso
dotnet new con el siguiente comando.
780
AWS Elastic Beanstalk Developer Guide
Actualizar el código fuente
1. Copie Program.cs en su directorio de aplicaciones para que se ejecute como un constructor de hosts
web.
Example c:\users\username\dotnet-core-tutorial\Program.cs
using System;
using Microsoft.AspNetCore.Hosting;
using System.IO;
namespace aspnetcoreapp
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
Example c:\users\username\dotnet-core-tutorial\Startup.cs
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
namespace aspnetcoreapp
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Run(context =>
{
return context.Response.WriteAsync("Hello from ASP.NET Core!");
});
}
}
}
Example c:\users\username\dotnet-core-tutorial\web.config
781
AWS Elastic Beanstalk Developer Guide
Actualizar el código fuente
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule"
resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\dotnet-core-
tutorial.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
El siguiente ejemplo se ha desarrollado con .NET Core Runtime 2.2.1. Es posible que tenga
que modificar los valores de los atributos TargetFramework o Version de los elementos
PackageReference para que coincidan con la versión de .NET Core Runtime que utiliza en
sus proyectos personalizados.
Example c:\users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel"
Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration"
Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<None Include="web.config" CopyToPublishDirectory="Always" />
</ItemGroup>
</Project>
A continuación, instale las nuevas dependencias y ejecute el sitio web de ASP.NET localmente.
Para ejecutar la aplicación en un servidor web, debe agrupar el código fuente compilado con un archivo
de configuración web.config y las dependencias del runtime. La herramienta dotnet proporciona un
comando publish que recopila estos archivos en un directorio en función de la configuración de dotnet-
core-tutorial.csproj.
782
AWS Elastic Beanstalk Developer Guide
Actualizar el código fuente
• Utilice el comando dotnet publish para enviar el código compilado y las dependencias a una
carpeta con el nombre site.
Para implementar la aplicación en Elastic Beanstalk, empaquete el archivo del sitio con un manifiesto de
implementación (p. 766). Esto indica a Elastic Beanstalk cómo ejecutarla.
C:\users\username\dotnet-core-tutorial> cd site
C:\users\username\dotnet-core-tutorial\site> zip ../site.zip *
adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 84%)
adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 59%)
adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 28%)
adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 26%)
adding: Microsoft.AspNetCore.Authentication.Abstractions.dll (164 bytes security)
(deflated 49%)
adding: Microsoft.AspNetCore.Authentication.Core.dll (164 bytes security) (deflated
57%)
adding: Microsoft.AspNetCore.Connections.Abstractions.dll (164 bytes security)
(deflated 51%)
adding: Microsoft.AspNetCore.Hosting.Abstractions.dll (164 bytes security) (deflated
49%)
adding: Microsoft.AspNetCore.Hosting.dll (164 bytes security) (deflated 60%)
adding: Microsoft.AspNetCore.Hosting.Server.Abstractions.dll (164 bytes security)
(deflated 44%)
adding: Microsoft.AspNetCore.Http.Abstractions.dll (164 bytes security) (deflated
54%)
adding: Microsoft.AspNetCore.Http.dll (164 bytes security) (deflated 55%)
adding: Microsoft.AspNetCore.Http.Extensions.dll (164 bytes security) (deflated 50%)
adding: Microsoft.AspNetCore.Http.Features.dll (164 bytes security) (deflated 50%)
adding: Microsoft.AspNetCore.HttpOverrides.dll (164 bytes security) (deflated 49%)
adding: Microsoft.AspNetCore.Server.IISIntegration.dll (164 bytes security) (deflated
46%)
adding: Microsoft.AspNetCore.Server.Kestrel.Core.dll (164 bytes security) (deflated
63%)
adding: Microsoft.AspNetCore.Server.Kestrel.dll (164 bytes security) (deflated 46%)
adding: Microsoft.AspNetCore.Server.Kestrel.Https.dll (164 bytes security) (deflated
44%)
adding: Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll (164 bytes
security) (deflated 56%)
adding: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll (164 bytes
security) (deflated 51%)
adding: Microsoft.AspNetCore.WebUtilities.dll (164 bytes security) (deflated 55%)
adding: Microsoft.Extensions.Configuration.Abstractions.dll (164 bytes security)
(deflated 48%)
adding: Microsoft.Extensions.Configuration.Binder.dll (164 bytes security) (deflated
47%)
adding: Microsoft.Extensions.Configuration.dll (164 bytes security) (deflated 46%)
adding: Microsoft.Extensions.Configuration.EnvironmentVariables.dll (164 bytes
security) (deflated 46%)
adding: Microsoft.Extensions.Configuration.FileExtensions.dll (164 bytes security)
(deflated 47%)
adding: Microsoft.Extensions.DependencyInjection.Abstractions.dll (164 bytes
security) (deflated 54%)
adding: Microsoft.Extensions.DependencyInjection.dll (164 bytes security) (deflated
53%)
783
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
Example c:\users\username\dotnet-core-tutorial\aws-windows-deployment-manifest.json
{
"manifestVersion": 1,
"deployments": {
"aspNetCoreWeb": [
{
"name": "test-dotnet-core",
"parameters": {
"appBundle": "site.zip",
"iisPath": "/",
"iisWebSite": "Default Web Site"
}
}
]
}
}
3. Utilice el comando zip para crear un paquete de código fuente denominado dotnet-core-
tutorial.zip.
Implementar la aplicación
Implemente el paquete de código fuente en el entorno de Elastic Beanstalk creado.
784
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
785
AWS Elastic Beanstalk Developer Guide
Eliminación
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Pasos siguientes
Mientras siga desarrollando la aplicación, es probable que desee administrar los entornos e implementar
su aplicación sin tener que crear manualmente un archivo.zip y cargarlo en la Consola de Elastic
Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
Si utiliza Visual Studio para desarrollar su aplicación, también puede utilizar AWS Toolkit for Visual Studio
para implementar cambios, administrar sus entornos de Elastic Beanstalk y administrar otros recursos de
AWS. Para obtener más información, consulte AWS Toolkit for Visual Studio (p. 789).
Para el desarrollo y las pruebas, tal vez desee utilizar la funcionalidad de Elastic Beanstalk para añadir una
instancia de base de datos administrada directamente a su entorno. Para obtener instrucciones acerca de
cómo configurar una base de datos dentro del entorno, consulte Añadir una base de datos al entorno de
Elastic Beanstalk (p. 227).
Por último, si pretende utilizar su aplicación en un entorno de producción, configure un nombre de dominio
personalizado (p. 251) para su entorno y habilite HTTPS (p. 374) para las conexiones seguras.
Si es la primera vez que utiliza Amazon RDS, agregue una instancia de base de datos (p. 787) a un
entorno de prueba con la Consola de Elastic Beanstalk y asegúrese de que la aplicación puede conectarse
a ella.
786
AWS Elastic Beanstalk Developer Guide
Añadir una instancia de base de datos al entorno
Para conectarse a una base de datos, agregue el controlador (p. 788) a la aplicación, cargue la clase
de controlador en el código y cree una cadena de conexión (p. 788) con las propiedades de entorno
proporcionadas por Elastic Beanstalk. La configuración y el código de conexión varían en función del motor
de base de datos y la plataforma que utilice.
En entornos de producción, cree una instancia de base de datos fuera del entorno de Elastic Beanstalk
para desacoplar los recursos del entorno de los recursos de base de datos. El uso de una instancia
de base de datos permite conectarse a la misma base de datos desde varios entornos y llevar a cabo
implementaciones “blue/green” (azul/verde). Para obtener instrucciones, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Secciones
• Añadir una instancia de base de datos al entorno (p. 787)
• Descargar un controlador (p. 788)
• Conexión a una base de datos (p. 788)
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227).
787
AWS Elastic Beanstalk Developer Guide
Descargar un controlador
Descargar un controlador
Descargue e instale el paquete EntityFramework y un controlador de base de datos para el entorno de
desarrollo con NuGet.
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
namespace MVC5App.Models
{
public class Helpers
{
public static string GetRDSConnectionString()
{
var appConfig = ConfigurationManager.AppSettings;
Example DBContext.cs
using System.Data.Entity;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
namespace MVC5App.Models
788
AWS Elastic Beanstalk Developer Guide
AWS Toolkit for Visual Studio
{
public class RDSContext : DbContext
{
public RDSContext()
: base(GetRDSConnectionString())
{
}
1. Pulse F5.
2. Seleccione Iniciar depuración en el menú Depurar.
Pruebas locales
Con Visual Studio, resulta muy fácil probar la aplicación localmente. Para probar o ejecutar aplicaciones
web ASP.NET, necesita un servidor web. Visual Studio dispone de varias opciones, como Internet
Information Services (IIS), IIS Express o el servidor de desarrollo de Visual Studio integrado. Para obtener
más información sobre cada una de estas opciones y decidir cuál es la mejor para usted, visite Web
Servers in Visual Studio for ASP.NET Web Projects.
El archivo de configuración (p. 320) debe formar parte del proyecto que se va a incluir en el
archivo. En lugar de incluir los archivos de configuración en el proyecto, puede utilizar Visual
Studio para implementar todos los archivos en la carpeta del proyecto. En el Explorador de
soluciones, haga clic con el botón derecho en el nombre de proyecto y, a continuación, haga clic
789
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
Para implementar la aplicación en Elastic Beanstalk con AWS Toolkit for Visual Studio
1. En el Solution Explorer (Explorador de soluciones), haga clic con el botón derecho en la aplicación y
seleccione Publish to AWS (Publicar en AWS).
2. En el asistente de Publish to AWS (Publicar en AWS), escriba la información de la cuenta.
a. En AWS account to use for deployment (Cuenta de AWS que usar para la implementación),
seleccione una cuenta u Other (Otro) para especificar los datos de una nueva cuenta.
b. En Region (Región), seleccione la región en la que desea implementar la aplicación. Para obtener
información sobre las regiones de este producto, consulte Regiones y puntos de enlace en la
Referencia general de Amazon Web Services. Si selecciona una región que no es compatible con
Elastic Beanstalk, la opción para implementar en Elastic Beanstalk dejará de estar disponible.
c. Haga clic en Deploy new application with template (Implementar nueva aplicación con plantilla) y
seleccione Elastic Beanstalk. Haga clic en Next (Siguiente).
790
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
a. Seleccione Create a new environment for this application (Crear un nuevo entorno para esta
aplicación).
b. En Name (Nombre), escriba un nombre para su entorno.
c. En Description (Descripción), describa el entorno. Este paso es opcional.
d. Seleccione el tipo de entorno que desee en Type (Tipo).
Puede seleccionar Load balanced, auto scaled (Carga balanceada, autoescalado) o Single
instance (Instancia individual). Para obtener más información, consulte Tipos de entornos (p. 163).
Note
En los entornos con una única instancia, no se aplica la configuración del balanceo de
carga, el escalado automático y la URL de comprobación de estado.
e. La URL del entorno aparecerá automáticamente en el cuadro Environment URL (URL de entorno)
cuando mueva el cursor a ese cuadro.
f. Haga clic en Check availability (Comprobar disponibilidad) para asegurarse de que la URL está
disponible.
791
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
a. En Container Type (Tipo de contenedor), seleccione 64bit Windows Server 2012 running IIS
8 (Windows Server 2012 de 64 bits con IIS 8) o 64bit Windows Server 2008 running IIS 7.5
(Windows Server 2008 de 64 bits con IIS 7.5).
b. En Instance Type (Tipo de instancia), seleccione Micro.
c. En Key pair (Par de claves), seleccione Create new key pair (Crear nuevo par de claves). Escriba
un nombre para el nuevo par de claves (en este ejemplo, utilizaremos myuswestkeypair) y
haga clic en OK. El par de claves permite el acceso de Escritorio remoto a las instancias de
Amazon EC2. Para obtener más información sobre los pares de claves de Amazon EC2, consulte
Using Credentials en la Guía del usuario de Amazon Elastic Compute Cloud.
d. Seleccione un perfil de instancia.
Si no tiene un perfil de instancia, seleccione Create a default instance profile (Crear un perfil de
instancia predeterminado). Para obtener información sobre el uso de perfiles de instancia con
Elastic Beanstalk, consulte Administración de perfiles de instancias de Elastic Beanstalk (p. 486).
e. Si tiene una VPC personalizada que quiere utilizar con el entorno, haga clic en Launch into VPC
(Lanzar en VPC). Puede configurar los datos de la VPC en la página siguiente. Para obtener más
información sobre Amazon VPC, consulte Amazon Virtual Private Cloud (Amazon VPC). Para ver
792
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
una lista de los tipos de contenedores no heredados admitidos, consulte ¿Por qué algunos tipos
de contenedores están marcados como heredados? (p. 159).
793
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
794
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
En los entornos con una única instancia, esta opción no es aplicable, ya que el entorno no tiene
un balanceador de carga. Para obtener más información, consulte Tipos de entornos (p. 163).
c. Si se trata de un entorno con balanceo de carga y escalado automático, seleccione las subredes
del balanceador de carga de tipo Elastic Load Balancer y las instancias EC2. Si creó subredes
públicas y privadas, asegúrese de que el balanceador de tipo Elastic Load Balancer y las
instancias EC2 están asociados con la subred correcta. Amazon VPC crea por defecto una
subred pública predeterminada con 10.0.0.0/24 y una subred privada con 10.0.1.0/24. Puede ver
las subredes existentes en la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.
Si se trata de un entorno con una única instancia, la VPC solo necesita una subred pública para
la instancia. No podrá seleccionar una subred para el balanceador de carga, ya que el entorno no
tiene ninguno. Para obtener más información, consulte Tipos de entornos (p. 163).
d. En los entornos con balanceo de carga y escalado automático, seleccione el grupo de seguridad
que creó para las instancias, si procede.
795
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
Si el entorno solo tiene una instancia, no necesita un dispositivo NAT. Seleccione el grupo de
seguridad predeterminado. Elastic Beanstalk asigna una dirección IP elástica a la instancia que
permite a esta obtener acceso a Internet.
e. Haga clic en Siguiente.
7. En la página Application Options (Opciones de aplicación), configure las opciones de la aplicación.
796
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
9. Revise las opciones de implementación. Si todo está tal y como quiere, haga clic en Deploy
(Implementar).
797
AWS Elastic Beanstalk Developer Guide
Terminación de un entorno
Terminación de un entorno
Para evitar que se le apliquen cargos por recursos de AWS que no utiliza, puede terminar un entorno en
ejecución con AWS Toolkit for Visual Studio.
Note
Siempre podrá lanzar más adelante un nuevo entorno con la misma versión.
1. Expanda el nodo de Elastic Beanstalk y el nodo de la aplicación en AWS Explorer. Haga clic con el
botón derecho en el entorno de la aplicación y seleccione Terminate Environment (Terminar entorno).
2. Cuando le pregunten, haga clic en Yes (Sí) para confirmar que desea terminar el entorno. Elastic
Beanstalk tarda unos minutos en terminar los recursos de AWS que se ejecutan en el entorno.
Note
Implementación en su entorno
Ahora que ha probado su aplicación, es fácil editarla e implementarla y ver los resultados inmediatamente.
1. En Solution Explorer, haga clic con el botón derecho en la aplicación y después haga clic en Republish
to Environment (Volver a publicar en el entorno) <el nombre de su entorno>. Aparece el
asistente Re-publish to AWS Elastic Beanstalk (Volver a publicar en AWS Elastic Beanstalk).
798
AWS Elastic Beanstalk Developer Guide
implementación
Si desea cambiar alguna de las opciones, puede hacer clic en Cancel (Cancelar) y utilizar el
asistente Publish to AWS (Publicar en AWS) en su lugar. Para obtener instrucciones, consulte
Creación de un entorno de Elastic Beanstalk (p. 789).
El proyecto web ASP.NET actualizado se exportará como un archivo de implementación web con la
nueva etiqueta de versión, se cargará en Amazon S3 y se registrará como una nueva versión de la
aplicación con Elastic Beanstalk. La característica de implementación de Elastic Beanstalk monitorea
el entorno existente hasta que esté disponible con el código que acaba de implementar. En la pestaña
env:<nombre del entorno>, verá el estado del entorno.
También puede implementar una aplicación en un entorno existente si, por ejemplo, necesita restaurar una
versión de la aplicación anterior.
1. Haga clic con el botón derecho en la aplicación de Elastic Beanstalk para expandir el nodo de Elastic
Beanstalk en AWS Explorer. Seleccione View Status (Ver estado).
2. En la pestaña App: <nombre de aplicación>, haga clic en Versions (Versiones).
3. Haga clic en la versión de la aplicación que desea implementar y haga clic en Publish Version
(Publicar versión).
4. En el asistente Publish Application Version (Publicar versión de la aplicación), haga clic en Next
(Siguiente).
799
AWS Elastic Beanstalk Developer Guide
implementación
800
AWS Elastic Beanstalk Developer Guide
Administración de entornos
• Expanda el nodo Elastic Beanstalk y el nodo de la aplicación. A continuación, haga clic con el botón
derecho en el entorno de Elastic Beanstalk en AWS Explorer. Seleccione View Status (Ver estado).
• Servidor
• Balanceo de carga
• Autoescalado
• Notificaciones
• Propiedades del entorno
Puede editar la configuración de las instancias de Amazon EC2 del entorno de Elastic Beanstalk con la
pestaña Server (Servidor) incluida en la pestaña del entorno de la aplicación en AWS Toolkit for Visual
Studio.
801
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Para obtener más información acerca de los tipos de instancias de Amazon EC2 disponibles con la
aplicación de Elastic Beanstalk, consulte Tipos de instancias en la Guía del usuario de la Amazon Elastic
Compute Cloud.
Puede configurar los grupos de seguridad de Amazon EC2 a través de la consola de administración de
AWS o a través de AWS Toolkit for Visual Studio. Puede especificar qué grupos de seguridad de Amazon
EC2 controlan el acceso a la aplicación de Elastic Beanstalk especificando los nombres de uno o varios
grupos de seguridad de Amazon EC2 (delimitados por comas) en el cuadro de texto EC2 Security Groups
(Grupos de seguridad de EC2).
Note
Asegúrese de que el puerto 80 (HTTP) está accesible desde 0.0.0.0/0 como el intervalo de CIDR
de origen si desea habilitar las comprobaciones de estado para su aplicación. Para obtener más
información sobre las comprobaciones de estado, consulte Comprobaciones de estado (p. 806).
Para crear un grupo de seguridad mediante AWS Toolkit for Visual Studio
1. En Visual Studio, en AWS Explorer, expanda el nodo Amazon EC2 y haga doble clic en Security
Groups (Grupos de seguridad).
2. Haga clic en Create Security Group (Crear grupo de seguridad) e introduzca un nombre y una
descripción para el grupo de seguridad.
3. Haga clic en Aceptar.
802
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Para obtener más información sobre los grupos de seguridad de Amazon EC2, consulte Uso de grupos de
seguridad en la Guía del usuario de Amazon Elastic Compute Cloud.
Debe crear un par de claves de Amazon EC2 y configurar las instancias EC2 aprovisionadas
para Elastic Beanstalk de forma que utilicen el par de claves de Amazon EC2 para poder obtener
acceso a las instancias EC2 aprovisionadas para Elastic Beanstalk. Puede crear el par de claves
utilizando el asistente Publish to AWS (Publicar en AWS) de AWS Toolkit for Visual Studio
cuando implemente la aplicación en Elastic Beanstalk. Si desea crear pares de claves adicionales
mediante el conjunto de herramientas, siga los pasos que se indican a continuación. Si lo desea,
también puede configurar el par de claves de Amazon EC2 con la consola de administración de
AWS. Para obtener instrucciones sobre cómo crear un par de claves de Amazon EC2, consulte la
Guía de introducción de Amazon Elastic Compute Cloud.
El cuadro de texto Existing Key Pair (Par de claves existente) le permite especificar el nombre de un par de
claves de Amazon EC2 que puede utilizar para iniciar sesión de forma segura en las instancias de Amazon
EC2 que ejecutan su aplicación de Elastic Beanstalk.
1. Expanda el nodo Amazon EC2 y haga doble clic en Key Pairs (Pares de claves).
2. Haga clic en Create Key Pair (Crear par de claves) e introduzca el nombre del par de claves.
3. Haga clic en Aceptar.
Para obtener más información sobre los pares de claves de Amazon EC2, consulte el tema relacionado
con el uso de credenciales de Amazon EC2 en la Guía del usuario de Amazon Elastic Compute Cloud.
Para obtener más información acerca de cómo conectarse a instancias de Amazon EC2, consulte Listado y
conexión a instancias de servidor (p. 812).
Intervalo de monitorización
De forma predeterminada, solo están habilitadas las métricas básicas de Amazon CloudWatch, que
devuelven datos en periodos de cinco minutos. Puede habilitar métricas CloudWatch más detalladas de un
minuto seleccionando 1 minute en Monitoring Interval de la sección Server de la pestaña Configuration de
su entorno en AWS Toolkit for Eclipse.
Note
Se pueden aplicar gastos por las métricas en intervalos de un minuto del servicio Amazon
CloudWatch. consulte Amazon CloudWatch para obtener más información.
ID de AMI personalizada
Puede anular la AMI predeterminada utilizada en las instancias de Amazon EC2 y sustituirla por la suya
personalizada escribiendo el identificador de la AMI personalizada en el cuadro Custom AMI ID de la
sección Server de la pestaña Configuration del entorno en AWS Toolkit for Eclipse.
Important
El uso de una AMI propia es una tarea avanzada que debe llevarse a cabo con precaución. Si
necesita una AMI personalizada, le recomendamos que comience con la AMI predeterminada
de Elastic Beanstalk y después la modifique. Para darlas por buenas, Elastic Beanstalk espera
que las instancias de Amazon EC2 satisfagan una serie de requisitos, entre ellos disponer de
803
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Elastic Load Balancing le permite distribuir y balancear automáticamente el tráfico entrante de la aplicación
entre todas las instancias de servidor que están en ejecución. Además, el servicio facilita la incorporación
de nuevas instancias cuando es necesario aumentar la capacidad de la aplicación.
Cuando se implementa una aplicación, Elastic Beanstalk aprovisiona automáticamente Elastic Load
Balancing. Puede editar la configuración de las instancias de Amazon EC2 del entorno de Elastic
Beanstalk con la pestaña Load Balancer (Balanceador de carga) incluida en la pestaña del entorno de la
aplicación en AWS Toolkit for Visual Studio.
En las siguientes secciones se describen los parámetros de Elastic Load Balancing que puede configurar
para la aplicación.
Puertos
El balanceador de carga aprovisionado para atender las solicitudes de la aplicación Elastic Beanstalk
envía solicitudes a las instancias de Amazon EC2 donde se ejecuta la aplicación. El balanceador de
carga aprovisionado puede escuchar las solicitudes de los puertos HTTP y HTTPS y direccionarlas a
las instancias de Amazon EC2 de la aplicación de AWS Elastic Beanstalk. De forma predeterminada, el
balanceador de carga atiende las solicitudes en el puerto HTTP. Al menos uno de los puertos (HTTP o
HTTPS) debe estar activo.
804
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Important
Para desactivar el puerto HTTP, seleccione OFF en HTTP Listener Port (HTTP Puerto Listener). Para
activar el puerto HTTP, seleccione un puerto HTTP (por ejemplo, 80) en la lista.
Note
Para tener acceso al entorno usando un puerto diferente del predeterminado 80, por ejemplo, el
puerto 8080, añada un agente de escucha al balanceador de carga existente y configúrelo para
que escuche en dicho puerto.
Por ejemplo, si usa Agentes de escucha para el Classic Load Balancer, escriba el comando
siguiente reemplazando LOAD_BALANCER_NAME por el nombre de su balanceador de carga para
Elastic Beanstalk.
Por ejemplo, si usa la CLI de AWS para Application Load Balancers, escriba el comando siguiente
y sustituya LOAD_BALANCER_ARN por el ARN del balanceador de carga para Elastic Beanstalk.
Si quiere que Elastic Beanstalk supervise el entorno, no elimine el agente de escucha del puerto
80.
Elastic Load Balancing admite el protocolo HTTPS/TLS para permitir el cifrado del tráfico en las conexiones
cliente con el balanceador de carga. Las conexiones entre el balanceador de carga y las instancias EC2
usan cifrado de texto sin formato. De forma predeterminada, el puerto HTTPS está desactivado.
1. Cree un certificado nuevo con AWS Certificate Manager (ACM) o cargue un certificado y una clave
en AWS Identity and Access Management (IAM). Para obtener más información sobre cómo solicitar
un certificado de ACM, consulte Solicitar un certificado en la Guía del usuario de AWS Certificate
Manager. Para obtener más información sobre la importación de certificados de terceros en ACM,
consulte Importar certificados en la Guía del usuario de AWS Certificate Manager. Si ACM no está
disponible en su región, use AWS Identity and Access Management (IAM) para cargar un certificado
de terceros. Los servicios de ACM e IAM guardan el certificado y proporcionan un nombre de recurso
de Amazon (ARN) para el certificado SSL. Para obtener más información sobre la creación y carga de
certificados en IAM, consulte Uso de certificados de servidor en la Guía del usuario de IAM.
2. Especifique el puerto HTTPS seleccionando un puerto en HTTPS Listener Port (HTTP Puerto
Listener).
805
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Para desactivar el puerto HTTPS, seleccione OFF en HTTPS Listener Port (HTTP Puerto Listener).
Comprobaciones de estado
La definición de comprobación de estado incluye una URL que se utiliza para las consultas del estado de
las instancias. De forma predeterminada, Elastic Beanstalk usa contenedores no heredados en TCP:80
y contenedores heredados en HTTP:80. Puede invalidar la URL predeterminada para que coincida
con un recurso existente en la aplicación (por ejemplo, /myapp/default.aspx) utilizando el cuadro
Application Health Check URL (URL de comprobación de estado de la aplicación). Si invalida la URL
predeterminada, Elastic Beanstalk utilizará HTTP para consultar el recurso. Para comprobar si está usando
un tipo de contenedor heredado, consulte ¿Por qué algunos tipos de contenedores están marcados como
heredados? (p. 159).
La definición de comprobación de estado incluye una URL que se utiliza para las consultas del estado
de las instancias. Invalide la URL predeterminada para que coincida con un recurso existente en la
aplicación (por ejemplo, /myapp/index.jsp) utilizando el cuadro Application Health Check URL (URL de
comprobación de estado de aplicación).
En la siguiente lista se describen los parámetros de comprobación de estado que puede definir para la
aplicación.
Sessions
De forma predeterminada, un balanceador de carga direcciona cada solicitud por separado a la instancia
de servidor con menor carga. Por su parte, una sesión sticky vincula la sesión de un usuario con una
806
AWS Elastic Beanstalk Developer Guide
Administración de entornos
instancia de servidor específica para que todas las solicitudes que provengan de ese usuario durante la
sesión se envíen a la misma instancia de servidor.
Elastic Beanstalk utiliza cookies HTTP generadas por el balanceador de carga cuando las sesiones sticky
están habilitadas en una aplicación. El balanceador de carga utiliza una cookie especial generada por el
balanceador de carga para hacer un seguimiento de la instancia de aplicación de cada solicitud. Cuando el
balanceador de carga recibe una solicitud, primero comprueba si esta cookie está presente en la solicitud.
Si lo está, la solicitud se envía a la instancia de aplicación especificada en la cookie. Si no hay ninguna
cookie, el balanceador de carga elige una instancia de aplicación en función del algoritmo de balanceo de
carga existente. Para vincular las solicitudes posteriores del mismo usuario a esa instancia de aplicación,
se inserta una cookie en la respuesta. La configuración de la política define el vencimiento de la cookie,
que establece el periodo de validez de cada cookie.
Puede usar la sección Sessions (Sesiones) de la pestaña Load Balancer (Balanceador de carga) para
especificar si el balanceador de carga de la aplicación permite o no sesiones sticky.
Para obtener más información sobre Elastic Load Balancing, consulte la Guía para desarrolladores de
Elastic Load Balancing.
Amazon EC2 Auto Scaling le permite tomar un grupo de instancias de Amazon EC2 y definir diversos
parámetros para hacer que el número de instancias aumente o se reduzca automáticamente. Amazon
EC2 Auto Scaling puede agregar o quitar instancias de Amazon EC2 de ese grupo, lo que le ayudará a
administrar eficazmente los cambios de tráfico de la aplicación.
Amazon EC2 Auto Scaling también monitoriza el estado de cada instancia de Amazon EC2 que lanza.
Si una instancia termina de forma inesperada, Amazon EC2 Auto Scaling lo detecta y lanza una
instancia de sustitución. Esta función le permite mantener un número fijo de instancias de Amazon EC2
automáticamente.
Elastic Beanstalk aprovisiona Amazon EC2 Auto Scaling para la aplicación. Puede editar la configuración
de las instancias de Amazon EC2 del entorno de Elastic Beanstalk con la pestaña Auto Scaling incluida en
la pestaña del entorno de la aplicación en AWS Toolkit for Visual Studio.
807
AWS Elastic Beanstalk Developer Guide
Administración de entornos
En las secciones siguientes se explica cómo se configuran los parámetros de Auto Scaling para la
aplicación.
Lanzar la configuración
Puede editar la configuración de lanzamiento para controlar la forma en que la aplicación de Elastic
Beanstalk aprovisiona los recursos de Amazon EC2 Auto Scaling.
Los cuadros Minimum Instance Count (Número mínimo de instancias) y Maximum Instance Count (Número
máximo de instancias) le permiten especificar el tamaño mínimo y máximo del grupo de Auto Scaling
utilizado por la aplicación de Elastic Beanstalk.
Note
Para mantener un número fijo de instancias de Amazon EC2, establezca los cuadros Minimum
Instance Count (Número mínimo de instancias) y Maximum Instance Count (Número máximo de
instancias) en el mismo valor.
808
AWS Elastic Beanstalk Developer Guide
Administración de entornos
Note
Desencadenadores
Un disparador es un mecanismo de Amazon EC2 Auto Scaling que se define para indicar al sistema
cuándo debe aumentar (escalado ascendente) y reducir (escalado descendente) el número de instancias.
Puede configurar disparadores para que se activen de acuerdo con el valor de cualquiera de las métricas
publicadas en Amazon CloudWatch, como el uso de la CPU, y determinar si se cumplen las condiciones
especificadas. Cuando se supera el umbral superior o inferior de las condiciones que ha especificado para
la métrica durante el periodo de tiempo especificado, el disparador lanza un proceso de larga ejecución
llamado actividad de escalado.
Puede definir un disparador de escalado para la aplicación de Elastic Beanstalk utilizando AWS Toolkit for
Visual Studio.
Los disparadores de Amazon EC2 Auto Scaling controlan el valor de una métrica de Amazon CloudWatch
específica para una instancia. Se incluyen disparadores para el uso de la CPU, el tráfico de red y la
actividad del disco. Use la opción Trigger Measurement (Medición de desencadenador) para seleccionar
una métrica para el desencadenador.
En la siguiente lista se describen los parámetros de disparador que puede configurar mediante la consola
de administración de AWS.
• Puede especificar qué estadística debe usar el disparador. Puede seleccionar Minimum (Mínimo),
Maximum (Máximo), Sum o Average (Media) para Trigger Statistic (Estadística de desencadenador).
• En Unit of Measurement (Unidad de medición), especifique la unidad de medida del disparador.
• El valor del cuadro Measurement period (Periodo de medición): especifica con qué frecuencia mide
Amazon CloudWatch las métricas del disparador. El valor de Breach Duration es la cantidad de tiempo
que una métrica puede sobrepasar el límite definido (según lo especificado en Upper Threshold y Lower
Threshold) antes de que se active el disparador.
• En Upper breach scale increment (Incremento de escalado de infracción superior) y Lower breach
scale increment (Incremento de escalado de infracción inferior), especifique el número de instancias de
Amazon EC2 que se van a agregar o quitar al efectuar una actividad de escalado.
Para obtener más información sobre Amazon EC2 Auto Scaling, consulte la sección Amazon EC2 Auto
Scaling en la Documentación de Amazon Elastic Compute Cloud.
809
AWS Elastic Beanstalk Developer Guide
Administración de entornos
solo tiene que introducir su dirección de correo electrónico en el cuadro Email Address (Dirección de correo
electrónico). Para desactivar estas notificaciones, quite la dirección de correo electrónico del cuadro.
Si lo desea, puede ampliar el número de parámetros. Para obtener información sobre cómo ampliar los
parámetros, consulte Opciones de configuración (p. 321).
1. En AWS Toolkit for Visual Studio, expanda el nodo de Elastic Beanstalk y el nodo de la aplicación.
2. En AWS Explorer, haga doble clic en el entorno de Elastic Beanstalk.
3. En la parte inferior del panel Overview (Información general), haga clic en la pestaña Configuration
(Configuración).
4. En Container (Contenedor), puede configurar las opciones del contenedor.
810
AWS Elastic Beanstalk Developer Guide
Administrar cuentas
Application Settings
La sección Application Settings (Configuración de aplicación) le permite especificar variables de entorno
que se pueden leer desde el código de la aplicación.
Administrar cuentas
Si desea configurar diferentes cuentas de AWS para realizar diversas tareas, como pruebas, ensayo y
producción, puede agregar, editar y eliminar cuentas con AWS Toolkit for Visual Studio.
811
AWS Elastic Beanstalk Developer Guide
Debug
1. En Visual Studio, en AWS Explorer, expanda el nodo Amazon EC2 y haga doble clic en Instances
(Instancias).
2. En la columna Instance, haga clic con el botón derecho en el ID de la instancia Amazon EC2 que está
en ejecución en el balanceador de carga de la aplicación y seleccione Abrir Escritorio remoto en el
menú contextual.
812
AWS Elastic Beanstalk Developer Guide
Monitorización
3. Seleccione Use EC2 keypair to log on (Usar par de claves de EC2 para iniciar sesión) y pegue el
contenido del archivo de clave privada que utilizó para implementar la aplicación en el cuadro Clave
privada. Si lo desea, también puede escribir el nombre de usuario y la contraseña en los cuadros de
texto Nombre de usuario y Contraseña.
Note
Si el par de claves está guardado dentro del conjunto de herramientas, el cuadro de texto no
aparecerá.
4. Haga clic en OK (Aceptar).
Para obtener más información sobre las características de monitorización de estado de Elastic Beanstalk,
consulte Informes de estado básicos (p. 413).
813
AWS Elastic Beanstalk Developer Guide
Monitorización
Para obtener acceso a la información sobre el funcionamiento de la aplicación, puede utilizar AWS Toolkit
for Visual Studio o la consola de administración de AWS.
1. En AWS Toolkit for Visual Studio, en AWS Explorer, expanda el nodo de Elastic Beanstalk y, a
continuación, el nodo de la aplicación.
2. Haga clic con el botón derecho en el entorno de Elastic Beanstalk y seleccione View Status (Ver
estado).
3. En la pestaña del entorno de la aplicación, haga clic en Monitoring (Monitorización).
El panel Monitoring (Monitorización) contiene un conjunto de gráficos donde se muestra el uso que
hace de los recursos un entorno de aplicación concreto.
Note
Puede utilizar AWS Toolkit for Visual Studio o la consola de administración de AWS para ver los eventos
asociados con la aplicación.
1. En AWS Toolkit for Visual Studio, en AWS Explorer, expanda el nodo de Elastic Beanstalk y el nodo
de la aplicación.
2. En AWS Explorer, haga clic con el botón derecho en el entorno de Elastic Beanstalk y seleccione View
Status (Ver estado).
3. En la pestaña del entorno de la aplicación, haga clic en Events (Eventos).
814
AWS Elastic Beanstalk Developer Guide
Herramienta de implementación
La herramienta de implementación no aplica valores recomendados (p. 254) para las opciones
de configuración, como la consola o la CLI de EB. Utilice archivos de configuración (p. 320) para
asegurarse de que, al lanzar el entorno, se configuran todas las opciones necesarias.
En este capítulo, se explica paso a paso la implementación de una aplicación .NET de ejemplo en Elastic
Beanstalk con la herramienta de implementación. A continuación, se explica una nueva implementación
de la aplicación a través de una implementación incremental. Para ver un análisis más exhaustivo sobre la
herramienta de implementación, incluidas las opciones de parámetros, consulte Deployment Tool.
Requisitos previos
Para utilizar la herramienta de implementación, debe instalar AWS Toolkit for Visual Studio. Si necesita
más información sobre los requisitos y las instrucciones de instalación, consulte AWS Toolkit for Microsoft
Visual Studio.
32 bits 64 bits
815
AWS Elastic Beanstalk Developer Guide
Recursos
### AWS Access Key and Secret Key used to create and deploy the application instance
AWSAccessKey = AKIAIOSFODNN7EXAMPLE
AWSSecretKey = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Note
For API access, you need an access key ID and secret access key. Use IAM user access
keys instead of Usuario de la cuenta raíz de AWS access keys. For more information about
creating access keys, see Managing Access Keys for IAM Users in the Guía del usuario de
IAM.
2. En la línea de comando, escriba lo siguiente:
[Error]: Deployment to AWS Elastic Beanstalk failed with exception: DNS name
(MyAppEnv.elasticbeanstalk.com) is not available.
Recursos
Existen varios lugares a los que puede acudir para obtener ayuda adicional con el desarrollo de las
aplicaciones .NET:
816
AWS Elastic Beanstalk Developer Guide
Recursos
Recurso Descripción
Centro para desarrolladores de .NET Un único lugar para obtener código de ejemplo,
documentación, herramientas y recursos adicionales.
Documentación de AWS SDK para .NET Obtenga información sobre la configuración del SDK, la
ejecución de ejemplos de código y las características del
SDK, así como información detallada sobre las operaciones
de la API del SDK.
817
AWS Elastic Beanstalk Developer Guide
Introducción
Implementación de aplicaciones
Node.js en AWS Elastic Beanstalk
Temas
• Introducción a Node.js en Elastic Beanstalk (p. 818)
• Configuración del entorno de desarrollo de Node.js (p. 821)
• Uso de la plataforma Node.js de AWS Elastic Beanstalk (p. 823)
• Implementación de una aplicación de Express en Elastic Beanstalk (p. 828)
• Implementación de una aplicación de Express con agrupación en clústeres en Elastic
Beanstalk (p. 832)
• Implementación de una aplicación Node.js con DynamoDB en Elastic Beanstalk (p. 841)
• Agregar una instancia de base de datos de Amazon RDS a un entorno de aplicaciones
Node.js (p. 850)
• Recursos (p. 852)
Elastic Beanstalk para Node.js facilita la implementación, administración y escalado de sus aplicaciones
web Node.js que utilizan Amazon Web Services. Elastic Beanstalk para Node.js está disponible para
todo aquel que desee desarrollar o alojar una aplicación web con Node.js. Este capítulo proporciona
instrucciones paso a paso para implementar su aplicación web Node.js en Elastic Beanstalk mediante la
consola de administración de Elastic Beanstalk y ofrece instrucciones paso a paso para tareas comunes
como la integración de la base de datos y el uso del marco de Express.
Después de implementar la aplicación de Elastic Beanstalk, puede continuar utilizando la CLI de EB para
administrar la aplicación y el entorno, o bien puede usar la Consola de Elastic Beanstalk, la CLI de AWS o
las API.
Note
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
818
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación de Node.js de ejemplo
Muestras
Web Server con eb-node- Sitio web Express que recopila información de contacto
DynamoDB, express- de los usuarios para la campaña de marketing de una
Amazon SNS y sample- empresa. Usa el AWS SDK for JavaScript in Node.js para
Amazon SQS v1.0.zip escribir entradas en una tabla de DynamoDB y archivos de
configuración de Elastic Beanstalk para crear recursos en
Clonar el DynamoDB, Amazon SNS y Amazon SQS.
repositorio
en Tutorial (p. 841)
GitHub.com
819
AWS Elastic Beanstalk Developer Guide
Lanzar un entorno con una aplicación de Node.js de ejemplo
4. Elija la capa del entorno (p. 15) Web server environment (Entorno de servidor web) o Worker
environment (Entorno de trabajo). Una vez creado, no se puede cambiar la capa del entorno.
Note
La plataforma .NET en Windows Server (p. 758) no admite la capa del entorno de trabajo.
5. Elija un valor en Platform (Plataforma) que se corresponda con el lenguaje utilizado en la aplicación.
Note
Elastic Beanstalk admite varias versiones (p. 32) para la mayoría de las plataformas que
se indican. De forma predeterminada, la consola selecciona la última versión del lenguaje,
el contenedor web o el marco compatible con Elastic Beanstalk (p. 32). Si su aplicación
necesita una versión anterior, elija Configure more options (Configurar más opciones), como
se describe en el paso 7.
6. En App code (Código de aplicación), seleccione Sample application (Aplicación de muestra).
7. Para personalizar aún más el entorno, elija Configure more options (Configurar más opciones). Solo
puede establecer las siguientes opciones durante la creación del entorno:
• Environment name
• Nombre de dominio
• Versión de la plataforma (configuración)
• VPC
• datos y búsqueda
Puede modificar los siguientes ajustes después de crear el entorno, pero requieren que se
aprovisionen nuevas instancias u otros recursos, lo que puede llevar algún tiempo:
• Tipo de instancia, volumen raíz, par de claves y rol de AWS Identity and Access Management (IAM)
• Base de datos interna de Amazon RDS
• Balanceador de carga
Para obtener más información sobre los ajustes disponibles, consulte El asistente de creación de
nuevo entorno (p. 90).
8. Seleccione Create environment (Crear entorno).
820
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Una vez que disponga de un entorno que ejecute una aplicación, podrá implementar una nueva versión de
la aplicación o una aplicación totalmente diferente en cualquier momento. La implementación de una nueva
versión de la aplicación es una tarea muy rápida, ya que no se requiere aprovisionar ni reiniciar instancias
EC2.
Después de haber implementado una o dos aplicaciones de ejemplo y una vez que esté preparado para
empezar a desarrollar y ejecutar aplicaciones Node.js localmente, consulte la siguiente sección (p. 821)
para configurar un entorno de desarrollo de Node.js con todas las herramientas que va a necesitar.
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Temas
• Instalación de Node.js (p. 821)
• Instalación de npm (p. 821)
• Instalación de AWS SDK para Node.js (p. 822)
• Instalación de Express (p. 822)
Instalación de Node.js
Instale Node.js para ejecutar aplicaciones Node.js localmente. Si no tiene ninguna preferencia, obtenga
la versión más reciente admitida por Elastic Beanstalk. Consulte Node.js en el documento Plataformas de
AWS Elastic Beanstalk para ver una lista de las versiones que se admiten.
Instalación de npm
Node.js usa el administrador de paquetes npm como ayuda para instalar herramientas y plataformas para
usarlos en su aplicación. Descargue npm en npmjs.com.
821
AWS Elastic Beanstalk Developer Guide
Instalación de AWS SDK para Node.js
Visite la página de inicio de AWS SDK para JavaScript en Node.js para obtener más información.
Instalación de Express
Express es una plataforma de aplicaciones web que se ejecuta en Node.js. Para usarla, configure Express
y cree la estructura del proyecto. A continuación, se explica paso a paso el proceso de configuración de
Express en un sistema operativo Linux.
Note
En función de su nivel de permiso para los directorios del sistema, es posible que tenga que
escribir delante de algunos de estos comandos sudo.
~$ mkdir node-express
~$ cd node-express
3. En función del sistema operativo, es posible que tenga que definir la ruta para ejecutar el comando
express. Si necesita definir la ruta, utilice la salida del paso anterior, cuando instaló Express. A
continuación se muestra un ejemplo.
~/node-express$ express
822
AWS Elastic Beanstalk Developer Guide
La plataforma Node.js
El servidor se ejecuta en el puerto 3000 de forma predeterminada. Para probarlo, ejecute curl
http://localhost:3000 en otro terminal o abra un navegador en el equipo local y vaya a
http://localhost:3000.
Elastic Beanstalk proporciona opciones de configuración (p. 252) que se pueden usar para personalizar el
software que se ejecuta en las instancias EC2 del entorno de Elastic Beanstalk. Puede elegir qué servidor
proxy se ejecuta delante de su aplicación, la versión específica de Node.js que se debe ejecutar y el
comando utilizado para ejecutar la aplicación. También puede configurar las variables de entorno que
necesita la aplicación y habilitar la rotación de logs en Amazon S3.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
Puede incluir un archivo Package.json (p. 825) en su paquete de código fuente para instalar los
paquetes durante la implementación y un archivo npm-shrinkwrap.json (p. 826) para bloquear las
versiones de dependencias.
La plataforma Node.js incluye un servidor proxy para servir recursos estáticos, reenviar el tráfico
a la aplicación y comprimir las respuestas. Puede ampliar o invalidar la configuración del proxy
predeterminada (p. 826) para escenarios avanzados.
823
AWS Elastic Beanstalk Developer Guide
Configuración del entorno Node.js
Opciones de contenedor
En la página de configuración, especifique lo siguiente:
• Proxy Server: especifica el servidor web que se usa para enviar las conexiones a Node.js. De forma
predeterminada, se utiliza nginx. Si selecciona none, las asignaciones de archivos estáticos no se
aplican y la compresión gzip se deshabilita.
• Node Version: especifica la versión de Node.js. Para obtener información sobre qué versiones se
admiten, consulte Plataformas compatibles con AWS Elastic Beanstalk (p. 32).
Note
Log Options
La sección Log Options tiene dos valores:
• Instance profile: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de
Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3: especifica si los archivos de registro de las instancias Amazon
EC2 de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Static Files
Para mejorar el desempeño, puede configurar el servidor proxy para servir archivos estáticos de servidor
(por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en su aplicación web. Cuando
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente
el archivo en lugar de direccionar la solicitud la aplicación. Puede definir la ruta virtual y los mapeos de
directorio en la sección Static Files (Archivos estáticos) de la página de configuración Modify software
(Modificar software).
Para obtener más información sobre la configuración de archivos estáticos con la Consola de Elastic
Beanstalk, consulte Distribución de archivos estáticos (p. 372).
Environment Properties
La sección Environment Properties le permite especificar opciones de configuración del entorno en las
instancias Amazon EC2 que ejecutan su aplicación. Estos ajustes se pasan como pares clave-valor a la
aplicación.
824
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Node.js
Dentro del entorno Node.js que se ejecuta en AWS Elastic Beanstalk, puede tener acceso a las variables
de entorno mediante process.env.ENV_VARIABLE, de forma similar a como se muestra en el siguiente
ejemplo.
La plataforma Node.js establece la variable de entorno PORT en el puerto al que el servidor proxy pasa el
tráfico. Consulte Configuración del servidor proxy (p. 826).
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
El siguiente archivo de configuración indica a Elastic Beanstalk que use npm start para ejecutar la
aplicación, establece el tipo de proxy en Apache, habilita la compresión y configura el proxy para servir
imágenes estáticas desde el directorio myimages en la ruta /images.
Example .ebextensions/node-settings.config
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
ProxyServer: apache
GzipCompression: true
aws:elasticbeanstalk:container:nodejs:staticfiles:
/html: statichtml
/images: staticimages
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
{
"name": "my-app",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "latest",
"aws-sdk": "latest",
"express": "latest",
"body-parser": "latest"
},
825
AWS Elastic Beanstalk Developer Guide
Archivo de NPM Shrinkwrap
"scripts": {
"start": "node app.js"
}
}
Cuando hay un archivo package.json presente, Elastic Beanstalk ejecuta npm install para instalar
las dependencias.
De forma predeterminada, Elastic Beanstalk instala dependencias en modo de producción (npm install
--production). Si desea instalar instancias dependencias de desarrollo en sus instancias de entorno,
establezca la propiedad de entorno (p. 237) NPM_USE_PRODUCTION en false.
Puede evitar que se actualicen las dependencias creando un archivo npm-shrinkwrap.json que
bloquee las dependencias de la aplicación en la versión actual.
$ npm install
$ npm shrinkwrap
wrote npm-shrinkwrap.json
Incluya este archivo en su paquete de código fuente para asegurarse de que las dependencias solo se
instalan una vez.
La plataforma Node.js establece la variable de entorno PORT en el puerto al que el servidor proxy pasa el
tráfico. Lea esta variable en el código para configurar el puerto de la aplicación.
Example .ebextensions/proxy.config
El siguiente ejemplo elimina la configuración predeterminada y añade una configuración personalizada que
reenvía el tráfico al puerto 5000 en lugar de al puerto 8081.
files:
/etc/nginx/conf.d/proxy.conf:
mode: "000644"
826
AWS Elastic Beanstalk Developer Guide
Configuración del servidor proxy
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:5000;
keepalive 256;
}
server {
listen 8080;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
access_log /var/log/nginx/access.log main;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
gzip on;
gzip_comp_level 4;
gzip_types text/html text/plain text/css application/json application/x-javascript
text/xml application/xml application/xml+rss text/javascript;
location /static {
alias /var/app/current/static;
}
/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash -xe
rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
service nginx stop
service nginx start
container_commands:
removeconfig:
command: "rm -f /tmp/deployment/config/
#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/
conf.d/00_elastic_beanstalk_proxy.conf"
827
AWS Elastic Beanstalk Developer Guide
Tutorial: Express
Note
Si invalida la configuración predeterminada, debe definir todas las asignaciones de archivos estáticos y la
compresión gzip, ya que la plataforma no podrá aplicar la configuración estándar (p. 825).
Requisitos previos
En este tutorial se requiere el lenguaje de Node.js, su administrador de paquetes llamado npm y el marco
de la aplicación web de Express. Para obtener más detalles acerca de la instalación de estos componentes
y la configuración de su entorno de desarrollo local, consulte Configuración del entorno de desarrollo de
Node.js (p. 821).
Note
En este tutorial, no es necesario que instale el SDK de AWS para Node.js, que también se
menciona en Configuración del entorno de desarrollo de Node.js (p. 821).
En el tutorial también se requiere la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB). Para
obtener detalles sobre la instalación y configuración de la CLI de EB, consulte Instalación de la CLI de EB
con scripts de configuración (p. 579) y Configuración de la CLI de EB (p. 586).
Inicialización de Git
La configuración de Express y Node.js del requisito previo da lugar a una estructura de proyectos de
Express en la carpeta node-express. Si aún no ha generado un proyecto de Express, ejecute el
siguiente comando. Para obtener más información, consulte Instalación de Express (p. 822).
1. Inicialice el repositorio de Git. Si no tiene instalado Git, descárguelo del sitio de descargas de Git.
2. Cree un archivo llamado .gitignore y agréguele los siguientes archivos y directorios. Estos
archivos no se incluirán en el repositorio. Este paso no es obligatorio pero sí recomendable.
828
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
node-express/.gitignore
node_modules/
.gitignore
.elasticbeanstalk/
Este comando crea un entorno con balanceo de carga utilizando la configuración predeterminada de la
plataforma de Node.js y los siguientes recursos:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
829
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
• Pila de AWS CloudFormation: Elastic Beanstalk utiliza AWS CloudFormation para lanzar los
recursos del entorno y propagar los cambios de configuración. Los recursos se definen en una
plantilla que puede verse en la consola de AWS CloudFormation.
• Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato
subdominio.region.elasticbeanstalk.com.
3. Cuando se complete la creación del entorno, utilice el comando eb open para abrir la URL del entorno
en el navegador predeterminado.
~/node-express$ eb open
Actualizar la aplicación
Una vez que haya creado el entorno con una aplicación de ejemplo, puede actualizarlo con su propia
aplicación. En este paso, actualizamos la aplicación de ejemplo para que use la plataforma Express.
1. En su equipo local, cree un directorio .ebextensions en el directorio de nivel superior del paquete
de código fuente. En este ejemplo, usaremos node-express/.ebextensions.
2. Agregue un archivo de configuración que establezca Node Command en "npm start":
node-express/.ebextensions/nodecommand.config
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
Para obtener más información, consulte Personalización avanzada de entornos con archivos de
configuración (.ebextensions) (p. 320).
3. Almacene temporalmente los archivos:
~/node-express$ eb deploy
5. Una vez que el entorno esté listo, actualice la dirección URL para verificar que ha funcionado. Debería
aparecer una página web que diga Welcome to Express.
A continuación, vamos a actualizar la aplicación de Express para atender archivos estáticos y agregar una
nueva página.
Para configurar archivos estáticos y agregar una nueva página a la aplicación de Express
node-express/.ebextensions/staticfiles.config
option_settings:
aws:elasticbeanstalk:container:nodejs:staticfiles:
/public: /public
830
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
Esta opción configura el servidor proxy que proporcione los archivos en la carpeta public de la ruta
/public de la aplicación. Si los archivos se sirven de forma estática (p. 825) desde el proxy, se
reduce la carga en la aplicación.
2. Comente el mapeo estático en node-express/app.js. Esto no es obligatorio, pero es una buena
prueba para confirmar que los mapeos estáticos están configurados correctamente.
// app.use(express.static(path.join(__dirname, 'public')));
En primer lugar, inserte la siguiente línea para agregar un objeto require para esta ruta:
hike = require('./routes/hike');
A continuación, agregue las dos líneas siguientes a node-express/app.js detrás de var app =
express();.
app.get('/hikes', hike.index);
app.post('/add_hike', hike.add_hike);
7. Añada sus archivos al repositorio local, confirme los cambios e implemente la aplicación actualizada.
831
AWS Elastic Beanstalk Developer Guide
Eliminación
8. Su entorno se actualizará al cabo de unos minutos. Cuando el entorno esté listo, asegúrese de que
funciona actualizando el navegador y agregando hikes al final de la URL (por ejemplo, http://
node-express-env-syypntcz2q.elasticbeanstalk.com/hikes).
Eliminación
Si ya no necesita utilizar Elastic Beanstalk, puede terminar el entorno.
Utilice el comando eb terminate para terminar el entorno y todos los recursos que contiene.
~/node-express$ eb terminate
The environment "node-express-env" and all associated instances will be terminated.
To confirm, type the environment name: node-express-env
INFO: terminateEnvironment is starting.
...
En este ejemplo se crean recursos de AWS por los que se pueden realizar cargos. Para
obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/.
Algunos servicios forman parte de la capa de uso gratuito de AWS. Si es un cliente nuevo,
puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://
aws.amazon.com/free/.
Requisitos previos
En este tutorial se requiere el lenguaje de Node.js, su administrador de paquetes llamado npm y el marco
de la aplicación web de Express. Para obtener más detalles acerca de la instalación de estos componentes
y la configuración de su entorno de desarrollo local, consulte Configuración del entorno de desarrollo de
Node.js (p. 821).
Note
En este tutorial, no es necesario que instale el SDK de AWS para Node.js, que también se
menciona en Configuración del entorno de desarrollo de Node.js (p. 821).
En el tutorial también se requiere la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB). Para
obtener detalles sobre la instalación y configuración de la CLI de EB, consulte Instalación de la CLI de EB
con scripts de configuración (p. 579) y Configuración de la CLI de EB (p. 586).
832
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
Este comando crea un entorno con balanceo de carga utilizando la configuración predeterminada de la
plataforma de Node.js y los siguientes recursos:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
~/node-express$ eb open
Actualizar la aplicación
Actualice la aplicación de ejemplo en el entorno de Elastic Beanstalk para que utilice el marco de Express.
Note
La configuración del entorno de desarrollo del requisito previo da lugar a una estructura de
proyectos de Express en la carpeta node-express. Si aún no ha generado un proyecto de
Express, ejecute el siguiente comando. Para obtener más información, consulte Instalación de
Express (p. 822).
function spawn(){
var worker = cluster.fork();
workers[worker.pid] = worker;
return worker;
}
if (cluster.isMaster) {
for (var i = 0; i < count; i++) {
spawn();
}
cluster.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died. spawning a new process...');
delete workers[worker.pid];
spawn();
});
} else {
app.listen(process.env.PORT || 5000);
}
node-express$ eb deploy
834
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
5. Su entorno se actualizará al cabo de unos minutos. Una vez que el entorno esté listo, actualice la
dirección URL para verificar que ha funcionado. Debería aparecer una página web que diga “Welcome
to Express”.
Puede obtener acceso a los logs de las instancias EC2 que ejecutan la aplicación. Para obtener
instrucciones acerca del acceso a los logs, consulte Consulta de los registros desde las instancias de
Amazon EC2 en su entorno de Elastic Beanstalk (p. 457).
A continuación, vamos a actualizar la aplicación de Express para que utilice Amazon ElastiCache.
1. En su equipo local, cree un directorio .ebextensions en el directorio de nivel superior del paquete
de código fuente. En este ejemplo, usaremos node-express/.ebextensions.
2. Cree un archivo de configuración node-express/.ebextensions/elasticache-iam-with-
script.config con el siguiente fragmento. Para obtener más información sobre el archivo de
configuración, consulte Espacios de nombres de configuración de Node.js (p. 825). Se crea
un usuario de IAM con los permisos necesarios para descubrir los nodos de elasticache y se
escribe en un archivo siempre que cambia la caché. También puede copiar el archivo de http://
elasticbeanstalk-samples-us-east-2.s3.amazonaws.com/nodejs-example-express-elasticache.zip. Para
obtener más información sobre las propiedades de ElastiCache consulte Fragmentos de ejemplo:
ElastiCache (p. 349).
Note
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el
contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto
utiliza espacios para la sangría, no tabuladores.
Resources:
MyCacheSecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: "Lock cache down to webserver access only"
SecurityGroupIngress:
- IpProtocol: tcp
FromPort:
Fn::GetOptionSetting:
OptionName: CachePort
DefaultValue: 11211
ToPort:
Fn::GetOptionSetting:
OptionName: CachePort
DefaultValue: 11211
SourceSecurityGroupName:
Ref: AWSEBSecurityGroup
MyElastiCache:
Type: 'AWS::ElastiCache::CacheCluster'
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName: CacheNodeType
DefaultValue: cache.t2.micro
NumCacheNodes:
Fn::GetOptionSetting:
OptionName: NumCacheNodes
DefaultValue: 1
Engine:
Fn::GetOptionSetting:
OptionName: Engine
DefaultValue: redis
835
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
VpcSecurityGroupIds:
-
Fn::GetAtt:
- MyCacheSecurityGroup
- GroupId
AWSEBAutoScalingGroup :
Metadata :
ElastiCacheConfig :
CacheName :
Ref : MyElastiCache
CacheSize :
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
WebServerUser :
Type : AWS::IAM::User
Properties :
Path : "/"
Policies:
-
PolicyName: root
PolicyDocument :
Statement :
-
Effect : Allow
Action :
- cloudformation:DescribeStackResource
- cloudformation:ListStackResources
- elasticache:DescribeCacheClusters
Resource : "*"
WebServerKeys :
Type : AWS::IAM::AccessKey
Properties :
UserName :
Ref: WebServerUser
Outputs:
WebsiteURL:
Description: sample output only here to show inline string function parsing
Value: |
http://`{ "Fn::GetAtt" : [ "AWSEBLoadBalancer", "DNSName" ] }`
MyElastiCacheName:
Description: Name of the elasticache
Value:
Ref : MyElastiCache
NumCacheNodes:
Description: Number of cache nodes in MyElastiCache
Value:
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
files:
"/etc/cfn/cfn-credentials" :
content : |
AWSAccessKeyId=`{ "Ref" : "WebServerKeys" }`
AWSSecretKey=`{ "Fn::GetAtt" : ["WebServerKeys", "SecretAccessKey"] }`
mode : "000400"
owner : root
group : root
"/etc/cfn/get-cache-nodes" :
content : |
# Define environment variables for command line tools
export AWS_ELASTICACHE_HOME="/home/ec2-user/elasticache/$(ls /home/ec2-user/
elasticache/)"
836
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
export AWS_CLOUDFORMATION_HOME=/opt/aws/apitools/cfn
export PATH=$AWS_CLOUDFORMATION_HOME/bin:$AWS_ELASTICACHE_HOME/bin:$PATH
export AWS_CREDENTIAL_FILE=/etc/cfn/cfn-credentials
export JAVA_HOME=/usr/lib/jvm/jre
# Grab the Cache node names and configure the PHP page
aws cloudformation list-stack-resources --stack `{ "Ref" : "AWS::StackName" }`
--region `{ "Ref" : "AWS::Region" }` --output text | grep MyElastiCache | awk '{print
$4}' | xargs -I {} aws elasticache describe-cache-clusters --cache-cluster-id {}
--region `{ "Ref" : "AWS::Region" }` --show-cache-node-info --output text | grep
'^ENDPOINT' | awk '{print $2 ":" $3}' > `{ "Fn::GetOptionSetting" : { "OptionName" :
"NodeListPath", "DefaultValue" : "/var/www/html/nodelist" } }`
mode : "000500"
owner : root
group : root
"/etc/cfn/hooks.d/cfn-cache-change.conf" :
"content": |
[cfn-cache-size-change]
triggers=post.update
path=Resources.AWSEBAutoScalingGroup.Metadata.ElastiCacheConfig
action=/etc/cfn/get-cache-nodes
runas=root
sources :
"/home/ec2-user/elasticache" : "https://s3.amazonaws.com/elasticache-downloads/
AmazonElastiCacheCli-latest.zip"
commands:
make-elasticache-executable:
command: chmod -R ugo+x /home/ec2-user/elasticache/*/bin/*
packages :
"yum" :
"aws-apitools-cfn" : []
container_commands:
initial_cache_nodes:
command: /etc/cfn/get-cache-nodes
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType: cache.t2.micro
NumCacheNodes: 1
Engine: memcached
NodeListPath: /var/nodelist
/**
* Module dependencies.
*/
837
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
fs = require('fs'),
filename = '/var/nodelist',
app = module.exports = express();
function setup(cacheNodes) {
app.use(bodyParser.raw());
app.use(methodOverride());
if (cacheNodes) {
app.use(cookieParser());
app.use(session({
secret: 'your secret here',
resave: false,
saveUninitialized: false,
store: new MemcachedStore({'hosts': cacheNodes})
}));
} else {
console.log('Not using memcached store.');
app.use(cookieParser('your secret here'));
app.use(session());
}
if (!module.parent) {
console.log('Running express without cluster.');
app.listen(process.env.PORT || 5000);
}
}
{
"name": "node-express",
838
AWS Elastic Beanstalk Developer Guide
Actualizar la aplicación
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "*",
"debug": "~2.6.9",
"express": "~4.16.0",
"http-errors": "~1.6.2",
"jade": "~1.11.0",
"morgan": "~1.9.0",
"connect-memcached": "*",
"express-session": "*",
"body-parser": "*",
"method-override": "*"
}
}
node-express$ eb deploy
7. Su entorno se actualizará al cabo de unos minutos. Una vez que su entorno esté listo, verifique que el
código ha funcionado.
a. Consulte la consola de Amazon CloudWatch para ver las métricas de ElastiCache. Para ver las
métricas de ElastiCache, seleccione Metrics (Métricas) en el panel izquierdo y, a continuación,
busque CurrItems. Seleccione ElastiCache > Cache Node Metrics (Métricas del nodo de caché) y,
a continuación, seleccione el nodo de caché para ver el número de elementos en la caché.
839
AWS Elastic Beanstalk Developer Guide
Eliminación
Note
Si copia y pega la URL de la aplicación en otro navegador web y actualiza la página, debería ver
que el recuento CurrItem aumenta después de 5 minutos.
b. Tome una instantánea de los registros.. Para obtener más información acerca de la recuperación
de registros, consulte Consulta de los registros desde las instancias de Amazon EC2 en su
entorno de Elastic Beanstalk (p. 457).
c. Compruebe el archivo /var/log/nodejs/nodejs.log en el paquete del registro. Debería ver
algo similar a lo siguiente:
Eliminación
Si ya no desea ejecutar la aplicación, puede limpiar los recursos terminando el entorno y eliminando la
aplicación.
840
AWS Elastic Beanstalk Developer Guide
Tutorial: Node.js con DynamoDB
Utilice el comando eb terminate para finalizar el entorno y el comando eb delete para eliminar la
aplicación.
$ eb terminate
Este proceso puede tardar unos minutos. Elastic Beanstalk muestra un mensaje cuando el entorno termina
correctamente.
La aplicación de ejemplo de este tutorial usa una tabla de DynamoDB para guardar los datos de texto
proporcionados por el usuario. La aplicación de ejemplo utiliza archivos de configuración (p. 320) para
crear la tabla y un tema de Amazon Simple Notification Service. También se muestra cómo utilizar un
archivo package.json (p. 825) para instalar paquetes durante la implementación.
Secciones
• Requisitos previos (p. 841)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 842)
• Añadir permisos a las instancias del entorno (p. 843)
• Implementación de la aplicación de ejemplo (p. 844)
• Creación de una tabla de DynamoDB (p. 846)
• Actualización de los archivos de configuración de la aplicación (p. 846)
• Configuración de su entorno para alta disponibilidad (p. 849)
• Eliminación (p. 849)
• Pasos siguientes (p. 850)
Requisitos previos
• Antes de comenzar, descargue el paquete de código fuente de la aplicación de ejemplo de GitHub: eb-
node-express-sample-v1.1.zip.
• Necesitará también un terminal de línea de comandos o shell para ejecutar los comandos de los
procedimientos. Los comandos de ejemplo van precedidos del símbolo del sistema ($) y del nombre del
directorio actual, si procede:
841
AWS Elastic Beanstalk Developer Guide
Lanzamiento de un entorno de Elastic Beanstalk
this is output
Note
Puede ejecutar todos los comandos de este tutorial en una máquina virtual de Linux y una
máquina de OS X, o en una instancia de Amazon EC2 que ejecute Amazon Linux. Si necesita
un entorno de desarrollo, puede lanzar un entorno de Elastic Beanstalk con una única instancia
y conectarse a él a través de SSH.
• Este tutorial utiliza una herramienta ZIP de línea de comandos para crea un paquete de código fuente
que puede implementar en Elastic Beanstalk. Para utilizar el comando zip en Windows, puede instalar
UnxUtils, una colección ligera de herramientas útiles de línea de comandos como zip y ls. (Otra
opción es usar el Explorador de Windows (p. 66) u otra herramienta ZIP para crear archivos de paquetes
de código fuente).
1. Descargar UnxUtils.
2. Extraiga el archivo en un directorio local. Por ejemplo, C:\Program Files (x86).
3. Agregue la ruta de los binarios en la variable de usuario Windows PATH. Por ejemplo, C:\Program
Files (x86)\UnxUtils\usr\local\wbin.
> zip -h
Copyright (C) 1990-1999 Info-ZIP
Type 'zip "-L"' for software license.
...
5. Revise las opciones disponibles. Cuando esté satisfecho con las opciones, seleccione Create app
(Crear una aplicación).
Elastic Beanstalk tarda unos cinco minutos en crear el entorno con los siguientes recursos:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Elastic Beanstalk administra todos estos recursos. Cuando termina su entorno, Elastic Beanstalk termina
todos los recursos que este contiene.
Note
El bucket de S3 que Elastic Beanstalk crea se comparte entre los entornos y no se elimina
durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
La aplicación de ejemplo utiliza los permisos de la instancia para escribir datos en una tabla de DynamoDB
y para enviar notificaciones a un tema de Amazon SNS con el SDK para JavaScript en Node.js. Añada
843
AWS Elastic Beanstalk Developer Guide
Implementación de la aplicación de ejemplo
las siguientes políticas administradas al perfil de instancia (p. 23) predeterminado para conceder a las
instancias EC2 del entorno permiso para tener acceso a DynamoDB y Amazon SNS:
• AmazonDynamoDBFullAccess
• AmazonSNSFullAccess
Para obtener más información acerca de cómo administrar perfiles de instancia, consulte Administración de
perfiles de instancias de Elastic Beanstalk (p. 486).
El sitio recopila la información de contacto del usuario y utiliza una tabla de DynamoDB para almacenar
los datos. Para agregar una entrada, elija Sign up today (Regístrese hoy mismo), introduzca un nombre y
dirección de correo electrónico y, a continuación, elija Sign Up! (Regístrese) La aplicación web escribe el
contenido del formulario en la tabla y activa una notificación por correo electrónico de Amazon SNS.
844
AWS Elastic Beanstalk Developer Guide
Implementación de la aplicación de ejemplo
De momento, el tema de Amazon SNS está configurado con un marcador de posición para el correo
electrónico de las notificaciones. Actualizará la configuración en breve, pero entretanto puede verificar la
tabla de DynamoDB y el tema de Amazon SNS en la Consola de administración de AWS.
845
AWS Elastic Beanstalk Developer Guide
Creación de una tabla de DynamoDB
La tabla contiene una entrada para cada dirección de correo electrónico enviada en el sitio de inscripción.
Además de escribir en la tabla, la aplicación envía un mensaje a un tema de Amazon SNS que tiene dos
suscripciones: una para las notificaciones por correo electrónico que se le envían a usted y otra para
una cola de Amazon Simple Queue Service que una aplicación de trabajo puede leer para procesar las
solicitudes y enviar mensajes de correo electrónico a los clientes interesados.
La aplicación (app.js) define dos rutas. La ruta raíz (/) devuelve una página web presentada desde una
plantilla de Embedded JavaScript (EJS) con un formulario que el usuario rellena para registrar su nombre
y dirección de correo electrónico. Al enviar el formulario se envía una solicitud POST con los datos del
formulario a la ruta /signup, que escribe una entrada en la tabla de DynamoDB y publica un mensaje en
el tema de Amazon SNS para enviar una notificación al propietario de la inscripción.
La aplicación de ejemplo incluye archivos de configuración (p. 320) que crean la tabla de DynamoDB,
el tema de Amazon SNS y la cola de Amazon SQS usados por la aplicación. Esto le permite crear un
nuevo entorno y probar la funcionalidad de forma inmediata, pero tiene el inconveniente de que la tabla de
DynamoDB está asociada al entorno. Para un entorno de producción, debería crear la tabla de DynamoDB
fuera de su entorno para evitar perderla cuando termine el entorno o actualice su configuración.
846
AWS Elastic Beanstalk Developer Guide
Actualización de los archivos de
configuración de la aplicación
~$ mkdir nodejs-tutorial
~$ cd nodejs-tutorial
~/nodejs-tutorial$ unzip ~/Downloads/eb-node-express-sample-v1.0.zip
Example .ebextensions/options.config
option_settings:
aws:elasticbeanstalk:customoption:
NewSignupEmail: you@example.com
aws:elasticbeanstalk:application:environment:
THEME: "flatly"
AWS_REGION: '`{"Ref" : "AWS::Region"}`'
STARTUP_SIGNUP_TABLE: nodejs-tutorial
NEW_SIGNUP_TOPIC: '`{"Ref" : "NewSignupTopic"}`'
aws:elasticbeanstalk:container:nodejs:
ProxyServer: nginx
aws:elasticbeanstalk:container:nodejs:staticfiles:
/static: /static
aws:autoscaling:asg:
Cooldown: "120"
aws:autoscaling:trigger:
Unit: "Percent"
Period: "1"
BreachDuration: "2"
UpperThreshold: "75"
LowerThreshold: "30"
MeasureName: "CPUUtilization"
Esto configura la aplicación para que utilice la tabla nodejs-tutorial en lugar de la que creó
.ebextensions/create-dynamodb-table.config y define la dirección de correo electrónico
que el tema de Amazon SNS utiliza para las notificaciones.
3. Remove .ebextensions/create-dynamodb-table.config.
~/nodejs-tutorial$ rm .ebextensions/create-dynamodb-table.config
La próxima vez que implemente la aplicación, se eliminará la tabla creada por este archivo de
configuración.
4. Cree un paquete de código fuente desde el código modificado.
847
AWS Elastic Beanstalk Developer Guide
Actualización de los archivos de
configuración de la aplicación
Cuando lo implemente, Elastic Beanstalk actualizará la configuración del tema de Amazon SNS y eliminará
la tabla de DynamoDB que se creó cuando implementó la primera versión de la aplicación.
Ahora, cuando termine el entorno, no se eliminará la tabla nodejs-tutorial. Esto le permite realizar
implementaciones blue/green, modificar los archivos de configuración o retirar su sitio web sin arriesgarse
a perder datos.
Abra su sitio en un navegador y verifique que el formulario funciona según lo previsto. Cree un par de
entradas y, a continuación, consulte la consola de DynamoDB para verificar la tabla.
848
AWS Elastic Beanstalk Developer Guide
Configuración de su entorno para alta disponibilidad
3. Seleccione la tabla, elija Items (Elementos) y, a continuación, elija Start search (Iniciar búsqueda) para
ver todos los elementos de la tabla.
También puede ver que Elastic Beanstalk ha eliminado la tabla que creó anteriormente.
Para configurar el grupo de Auto Scaling del entorno para disponer de alta disponibilidad
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
También puede eliminar las tablas de DynamoDB externas que haya creado.
849
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Mientras siga desarrollando la aplicación, es probable que desee administrar los entornos e implementar
su aplicación sin tener que crear manualmente un archivo.zip y cargarlo en la Consola de Elastic
Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
La aplicación de ejemplo utiliza archivos de configuración para configurar las opciones de software y
crear recursos de AWS como parte de su entorno. Para obtener más información sobre los archivos
de configuración y cómo se utilizan, consulte Personalización avanzada de entornos con archivos de
configuración (.ebextensions) (p. 320).
La aplicación de ejemplo de este tutorial utiliza la plataforma web Express para Node.js. Para obtener más
información sobre Express, consulte la documentación oficial en expressjs.com.
Por último, si pretende utilizar la aplicación en un entorno de producción, configure un nombre de dominio
personalizado (p. 251) para el entorno y habilite HTTPS (p. 374) para las conexiones seguras.
Si es la primera vez que utiliza Amazon RDS, añada una instancia de base de datos (p. 850) a un
entorno de prueba con la consola de administración de Elastic Beanstalk y verifique que su aplicación
puede conectarse a ella.
Para conectarse a una base de datos, añada el controlador (p. 851) a su aplicación, cargue el
controlador en el código y cree un objeto de conexión (p. 852) con las propiedades de entorno
proporcionadas por Elastic Beanstalk. La configuración y el código de conexión varían en función del motor
de base de datos y la plataforma que utilice.
En entornos de producción, cree una instancia de base de datos fuera del entorno de Elastic Beanstalk
para desacoplar los recursos del entorno de los recursos de base de datos. El uso de una instancia
de base de datos permite conectarse a la misma base de datos desde varios entornos y llevar a cabo
implementaciones “blue/green” (azul/verde). Para obtener instrucciones, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Secciones
• Añadir una instancia de base de datos al entorno (p. 850)
• Descargar un controlador (p. 851)
• Conexión a una base de datos (p. 852)
850
AWS Elastic Beanstalk Developer Guide
Descargar un controlador
3. Elija Configuración.
4. En la categoría de configuración Database (Base de datos), elija Modify (Modificar).
5. Seleccione un motor de base de datos y escriba el nombre de usuario y la contraseña.
6. Seleccione Aplicar.
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227).
Descargar un controlador
Añada el controlador de base de datos al archivo package.json del proyecto (p. 825) bajo
dependencies.
{
"name": "my-app",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "latest",
"aws-sdk": "latest",
"express": "latest",
"body-parser": "latest",
"mysql": "latest"
},
"scripts": {
"start": "node app.js"
}
}
• MySQL: mysql
• PostgreSQL: pg
• SQL Server: mssql
851
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos
connection.connect(function(err) {
if (err) {
console.error('Database connection failed: ' + err.stack);
return;
}
console.log('Connected to database.');
});
connection.end();
Para obtener más información sobre cómo crear cadena de conexión a través de node-mysql, consulte
npmjs.org/package/mysql.
Recursos
Existen varios lugares a los que puede acudir para obtener ayuda adicional con el desarrollo de sus
aplicaciones Node.js:
Recurso Descripción
SDK de AWS para Node.js (vista previa Un único lugar para obtener código de ejemplo,
para desarrolladores) documentación, herramientas y recursos adicionales.
852
AWS Elastic Beanstalk Developer Guide
Creación e implementación de
aplicaciones PHP en AWS Elastic
Beanstalk
Elastic Beanstalk para PHP facilita la implementación, administración y escalado de sus aplicaciones web
PHP que utilizan Amazon Web Services. Elastic Beanstalk para PHP está disponible para todo aquel que
desee desarrollar o alojar una aplicación web con PHP. En esta sección se proporcionan instrucciones
para implementar su aplicación web PHP en Elastic Beanstalk. Puede implementar su aplicación en tan
solo unos minutos mediante la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB) o a través
de la consola de administración de Elastic Beanstalk. También se ofrecen instrucciones paso a paso para
plataformas comunes como CakePHP y Symfony.
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Si necesita ayuda para desarrollar aplicaciones en PHP, hay varios lugares a los que puede acudir:
Recurso Descripción
Temas
• Configuración del entorno de desarrollo de PHP (p. 854)
• Uso de la plataforma PHP de AWS Elastic Beanstalk (p. 856)
• Implementación de una aplicación de Laravel en Elastic Beanstalk (p. 860)
• Implementación de una aplicación de CakePHP en Elastic Beanstalk (p. 867)
• Implementación de una aplicación de Symfony en Elastic Beanstalk (p. 873)
• Implementación de una aplicación PHP de alta disponibilidad con una base de datos externa de
Amazon RDS en Elastic Beanstalk (p. 879)
• Implementación de un sitio web de WordPress de alta disponibilidad con una base de datos externa de
Amazon RDS en Elastic Beanstalk (p. 888)
• Implementación de un sitio web de Drupal de alta disponibilidad con una base de datos externa de
Amazon RDS en Elastic Beanstalk (p. 899)
• Agregar una instancia de base de datos de Amazon RDS a un entorno de aplicaciones PHP (p. 911)
853
AWS Elastic Beanstalk Developer Guide
Entorno de desarrollo
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Secciones
• Instalación de PHP (p. 854)
• Instalación de Composer (p. 855)
• Instalación de AWS SDK para PHP (p. 855)
• Instalación de un IDE o un editor de texto (p. 855)
Instalación de PHP
Instale PHP y algunas extensiones comunes. Si no tiene ninguna preferencia, obtenga la versión más
reciente. Los pasos pueden variar en función de la plataforma y el administrador de paquetes disponible.
Note
Para obtener versiones específicas del paquete PHP que coincidan con su versión de la
plataforma PHP de Elastic Beanstalk, utilice el comando yum search php para buscar las
versiones disponibles del paquete, por ejemplo, php72, php72-mbstring y php72-intl. A
continuación, utilice sudo yum install package para instalarlas.
Note
Para obtener versiones específicas del paquete PHP que coincidan con su versión de la
plataforma PHP de Elastic Beanstalk, consulte en Fórmulas de Homebrew las versiones
disponibles de PHP, por ejemplo, php@7.2. A continuación, utilice brew install package
para instalarlas.
En función de la versión, php-intl podría incluirse en el paquete PHP principal y no existir como
paquete independiente.
854
AWS Elastic Beanstalk Developer Guide
Instalación de Composer
En Windows 10, instale Windows Subsystem for Linux para obtener Ubuntu e instalar PHP con apt. En
versiones anteriores, visite la página de descargas windows.php.net para obtener PHP y consulte esta
página para obtener más información sobre las extensiones.
Después de instalar PHP, vuelva a abrir el terminal y ejecute php --version para garantizar que la
nueva versión se ha instalado y es la opción predeterminada.
Instalación de Composer
Composer es un administrador de dependencias para PHP. Puede utilizarlo para instalar bibliotecas,
realizar un seguimiento de las dependencias de la aplicación y generar proyectos para los marcos PHP
populares.
El instalador genera un archivo PHAR en el directorio actual. Mueva este archivo an una ubicación de
PATH de su entorno para que pueda utilizarlo como archivo ejecutable.
$ mv composer.phar ~/.local/bin/composer
Composer agrega las bibliotecas que se instalan localmente al composer.json archivo (p. 858) del
proyecto. Al implementar el código del proyecto, Elastic Beanstalk utiliza Composer para instalar las
bibliotecas que se indican en este archivo en las instancias de aplicación del entorno.
Visite la página de inicio de AWS SDK para PHP si desea obtener más información e instrucciones de
instalación.
• Instalación de Eclipse
• Instalación de PhpStorm
855
AWS Elastic Beanstalk Developer Guide
Plataforma PHP
Note
Un IDE podría agregar archivos a la carpeta de proyectos que tal vez no quiera confirmar en el
control de código fuente. Para evitar confirmar estos archivos en el control de código fuente, utilice
.gitignore o la característica equivalente de la herramienta de control de código fuente.
Si simplemente quiere comenzar a escribir el código y no necesita todas las características de un IDE,
considere la posibilidad de instalar Sublime Text.
Elastic Beanstalk proporciona opciones de configuración (p. 252) que se pueden usar para personalizar el
software que se ejecuta en las instancias EC2 del entorno de Elastic Beanstalk. También puede configurar
las variables de entorno que necesita la aplicación, habilitar la rotación de registros en Amazon S3 y
configurar unas opciones comunes para la inicialización de PHP.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
Si utiliza Composer, puede incluir un archivo composer.json (p. 858) en el paquete de código fuente
para instalar paquetes durante la implementación.
Si desea definir valores de configuración avanzados en PHP y configurar ajustes de PHP que no están
disponibles como opciones de configuración, puede utilizar archivos de configuración y proporcionar un
archivo INI (p. 859) para ampliar o anular la configuración predeterminada que aplica Elastic Beanstalk
o para instalar extensiones adicionales.
856
AWS Elastic Beanstalk Developer Guide
El espacio de nombres
aws:elasticbeanstalk:container:php:phpini
3. Elija Configuración.
4. En la tarjeta Software, elija Modify(Modificar).
Configuración de PHP
• Document root: carpeta que contiene la página predeterminada del sitio. Si la página de bienvenida no
está en la raíz del paquete de código fuente, especifique la carpeta donde se encuentre con respecto a
la ruta raíz. Por ejemplo, /public si la página de bienvenida está en una carpeta llamada public.
• Memory limit: cantidad máxima de memoria que un script puede asignar. Por ejemplo, 512M.
• Zlib output compression: establézcalo en On para comprimir las respuestas.
• Allow URL fopen: establézcalo en Off para impedir que los scripts descarguen archivos de ubicaciones
remotas.
• Display errors: establézcalo en On para mostrar mensajes de error internos sobre depuración.
• Max execution time: tiempo máximo en segundos que un script puede ejecutarse antes de que el
entorno lo termine.
Log Options
La sección Log Options tiene dos valores:
• Instance profile: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de
Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Environment Properties
La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de
configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Estos ajustes se
pasan como pares clave-valor a la aplicación.
Dentro del entorno de PHP que se ejecuta en Elastic Beanstalk, estos valores se escriben en /etc/php.d/
environment.ini y se puede obtener acceso a ellos a través de $_SERVER o la función get_cfg_var.
$endpoint = $_SERVER['API_ENDPOINT'];
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
El espacio de nombres
aws:elasticbeanstalk:container:php:phpini
Puede usar un archivo de configuración (p. 320) para definir opciones de configuración y realizar otras
tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración se
pueden definir a través del servicio Elastic Beanstalk o la plataforma que utilice y están organizadas por
espacios de nombres.
857
AWS Elastic Beanstalk Developer Guide
Instalación de dependencias
En el siguiente ejemplo, el archivo de configuración (p. 320) muestra los ajustes de cada una de las
opciones disponibles en este espacio de nombres:
Example .ebextensions/php-settings.config
option_settings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
memory_limit: 128M
zlib.output_compression: "Off"
allow_url_fopen: "On"
display_errors: "Off"
max_execution_time: 60
composer_options: vendor/package
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
Example composer.json
{
"require": {
"monolog/monolog": "1.0.*"
}
}
858
AWS Elastic Beanstalk Developer Guide
Actualización de Composer
% composer install
2. Incluya la carpeta vendor generada en la raíz del paquete de código fuente de la aplicación.
Cuando Elastic Beanstalk encuentra una carpeta vendor en la instancia, no tiene en cuenta el archivo
composer.json (aunque exista). A continuación, su aplicación utiliza dependencias de la carpeta
vendor.
Actualización de Composer
Las versiones de la plataforma PHP incluyen la última versión de Composer disponible en el momento de
la publicación. Para mantener actualizado Composer, PHP y otras bibliotecas, actualice el entorno (p. 149)
siempre que haya una actualización de plataforma disponible.
Entre las actualizaciones de la plataforma, puede utilizar un archivo de configuración (p. 320) para
actualizar Composer en las instancias del entorno. Es posible que necesite actualizar Composer si aparece
un mensaje de error al intentar instalar paquetes con un archivo Composer o si no se puede utilizar la
última versión de la plataforma.
Example .ebextensions/composer.config
commands:
01updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update 1.4.1
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
Este archivo de configuración establece que Composer se actualice automáticamente a la versión 1.4.1.
Consulte la página de publicaciones de Composer en GitHub para encontrar la última versión.
Note
Ampliación de php.ini
Utilice un archivo de configuración con un bloque files para agregar un archivo .ini a /etc/php.d/
en las instancias del entorno. El principal archivo de configuración, php.ini, extrae la configuración
de los archivos de esta carpeta en orden alfabético. Muchas extensiones están habilitadas de forma
predeterminada por los archivos de esta carpeta.
Example .ebextensions/mongo.config
files:
"/etc/php.d/99mongo.ini" :
mode: "000755"
owner: root
group: root
content: |
859
AWS Elastic Beanstalk Developer Guide
Tutorial: Laravel
extension=mongo.so
Secciones
• Requisitos previos (p. 860)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 860)
• Instalación de Laravel y creación de un sitio web (p. 861)
• Implementar la aplicación (p. 862)
• Configuración de los ajustes de Composer (p. 862)
• Agregar una base de datos al entorno (p. 864)
• Eliminación (p. 865)
• Pasos siguientes (p. 866)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Laravel requiere PHP 5.5.9 o una versión posterior y la extensión mbstring de PHP. En este tutorial,
vamos a utilizar PHP 7.0 y la versión de la plataforma de Elastic Beanstalk correspondiente. Instale PHP y
Composer; para ello, siga las instrucciones de Configuración del entorno de desarrollo de PHP (p. 854).
860
AWS Elastic Beanstalk Developer Guide
Instalación de Laravel y creación de un sitio web
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
861
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
Si tiene problemas con la instalación de Laravel, consulte el tema sobre la instalación en la documentación
oficial: https://laravel.com/docs/5.2
Implementar la aplicación
Cree un paquete de código fuente (p. 64) que contenga los archivos creados por Composer. El comando
siguiente crea un paquete de código fuente denominado laravel-default.zip. Excluye los archivos de
la carpeta vendor, que ocupan mucho espacio y no se requieren para implementar la aplicación en Elastic
Beanstalk.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Laravel en su entorno.
Note
Para optimizar aun más el paquete de código fuente, inicialice un repositorio Git y use el comando
git archive (p. 65) para crear el paquete de código fuente. El proyecto Laravel predeterminado
incluye un archivo .gitignore que indica a Git que debe excluir la carpeta vendor y los demás
archivos que no se requieren para la implementación.
862
AWS Elastic Beanstalk Developer Guide
Configuración de los ajustes de Composer
¿Qué es esto? De forma predeterminada, Elastic Beanstalk proporciona la raíz del proyecto en la ruta
raíz del sitio web. En este caso, sin embargo, la página predeterminada (index.php) está un nivel
por debajo de la carpeta public. Puede comprobarlo agregando /public a la URL. Por ejemplo,
http://laravel.us-east-2.elasticbeanstalk.com/public.
Para que la aplicación Laravel esté disponible en la ruta raíz, utilice la Consola de Elastic Beanstalk con el
fin de configurar la raíz del documento del sitio web.
6. Seleccione Aplicar.
7. Cuando la actualización se haya completado, haga clic en la URL para volver a abrir el sitio en el
navegador.
Hasta el momento, todo fue bien. A continuación, debe agregar una base de datos al entorno y configurar
Laravel para que se conecte a ella.
863
AWS Elastic Beanstalk Developer Guide
Agregar una base de datos al entorno
Ejecutar una instancia de base de datos de Amazon RDS en el entorno de Elastic Beanstalk es
ideal para desarrollo y pruebas, pero supedita el ciclo de vida de la base de datos al entorno.
Consulte Lanzamiento y conexión a una instancia de Amazon RDS externa en una VPC
predeterminada (p. 549) para obtener instrucciones acerca de cómo conectarse a una base de
datos que se ejecute fuera del entorno.
Para agregar una instancia de base de datos de RDS al entorno de Elastic Beanstalk
Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, puede
actualizar el código fuente para que pueda leer la información de conexión del entorno. Elastic Beanstalk
proporciona la información de la conexión a través de variables de entorno RDS_HOSTNAME, como, a las
que puede obtener acceso desde la aplicación.
Example ~/eb-laravel/config/database.php
...
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('RDS_HOSTNAME', '127.0.0.1'),
'port' => env('RDS_PORT', '3306'),
'database' => env('RDS_DB_NAME', 'forge'),
'username' => env('RDS_USERNAME', 'forge'),
'password' => env('RDS_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
864
AWS Elastic Beanstalk Developer Guide
Eliminación
Para comprobar que la conexión de la base de datos está configurada correctamente, agregue código a
index.php para conectarse a la base de datos y también para la respuesta predeterminada:
Example ~/eb-laravel/public/index.php
...
if(DB::connection()->getDatabaseName())
{
echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
La implementación de una nueva versión de la aplicación tarda menos de un minuto. Cuando se haya
completado, actualice la página web de nuevo para comprobar que la conexión con la base de datos es
correcta:
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
865
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk.
Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para
restaurar los datos posteriormente en otra instancia.
Pasos siguientes
Para obtener más información sobre Laravel, consulte el tutorial en laravel.com.
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
En este tutorial, ha utilizado la Consola de Elastic Beanstalk para configurar las opciones de Composer.
Para integrar esta configuración en el código fuente de la aplicación, puede utilizar un archivo de
configuración similar al siguiente.
Example .ebextensions/composer.config
option_settings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
Para obtener más información, consulte Personalización avanzada de entornos con archivos de
configuración (.ebextensions) (p. 320).
Ejecutar una instancia de base de datos de Amazon RDS en el entorno de Elastic Beanstalk es ideal para
desarrollo y pruebas, pero supedita el ciclo de vida de la base de datos al entorno. Consulte Agregar una
instancia de base de datos de Amazon RDS a un entorno de aplicaciones PHP (p. 911) para obtener
instrucciones acerca de cómo conectarse a una base de datos que se ejecute fuera del entorno.
866
AWS Elastic Beanstalk Developer Guide
Tutorial: CakePHP
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
Secciones
• Requisitos previos (p. 867)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 867)
• Instalación de CakePHP y creación de un sitio web (p. 868)
• Implementar la aplicación (p. 869)
• Agregar una base de datos al entorno (p. 871)
• Eliminación (p. 872)
• Pasos siguientes (p. 873)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
CakePHP requiere PHP 5.5.9 o una versión posterior y las extensiones mbstring e intl de PHP. En
este tutorial, vamos a utilizar PHP 7.0 y la versión de la plataforma de Elastic Beanstalk correspondiente.
Instale PHP y Composer; para ello, siga las instrucciones de Configuración del entorno de desarrollo de
PHP (p. 854).
867
AWS Elastic Beanstalk Developer Guide
Instalación de CakePHP y creación de un sitio web
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
868
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
Si tiene problemas para instalar CakePHP, consulte el tema sobre instalación en la documentación oficial:
http://book.cakephp.org/3.0/en/installation.html
Implementar la aplicación
Cree un paquete de código fuente (p. 64) que contenga los archivos creados por Composer. El comando
siguiente crea un paquete de código fuente denominado cake-default.zip. Excluye los archivos de la
carpeta vendor, que ocupan mucho espacio y no se requieren para implementar la aplicación en Elastic
Beanstalk.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar CakePHP en su entorno.
Note
Para optimizar aun más el paquete de código fuente, inicialice un repositorio Git y use el
comando git archive (p. 65) para crear el paquete de código fuente. El proyecto Symfony
predeterminado incluye un archivo .gitignore que indica a Git que debe excluir la carpeta
vendor y los demás archivos que no se requieren para la implementación.
Cuando el proceso se complete, haga clic en la URL para abrir la aplicación de CakePHP en el navegador:
869
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
870
AWS Elastic Beanstalk Developer Guide
Agregar una base de datos al entorno
Hasta el momento, todo fue bien. A continuación, va a agregar una base de datos al entorno y a configurar
CakePHP para que se conecte a ella.
Para agregar una instancia de base de datos de Amazon RDS al entorno de Elastic Beanstalk
Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, puede
actualizar el código fuente para que pueda leer la información de conexión del entorno. Elastic Beanstalk
proporciona la información de la conexión a través de variables de entorno RDS_HOSTNAME, como a las
que puede obtener acceso desde la aplicación.
Example ~/eb-cake/config/app.php
<?php
if (!defined('RDS_HOSTNAME')) {
define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
La conexión de la base de datos está configurada más adelante en el archivo app.php. Busque la
sección siguiente y modifique la configuración predeterminada de las fuentes de datos con el nombre del
controlador que corresponda al motor de base de datos (Mysql, Sqlserver o Postgres) y configure las
variables host, username, password y database para que lean los valores correspondientes en Elastic
Beanstalk:
Example ~/eb-cake/config/app.php
...
/**
* Connection information used by the ORM to connect
* to your application's datastores.
* Drivers include Mysql Postgres Sqlite Sqlserver
* See vendor\cakephp\cakephp\src\Database\Driver for complete list
*/
871
AWS Elastic Beanstalk Developer Guide
Eliminación
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Postgres',
'persistent' => false,
'host' => RDS_HOSTNAME,
/*
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => RDS_USERNAME,
'password' => RDS_PASSWORD,
'database' => RDS_DB_NAME,
/*
* You do not need to set this flag to use full utf-8 encoding (internal
default since CakePHP 3.6).
*/
//'encoding' => 'utf8mb4',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
...
La implementación de una nueva versión de la aplicación tarda menos de un minuto. Cuando se haya
completado, actualice la página web de nuevo para comprobar que la conexión con la base de datos es
correcta:
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
872
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk.
Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para
restaurar los datos posteriormente en otra instancia.
Pasos siguientes
Para obtener más información sobre CakePHP, consulte el libro en book.cakephp.org.
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
Ejecutar una instancia de base de datos de Amazon RDS en el entorno de Elastic Beanstalk es ideal para
desarrollo y pruebas, pero supedita el ciclo de vida de la base de datos al entorno. Consulte Agregar una
instancia de base de datos de Amazon RDS a un entorno de aplicaciones PHP (p. 911) para obtener
instrucciones acerca de cómo conectarse a una base de datos que se ejecute fuera del entorno.
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
873
AWS Elastic Beanstalk Developer Guide
Requisitos previos
Secciones
• Requisitos previos (p. 874)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 874)
• Instalación de Symfony y generación de un sitio web (p. 875)
• Implementar la aplicación (p. 876)
• Configuración de los ajustes de Composer (p. 876)
• Eliminación (p. 878)
• Pasos siguientes (p. 878)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Symfony 4.3 requiere PHP 7.1 o posterior y la extensión intl de PHP. En este tutorial, vamos a utilizar
PHP 7.2 y la versión de la plataforma de Elastic Beanstalk correspondiente. Instale PHP y Composer; para
ello, siga las instrucciones de Configuración del entorno de desarrollo de PHP (p. 854).
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
874
AWS Elastic Beanstalk Developer Guide
Instalación de Symfony y generación de un sitio web
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
875
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
Implementar la aplicación
Vaya al directorio del proyecto.
~$ cd eb-symfony
Cree un paquete de código fuente (p. 64) que contenga los archivos creados por Composer. El comando
siguiente crea un paquete de código fuente denominado symfony-default.zip. Excluye los archivos de
la carpeta vendor, que ocupan mucho espacio y no se requieren para implementar la aplicación en Elastic
Beanstalk.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Symfony en su entorno.
Note
Para optimizar aun más el paquete de código fuente, inicialice un repositorio Git y use el
comando git archive (p. 65) para crear el paquete de código fuente. El proyecto Symfony
predeterminado incluye un archivo .gitignore que indica a Git que debe excluir la carpeta
vendor y los demás archivos que no se requieren para la implementación.
876
AWS Elastic Beanstalk Developer Guide
Configuración de los ajustes de Composer
¿Qué es esto? De forma predeterminada, Elastic Beanstalk proporciona la raíz del proyecto en la ruta raíz
del sitio web. En este caso, sin embargo, la página predeterminada (app.php) está un nivel por debajo de
la carpeta web. Puede comprobarlo agregando /public a la URL. Por ejemplo, http://symfony.us-
east-2.elasticbeanstalk.com/public.
Para que la aplicación Symfony esté disponible en la ruta raíz, utilice la Consola de Elastic Beanstalk con
el fin de configurar la raíz del documento del sitio web.
6. Seleccione Aplicar.
7. Cuando la actualización se haya completado, haga clic en la URL para volver a abrir el sitio en el
navegador.
877
AWS Elastic Beanstalk Developer Guide
Eliminación
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Pasos siguientes
Para obtener más información acerca de Symfony, consulte What is Symfony? en symfony.com.
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
878
AWS Elastic Beanstalk Developer Guide
Tutorial: producción de HA
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
En este tutorial, ha utilizado la Consola de Elastic Beanstalk para configurar las opciones de Composer.
Para integrar esta configuración en el código fuente de la aplicación, puede utilizar un archivo de
configuración similar al siguiente.
Example .ebextensions/composer.config
option_settings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
Para obtener más información, consulte Personalización avanzada de entornos con archivos de
configuración (.ebextensions) (p. 320).
Symfony utiliza sus propios archivos de configuración para configurar las conexiones a las bases de
datos. Para obtener instrucciones acerca de cómo conectarse a una base de datos con Symfony, consulte
Conexión a una base de datos con Symfony (p. 913).
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
En este tutorial, se utiliza una aplicación PHP de ejemplo que emplea una base de datos MySQL para
guardar los datos de texto proporcionados por el usuario. La aplicación de ejemplo utiliza archivos de
configuración (p. 320) para configurar los ajustes de PHP (p. 857) y crear una tabla en la base de datos
para que la aplicación la utilice. También se muestra cómo utilizar un archivo Composer (p. 858) para
instalar paquetes durante la implementación.
Secciones
• Requisitos previos (p. 880)
• Lanzamiento de una instancia de base de datos en Amazon RDS (p. 880)
• Creación de un entorno de Elastic Beanstalk (p. 882)
• Configuración de grupos de seguridad, propiedades de entorno y escalado (p. 883)
• Implementación de la aplicación de ejemplo (p. 885)
• Eliminación (p. 886)
• Pasos siguientes (p. 887)
879
AWS Elastic Beanstalk Developer Guide
Requisitos previos
Requisitos previos
Antes de comenzar, descargue el paquete de código fuente de la aplicación de ejemplo de GitHub: eb-
demo-php-simple-app-1.3.zip
En los procedimientos que se describen en este tutorial sobre tareas de Amazon Relational Database
Service (Amazon RDS), se presupone que los recursos se lanzan en una Amazon Virtual Private Cloud
(Amazon VPC) predeterminada. Todas las nuevas cuentas contienen una VPC predeterminada en cada
región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte Uso de
Elastic Beanstalk con Amazon Relational Database Service (p. 548) para obtener instrucciones sobre la
plataforma de EC2 y de una VPC personalizada.
Use la consola de Amazon RDS para lanzar una instancia de base de datos MySQL Multi-AZ. Si
selecciona un despliegue Multi-AZ, tendrá la seguridad de que la base de datos conmutará por error y
seguirá disponible en caso de que la instancia de base de datos maestra se quede fuera de servicio.
Para lanzar una instancia de base de datos de RDS en una VPC predeterminada
• DB instance class (Clase de instancia de base de datos): elija un tamaño de instancia que cuente
con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
• Multi-AZ deployment (Implementación Multi-AZ): para alta disponibilidad, elija Create replica in
different zone (Crear réplica en otra zona).
• Master username (Nombre de usuario maestro) y Master password (Contraseña maestra): nombre
de usuario y contraseña de la base de datos. Anote de estos valores, ya que los necesitará
posteriormente.
7. Seleccione Next (Siguiente).
8. En Database options (Opciones de la base de datos) para Database name (Nombre de base de
datos), escriba ebdb. Anote el valor de Database port (Puerto de base de datos) para usarlo más
adelante.
9. Compruebe los valores predeterminados de las demás opciones y elija Create database (Crear base
de datos).
A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir
el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su
entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a
otros recursos del mismo grupo de seguridad.
880
AWS Elastic Beanstalk Developer Guide
Lanzamiento de una instancia de
base de datos en Amazon RDS
Para modificar las reglas de entrada del grupo de seguridad de la instancia de RDS
881
AWS Elastic Beanstalk Developer Guide
Creación de un entorno de Elastic Beanstalk
Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, cree el entorno
de Elastic Beanstalk.
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
882
AWS Elastic Beanstalk Developer Guide
Configuración de grupos de seguridad,
propiedades de entorno y escalado
de carga llegue a la instancia EC2 en la que se ejecuta la aplicación web. De forma predeterminada, el
tráfico no está permitido en otros puertos.
• Balanceador de carga: balanceador de carga de Elastic Load Balancing que está configurado para
distribuir solicitudes a las instancias que se ejecutan en la aplicación. Los balanceadores de carga
también permiten que las instancias no estén expuestas directamente a Internet.
• Grupo de seguridad del balanceador de carga: grupo de seguridad de Amazon EC2 configurado para
permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de
Internet llegue al balanceador de carga. De forma predeterminada, el tráfico no está permitido en otros
puertos.
• Grupo de Auto Scaling: grupo de Auto Scaling que está configurado para reemplazar una instancia si
termina o deja de estar disponible.
• Bucket de Amazon S3: ubicación de almacenamiento para el código fuente, los registros y otros
artefactos que se crean al utilizar Elastic Beanstalk.
• Alarmas de Amazon CloudWatch: dos alarmas de CloudWatch que monitorizan la carga de las
instancias del entorno y que se activan si la carga es demasiado alta o demasiado baja. Cuando se
activa una alarma, en respuesta, el grupo de Auto Scaling aumenta o reduce los recursos.
• Pila de AWS CloudFormation: Elastic Beanstalk utiliza AWS CloudFormation para lanzar los recursos
del entorno y propagar los cambios de configuración. Los recursos se definen en una plantilla que puede
verse en la consola de AWS CloudFormation.
• Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato
subdominio.region.elasticbeanstalk.com.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene. La instancia de base de datos de RDS que lanzó se
encuentra fuera de su entorno, por lo que usted es responsable de administrar su ciclo de vida.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
883
AWS Elastic Beanstalk Developer Guide
Configuración de grupos de seguridad,
propiedades de entorno y escalado
f. Seleccione Aplicar.
g. Lea la advertencia y, a continuación, elija Confirm (Confirmar).
• Para añadir un grupo de seguridad con un archivo de configuración (p. 320), utilice el archivo de
ejemplo securitygroup-addexisting.config.
Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno. La
aplicación de ejemplo utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic
Beanstalk configura al aprovisionar una base de datos en su entorno.
Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
884
AWS Elastic Beanstalk Developer Guide
Implementación de la aplicación de ejemplo
6. Seleccione Aplicar.
Por último, configure el grupo de Auto Scaling de su entorno con un número mínimo de instancias mayor.
Ejecute al menos dos instancias en todo momento para evitar que los servidores web de su entorno se
conviertan en un único punto de error y para poder implementar cambios sin que el sitio se quede fuera de
servicio.
Para configurar el grupo de Auto Scaling del entorno para disponer de alta disponibilidad
885
AWS Elastic Beanstalk Developer Guide
Eliminación
Note
El sitio recopila los comentarios de los usuarios y utiliza una base de datos MySQL para almacenar
los datos. Para agregar un comentario, elija Share Your Thought (Compatir su opinión), escriba sus
impresiones y seleccione Submit Your Thought (Enviar su opinión). La aplicación web escribe el
comentario en la base de datos para que cualquier instancia del entorno pueda leerlo y que no se pierda
en caso de que las instancias se queden fuera de servicio.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
886
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk.
Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para
restaurar los datos posteriormente en otra instancia.
Pasos siguientes
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
La aplicación de ejemplo utiliza los archivos de configuración para configurar los ajustes de PHP y crear
una tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para
configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así la laboriosa
tarea de actualizar la configuración. Para obtener más información, consulte Personalización avanzada de
entornos con archivos de configuración (.ebextensions) (p. 320).
En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk
para agregar una instancia de base de datos administrada directamente al entorno. Para obtener
instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte Añadir una base
de datos al entorno de Elastic Beanstalk (p. 227).
Si necesita una base de datos de alto desempeño, considere la posibilidad de usar Amazon Aurora.
Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece funciones de bases de
datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos
de configuración del grupo de seguridad (p. 880) y actualice las propiedades de entorno relacionadas
con RDS (p. 883).
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
887
AWS Elastic Beanstalk Developer Guide
Tutorial: WordPress de alta disponibilidad
Secciones
• Requisitos previos (p. 888)
• Lanzamiento de una instancia de base de datos en Amazon RDS (p. 889)
• Descarga de WordPress (p. 891)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 892)
• Configuración de grupos de seguridad y propiedades de entorno (p. 893)
• Configuración e implementación de la aplicación (p. 894)
• Instalación de WordPress (p. 896)
• Actualización de claves y sales (p. 896)
• Eliminación de las restricciones de acceso (p. 896)
• Configuración del grupo de Auto Scaling (p. 897)
• Actualización de WordPress (p. 898)
• Eliminación (p. 898)
• Pasos siguientes (p. 899)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
En los procedimientos que se describen en este tutorial sobre tareas de Amazon Relational Database
Service (Amazon RDS), se presupone que los recursos se lanzan en una Amazon Virtual Private Cloud
(Amazon VPC) predeterminada. Todas las nuevas cuentas contienen una VPC predeterminada en cada
región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte Uso de
888
AWS Elastic Beanstalk Developer Guide
Lanzamiento de una instancia de
base de datos en Amazon RDS
Elastic Beanstalk con Amazon Relational Database Service (p. 548) para obtener instrucciones sobre la
plataforma de EC2 y de una VPC personalizada.
La aplicación PHP de ejemplo utiliza Amazon EFS. Solo actúa en las regiones de AWS que admiten
Amazon EFS. Para obtener más información acerca de la compatibilidad con las regiones de AWS,
consulte Regiones y puntos de enlace de AWS en la Referencia general de Amazon Web Services.
Use la consola de Amazon RDS para lanzar una instancia de base de datos MySQL Multi-AZ. Si
selecciona un despliegue Multi-AZ, tendrá la seguridad de que la base de datos conmutará por error y
seguirá disponible en caso de que la instancia de base de datos maestra se quede fuera de servicio.
Para lanzar una instancia de base de datos de RDS en una VPC predeterminada
• DB instance class (Clase de instancia de base de datos): elija un tamaño de instancia que cuente
con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
• Multi-AZ deployment (Implementación Multi-AZ): para alta disponibilidad, elija Create replica in
different zone (Crear réplica en otra zona).
• Master username (Nombre de usuario maestro) y Master password (Contraseña maestra): nombre
de usuario y contraseña de la base de datos. Anote de estos valores, ya que los necesitará
posteriormente.
7. Seleccione Next (Siguiente).
8. En Database options (Opciones de la base de datos) para Database name (Nombre de base de
datos), escriba ebdb. Anote el valor de Database port (Puerto de base de datos) para usarlo más
adelante.
9. Compruebe los valores predeterminados de las demás opciones y elija Create database (Crear base
de datos).
A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir
el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su
entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a
otros recursos del mismo grupo de seguridad.
Para modificar las reglas de entrada del grupo de seguridad de la instancia de RDS
889
AWS Elastic Beanstalk Developer Guide
Lanzamiento de una instancia de
base de datos en Amazon RDS
890
AWS Elastic Beanstalk Developer Guide
Descarga de WordPress
Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, descargue
WordPress y cree su entorno de Elastic Beanstalk.
Descarga de WordPress
Para prepararse para implementar WordPress con AWS Elastic Beanstalk, debe copiar los archivos de
WordPress a su equipo y proporcionar información de la configuración.
~$ wget https://github.com/aws-samples/eb-php-wordpress/releases/download/v1.1/eb-php-
wordpress-v1.zip
891
AWS Elastic Beanstalk Developer Guide
Lanzamiento de un entorno de Elastic Beanstalk
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
892
AWS Elastic Beanstalk Developer Guide
Configuración de grupos de
seguridad y propiedades de entorno
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene. La instancia de base de datos de RDS que lanzó se
encuentra fuera de su entorno, por lo que usted es responsable de administrar su ciclo de vida.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno. La
aplicación de ejemplo utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic
Beanstalk configura al aprovisionar una base de datos en su entorno.
Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
893
AWS Elastic Beanstalk Developer Guide
Configuración e implementación de la aplicación
6. Seleccione Aplicar.
894
AWS Elastic Beanstalk Developer Guide
Configuración e implementación de la aplicación
### wp-admin
### wp-blog-header.php
### wp-comments-post.php
### wp-config.php
### wp-config-sample.php
### wp-content
### wp-cron.php
### wp-includes
### wp-links-opml.php
### wp-load.php
### wp-login.php
### wp-mail.php
### wp-settings.php
### wp-signup.php
### wp-trackback.php
### xmlrpc.php
El archivo wp-config.php personalizado del repositorio del proyecto utiliza las variables de entorno
definidas en el paso anterior para configurar la conexión a la base de datos. La carpeta .ebextensions
contiene archivos de configuración que crean recursos adicionales en el entorno de Elastic Beanstalk.
Los archivos de configuración requieren modificaciones para que funcionen con su cuenta. Reemplace los
valores de los marcadores de posición de los archivos por los ID apropiados y cree un paquete de código
fuente.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar WordPress en su entorno.
895
AWS Elastic Beanstalk Developer Guide
Instalación de WordPress
Instalación de WordPress
Para completar la instalación de WordPress
La sal hash puede ser cualquier valor que cumpla los requisitos de las propiedades de entorno (p. 237),
pero no debe almacenarla en el control de código fuente. Utilice la Consola de Elastic Beanstalk para
definir estas propiedades directamente en el entorno.
896
AWS Elastic Beanstalk Developer Guide
Configuración del grupo de Auto Scaling
en dev.config para restringir el acceso HTTP en el puerto 80 a las conexiones procedentes de su red.
De no ser así, una entidad externa podría conectarse al sitio antes de que se instalase WordPress y se
hubiese configurado la cuenta de administrador.
Ahora que ha instalado WordPress, elimine el archivo de configuración para que el sitio esté disponible de
forma pública.
~/wordpress-beanstalk$ rm .ebextensions/loadbalancer-sg.config
Cargue el paquete de código fuente en Elastic Beanstalk para implementar WordPress en su entorno.
Para configurar el grupo de Auto Scaling del entorno para disponer de alta disponibilidad
Con el fin de admitir la carga de contenido en varias instancias, el proyecto de muestra utiliza Amazon
Elastic File System para crear un sistema de archivos compartidos. Cree una publicación en el sitio y
cargue contenido para almacenarlo en el sistema de archivos compartidos. Consulte la publicación y
897
AWS Elastic Beanstalk Developer Guide
Actualización de WordPress
actualice la página varias veces para utilizar ambas instancias y comprobar que el sistema de archivos
compartidos funciona.
Actualización de WordPress
Para actualizar a una nueva versión de WordPress, realice una copia de seguridad del sitio e impleméntelo
en un nuevo entorno. No utilice la funcionalidad de actualización dentro de WordPress ni actualice los
archivos de código fuente para que utilicen la nueva versión. Estas dos acciones puede hacer que las
direcciones URL de publicación devuelvan un error 404 aunque sigan presentes en la base de datos y en
el sistema de archivos.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk.
Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para
restaurar los datos posteriormente en otra instancia.
898
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
La aplicación de ejemplo utiliza archivos de configuración para configurar las opciones de PHP y crear una
tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para
configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así las laboriosas
tareas de actualización de la configuración. Para obtener más información, consulte Personalización
avanzada de entornos con archivos de configuración (.ebextensions) (p. 320).
En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk
para agregar una instancia de base de datos administrada directamente al entorno. Para obtener
instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte Añadir una base
de datos al entorno de Elastic Beanstalk (p. 227).
Si necesita una base de datos de alto desempeño, considere la posibilidad de usar Amazon Aurora.
Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece funciones de bases de
datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos
de configuración del grupo de seguridad (p. 880) y actualice las propiedades de entorno relacionadas
con RDS (p. 883).
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
Secciones
• Requisitos previos (p. 900)
• Lanzamiento de una instancia de base de datos en Amazon RDS (p. 900)
• Lanzamiento de un entorno de Elastic Beanstalk (p. 903)
• Configuración de ajustes de seguridad y propiedades de entorno (p. 904)
• Configuración e implementación de la aplicación (p. 906)
899
AWS Elastic Beanstalk Developer Guide
Requisitos previos
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
En los procedimientos que se describen en este tutorial sobre tareas de Amazon Relational Database
Service (Amazon RDS), se presupone que los recursos se lanzan en una Amazon Virtual Private Cloud
(Amazon VPC) predeterminada. Todas las nuevas cuentas contienen una VPC predeterminada en cada
región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte Uso de
Elastic Beanstalk con Amazon Relational Database Service (p. 548) para obtener instrucciones sobre la
plataforma de EC2 y de una VPC personalizada.
La aplicación PHP de ejemplo utiliza Amazon EFS. Solo actúa en las regiones de AWS que admiten
Amazon EFS. Para obtener más información acerca de la compatibilidad con las regiones de AWS,
consulte Regiones y puntos de enlace de AWS en la Referencia general de Amazon Web Services.
Use la consola de Amazon RDS para lanzar una instancia de base de datos MySQL Multi-AZ. La selección
de una implementación en varias zonas de disponibilidad (Multi-AZ) garantiza que la base de datos realice
una conmutación por error y siga estando disponible en caso de que la instancia de base de datos principal
quede fuera de servicio.
Para lanzar una instancia de base de datos de RDS en una VPC predeterminada
900
AWS Elastic Beanstalk Developer Guide
Lanzamiento de una instancia de
base de datos en Amazon RDS
• DB instance class (Clase de instancia de base de datos): elija un tamaño de instancia que cuente
con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
• Multi-AZ deployment (Implementación Multi-AZ): para alta disponibilidad, elija Create replica in
different zone (Crear réplica en otra zona).
• Master username (Nombre de usuario maestro) y Master password (Contraseña maestra): nombre
de usuario y contraseña de la base de datos. Anote de estos valores, ya que los necesitará
posteriormente.
7. Seleccione Next (Siguiente).
8. En Database options (Opciones de la base de datos) para Database name (Nombre de base de
datos), escriba ebdb. Anote el valor de Database port (Puerto de base de datos) para usarlo más
adelante.
9. Compruebe los valores predeterminados de las demás opciones y elija Create database (Crear base
de datos).
A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir
el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su
entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a
otros recursos del mismo grupo de seguridad.
Para modificar las reglas de entrada del grupo de seguridad de la instancia de RDS
901
AWS Elastic Beanstalk Developer Guide
Lanzamiento de una instancia de
base de datos en Amazon RDS
Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, lance el entorno
de Elastic Beanstalk.
902
AWS Elastic Beanstalk Developer Guide
Lanzamiento de un entorno de Elastic Beanstalk
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
903
AWS Elastic Beanstalk Developer Guide
Configuración de ajustes de
seguridad y propiedades de entorno
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene. La instancia de base de datos de RDS que lanzó se
encuentra fuera de su entorno, por lo que usted es responsable de administrar su ciclo de vida.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno. La
aplicación de ejemplo utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic
Beanstalk configura al aprovisionar una base de datos en su entorno.
Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
904
AWS Elastic Beanstalk Developer Guide
Configuración de ajustes de
seguridad y propiedades de entorno
6. Seleccione Aplicar.
Después de instalar Drupal, tiene que conectarse a la instancia con SSH para recuperar algunos detalles
de configuración. Asigne una clave SSH a las instancias del entorno.
905
AWS Elastic Beanstalk Developer Guide
Configuración e implementación de la aplicación
~$ wget https://github.com/aws-samples/eb-php-drupal/releases/download/v1.1/eb-php-
drupal-v1.zip
906
AWS Elastic Beanstalk Developer Guide
Configuración e implementación de la aplicación
### .ht.router.php
### index.php
### LICENSE
### LICENSE.txt
### modules
### profiles
### README.md
### README.txt
### robots.txt
### sites
### themes
### update.php
### vendor
### web.config
El archivo beanstalk-settings.php del repositorio del proyecto utiliza las variables de entorno
definidas en el paso anterior para configurar la conexión a la base de datos. La carpeta .ebextensions
contiene archivos de configuración que crean recursos adicionales en el entorno de Elastic Beanstalk.
Los archivos de configuración requieren modificaciones para que funcionen con su cuenta. Reemplace los
valores de los marcadores de posición de los archivos por los ID apropiados y cree un paquete de código
fuente.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Drupal en su entorno.
907
AWS Elastic Beanstalk Developer Guide
Instalación de Drupal
Instalación de Drupal
Para completar la instalación de Drupal
Obtenga el ID del directorio de sincronización, que aparece en la última línea del archivo de configuración.
El archivo también contiene la clave de hash actual de los sitios, pero puede hacer caso omiso del valor
actual y utilizar el suyo propio.
Asigne la ruta del directorio de sincronización y la clave de hash a las propiedades de entorno. El archivo
de configuración personalizado del repositorio del proyecto leerá estas propiedades para configurar el
sitio durante la implementación, además de las propiedades de conexión de la base de datos establecidas
anteriormente.
908
AWS Elastic Beanstalk Developer Guide
Actualización de la configuración de Drupal
y supresión de las restricciones de acceso
~/drupal-beanstalk$ rm .ebextensions/loadbalancer-sg.config
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Drupal en su entorno.
909
AWS Elastic Beanstalk Developer Guide
Configuración de Auto Scaling
Para configurar el grupo de Auto Scaling del entorno para disponer de alta disponibilidad
Con el fin de admitir la carga de contenido en varias instancias, el proyecto de muestra utiliza Amazon
Elastic File System para crear un sistema de archivos compartidos. Cree una publicación en el sitio y
cargue contenido para almacenarlo en el sistema de archivos compartidos. Consulte la publicación y
actualice la página varias veces para utilizar ambas instancias y comprobar que el sistema de archivos
compartidos funciona.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk.
Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para
restaurar los datos posteriormente en otra instancia.
910
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
La aplicación de ejemplo utiliza los archivos de configuración para configurar los ajustes de PHP y crear
una tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para
configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así las laboriosas
tareas de actualización de la configuración. Para obtener más información, consulte Personalización
avanzada de entornos con archivos de configuración (.ebextensions) (p. 320).
En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk
para agregar una instancia de base de datos administrada directamente al entorno. Para obtener
instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte Añadir una base
de datos al entorno de Elastic Beanstalk (p. 227).
Si necesita una base de datos de alto desempeño, considere la posibilidad de usar Amazon Aurora.
Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece funciones de bases de
datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos
de configuración del grupo de seguridad (p. 880) y actualice las propiedades de entorno relacionadas
con RDS (p. 883).
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
Si es la primera vez que utiliza Amazon RDS, agregue una instancia de base de datos (p. 912) a un
entorno de prueba con la Consola de Elastic Beanstalk y asegúrese de que la aplicación puede conectarse
a ella.
Para conectarse a una base de datos, agregue el controlador (p. 912) a la aplicación, cargue la clase
del controlador en el código y cree un objeto de conexión (p. 912) con las propiedades de entorno
proporcionadas por Elastic Beanstalk. La configuración y el código de conexión varían en función del motor
de base de datos y la plataforma que utilice.
En entornos de producción, cree una instancia de base de datos fuera del entorno de Elastic Beanstalk
para desacoplar los recursos del entorno de los recursos de base de datos. El uso de una instancia
de base de datos permite conectarse a la misma base de datos desde varios entornos y llevar a cabo
implementaciones “blue/green” (azul/verde). Para obtener instrucciones, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Secciones
• Añadir una instancia de base de datos al entorno (p. 912)
• Descargar un controlador (p. 912)
• Conexión a una base de datos con PDO o MySQLi (p. 912)
911
AWS Elastic Beanstalk Developer Guide
Añadir una instancia de base de datos al entorno
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227).
Descargar un controlador
Si desea utilizar PHP Data Objects (PDO) para conectarse a la base de datos, instale el driver que
corresponda al motor de base de datos elegido.
• MySQL: PDO_MYSQL
• PostgreSQL: PDO_PGSQL
• Oracle: PDO_OCI
• SQL Server: PDO_SQLSRV
912
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos con Symfony
Para obtener un PDO, cree un nombre de origen de datos (DSN) a partir del host, el puerto y el nombre.
Pase el DSN al constructor del PDO con el nombre de usuario y la contraseña de la base de datos.
Example Conexión con una base de datos de RDS a través de PDO - MySQL
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;
$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];
Si utiliza otros controladores, sustituya mysql por el nombre del controlador: pgsql, oci o sqlsrv.
En el caso MySQLi, pase el nombre de host, el nombre de usuario, la contraseña, el nombre de la base de
datos y el puerto a la función mysql_connect.
Example app/config/parameters.yml
parameters:
database_driver: pdo_mysql
database_host: '%env(RDS_HOSTNAME)%'
database_port: '%env(RDS_PORT)%'
database_name: '%env(RDS_DB_NAME)%'
database_user: '%env(RDS_USERNAME)%'
database_password: '%env(RDS_PASSWORD)%'
Para versiones anteriores de Symfony, las variables de entorno solo están accesibles si comienzan por
SYMFONY__. Esto significa que las propiedades de entorno definidas por Elastic Beanstalk no están
accesibles, por lo que deberá definir expresamente sus propiedades de entorno para pasar a Symfony la
información de conexión.
Para conectarse a una base de datos con Symfony 2, cree una propiedad de entorno (p. 857) para cada
parámetro. A continuación, utilice %property.name% para obtener acceso a la variable transformada
por Symfony en un archivo de configuración. Por ejemplo, a una propiedad del entorno denominada
SYMFONY__DATABASE__USER se puede tener acceso como database.user.
database_user: "%database.user%"
913
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos con Symfony
914
AWS Elastic Beanstalk Developer Guide
Entorno de desarrollo
Uso de Python
Esta sección contiene tutoriales e información sobre la implementación de aplicaciones de Python con
AWS Elastic Beanstalk.
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Temas
• Configuración del entorno de desarrollo de Python (p. 915)
• Uso de la plataforma Python de AWS Elastic Beanstalk (p. 917)
• Implementación de una aplicación de Flask en AWS Elastic Beanstalk (p. 921)
• Implementación de una aplicación de Django en Elastic Beanstalk (p. 927)
• Añadir una instancia de base de datos de Amazon RDS a su entorno de aplicaciones Python (p. 938)
• Herramientas y recursos de Python (p. 940)
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Secciones
• Instalación de Python y Pip (p. 915)
• Uso de un entorno virtual (p. 916)
• Configuración de un proyecto de Python para Elastic Beanstalk (p. 916)
915
AWS Elastic Beanstalk Developer Guide
Uso de un entorno virtual
3. El paquete virtualenv. Se utiliza para crear un entorno usado para desarrollar y probar la aplicación,
de modo que Elastic Beanstalk pueda replicar el entorno sin necesidad de instalar paquetes adicionales
que no necesite la aplicación.
4. El paquete awsebcli. Se utiliza para inicializar la aplicación con los archivos necesarios para su
implementación con Elastic Beanstalk.
5. Una instalación de ssh de trabajo. Se utiliza para conectar con las instancias en ejecución cuando es
necesario examinar o depurar una implementación.
Para obtener instrucciones sobre cómo instalar Python, pip y la CLI de EB, consulte Instalación de la CLI
de EB con scripts de configuración (p. 579).
Sustituya eb_python_app por un nombre que tenga sentido para su aplicación (se recomienda usar el
nombre de la aplicación o del directorio). El comando virtualenv crea un entorno virtual e imprime
los resultados de sus acciones:
2. Una vez que el entorno virtual esté listo, empiece ejecutando el script activate ubicado en el
directorio bin del entorno. Por ejemplo, para iniciar el entorno eb_python_app creado en el paso
anterior, escribiría:
. /tmp/eb_python_app/bin/activate
El entorno virtual imprime su nombre (por ejemplo: (eb_python_app)) al principio de cada símbolo
del sistema para recordarle que se encuentra en un entorno de Python virtual.
Note
Una vez creado, puede reiniciar el entorno virtual en cualquier momento ejecutando de nuevo el
script activate.
916
AWS Elastic Beanstalk Developer Guide
La plataforma Python
Para configurar una aplicación Python para su implementación con Elastic Beanstalk
1. Desde dentro de su entorno virtual (p. 916), vuelva a la parte superior del árbol de directorios de su
proyecto (python_eb_app) y escriba:
Este comando copia los nombres y las versiones de los paquetes que están instalados en su entorno
virtual en requirements.txt. Por ejemplo, si el paquete PyYAML, versión 3.11 está instalado en su
entorno virtual, el archivo contendrá la línea:
PyYAML==3.11
Esto permite que Elastic Beanstalk replique el entorno Python de su aplicación con los mismos
paquetes y las mismas versiones que utilizó para desarrollar y probar su aplicación.
2. Configure el repositorio de la CLI de EB con el comando eb init. Siga las instrucciones para elegir
una región, una plataforma y otras opciones. Para obtener instrucciones detalladas, consulte
Administración de entornos de Elastic Beanstalk con la CLI de EB (p. 590).
De forma predeterminada, Elastic Beanstalk busca un archivo llamado application.py para iniciar
su aplicación. Si este archivo no existe en el proyecto de Python que ha creado, tendrá que realizar
algunos ajustes en el entorno de su aplicación. También necesitará configurar las variables de entorno
para que puedan cargarse los módulos de la aplicación. Para obtener más información, consulte Uso de la
plataforma Python de AWS Elastic Beanstalk (p. 917).
Elastic Beanstalk proporciona opciones de configuración (p. 252) que se pueden usar para personalizar
el software que se ejecuta en las instancias EC2 del entorno de Elastic Beanstalk. Puede configurar las
variables de entorno que necesita la aplicación, habilitar la rotación de registros en Amazon S3 y asignar
carpetas del código fuente de la aplicación que contengan archivos estáticos a rutas proporcionadas por el
servidor proxy.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
En los paquetes de Python disponibles en pip, también puede incluir un xarchivo de requisitos (p. 920)
llamado requirements.txt en la raíz del código fuente de la aplicación. Elastic Beanstalk instala los
paquetes especificados en un archivo de requisitos durante la implementación.
917
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de Python
de configuración y anularla con la configuración específica del entorno en la consola. Para obtener más
información acerca de la prioridad y otros métodos para cambiar valores de configuración, consulte
Opciones de configuración (p. 252).
Configuración de Python
• WSGI Path (Ruta de WSGI): el nombre de una ruta a su archivo de la aplicación principal. Por ejemplo,
application.py o django/wsgi.py.
• NumProcesses: el número de procesos que se van a ejecutar en cada instancia de la aplicación.
• NumThreads: el número de subprocesos para ejecutar en cada proceso.
Log Options
La sección Log Options tiene dos valores:
• Instance profile: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de
Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Static Files
Para mejorar el desempeño, puede configurar el servidor proxy para servir archivos estáticos de servidor
(por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en su aplicación web. Cuando
el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente
el archivo en lugar de direccionar la solicitud la aplicación. Puede definir la ruta virtual y los mapeos de
directorio en la sección Static Files (Archivos estáticos) de la página de configuración Modify software
(Modificar software).
Para obtener más información sobre la configuración de archivos estáticos con la Consola de Elastic
Beanstalk, consulte Distribución de archivos estáticos (p. 372).
De forma predeterminada, el servidor proxy en un entorno de Python proporciona los archivos en una
carpeta llamada static situada en la ruta /static. Por ejemplo, si el código fuente de la aplicación
918
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Python
contiene un archivo llamado logo.png en una carpeta denominada static, el servidor proxy lo
proporciona a los usuarios en subdomain.elasticbeanstalk.com/static/logo.png. Puede
configurar mapeos adicionales como se explica en esta sección.
Environment Properties
Puede utilizar las propiedades del entorno para proporcionar información a la aplicación y configurar las
variables de entorno. Por ejemplo, puede crear una propiedad de entorno llamada CONNECTION_STRING
que especifique una cadena de conexión que la aplicación pueda usar para conectarse a la base de datos.
Dentro del entorno de Python que se ejecuta en Elastic Beanstalk, estos valores son accesibles a través
del diccionario os.environ de Python. Para obtener más información, consulte http://docs.python.org/
library/os.html.
Puede utilizar un código similar al siguiente para tener acceso a las claves y los parámetros:
import os
endpoint = os.environ['API_ENDPOINT']
Las propiedades de entorno también pueden proporcionar información a un marco de trabajo. Por
ejemplo, puede crear una propiedad llamada DJANGO_SETTINGS_MODULE para configurar Django de
forma que utilice un módulo de configuración específico. En función del entorno, el valor podría ser
development.settings, production.settings, etc.
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: production.settings
aws:elasticbeanstalk:container:python:staticfiles:
/html: statichtml
/images: staticimages
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango/wsgi.py
NumProcesses: 3
NumThreads: 20
Los archivos de configuración también admiten varias claves para modificar aún más el software en
las instancias del entorno (p. 323). En este ejemplo, se utiliza la clave packages (p. 324) para instalar
919
AWS Elastic Beanstalk Developer Guide
Archivo de requisitos
Memcached con yum y container commands (p. 331) para ejecutar comandos que configuren el servidor
durante la implementación:
packages:
yum:
libmemcached-devel: '0.31'
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
03wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
99customize:
command: "scripts/customize.sh"
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
Archivo de requisitos
Cree un archivo requirements.txt y sitúelo en el directorio principal del paquete de código fuente. Una
aplicación de Python típica tendrá dependencias de otros paquetes de Python de terceros. En Python,
pip es el método estándar para instalar paquetes. El sistema pip tiene una característica que permite
especificar todos los paquetes necesarios (así como las versiones) en un único archivo de requisitos. Para
obtener más información sobre el archivo de requisitos, consulte Requirements File Format. A continuación
se muestra un ejemplo del archivo requirements.txt para Django.
Django==1.11.3
MySQL-python==1.2.5
En el entorno de desarrollo, puede utilizar el comando pip freeze para generar el archivo de requisitos.
Para asegurarse de que el archivo de requisitos solo contiene los paquetes que se utilizan realmente en la
aplicación, utilice un entorno virtual (p. 916) que solo tenga instalado esos paquetes. Fuera del entorno
virtual, la salida de pip freeze incluirá todos los paquetes de PIP instalados en el equipo de desarrollo,
incluidos aquellos que venían con el sistema operativo.
Note
Elastic Beanstalk no admite de forma nativa Pipenv ni Pipfiles. Si utiliza Pipenv para administrar
las dependencias de la aplicación, ejecute el siguiente comando para generar un archivo
requirements.txt.
920
AWS Elastic Beanstalk Developer Guide
Tutorial: Flask
Secciones
• Requisitos previos (p. 921)
• Configuración de un entorno virtual de Python con Flask (p. 921)
• Creación de una aplicación de Flask (p. 922)
• Implementación del sitio con la CLI de EB (p. 924)
• Eliminación (p. 926)
• Pasos siguientes (p. 927)
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Flask requiere Python 2.7 o 3.4 o posterior. En este tutorial vamos a utilizar Python 3.6 y la versión de
la plataforma de Elastic Beanstalk correspondiente. Instale Python; para ello, siga las instrucciones de
Configuración del entorno de desarrollo de Python (p. 915).
En este tutorial también se utiliza la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB). Para
obtener detalles sobre la instalación y configuración de la CLI de EB, consulte Instalación de la CLI de EB
con scripts de configuración (p. 579) y Configuración de la CLI de EB (p. 586).
921
AWS Elastic Beanstalk Developer Guide
Creación de una aplicación de Flask
~$ mkdir eb-flask
~$ cd eb-flask
Verá (virt) delante del símbolo del sistema, lo que indica que se encuentra en un entorno virtual.
Utilice el entorno virtual para el resto de este tutorial.
3. Instale flask con pip install:
Este comando enumera todos los paquetes instalados en su entorno virtual. Debido a que se
encuentra en un entorno virtual, no se muestran los paquetes instalados globalmente como la CLI de
EB.
5. Guarde la salida de pip freeze en un archivo llamado requirements.txt.
Este archivo indica a Elastic Beanstalk que instale las bibliotecas durante la implementación. Para
obtener más información, consulte Archivo de requisitos (p. 920).
En este directorio, cree un nuevo archivo de texto llamado application.py con el contenido siguiente:
Example ~/eb-flask/application.py
922
AWS Elastic Beanstalk Developer Guide
Creación de una aplicación de Flask
# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:
header_text + say_hello(username) + home_link + footer_text))
En este ejemplo, se imprime un saludo personalizado que varía en función de la ruta utilizada para obtener
acceso al servicio.
Note
923
AWS Elastic Beanstalk Developer Guide
Implementación del sitio con la CLI de EB
Compruebe el registro del servidor para ver el resultado de la solicitud. Si desea detener el servidor web y
volver al entorno virtual, escriba Ctrl+C.
Si aparece la salida de depuración, solucione los errores y asegúrese de que la aplicación está
ejecutándose en local antes de configurarla para Elastic Beanstalk.
~/eb-flask/
|-- virt
|-- application.py
`-- requirements.txt
Sin embargo, la carpeta virt, no es obligatoria para que la aplicación se ejecute en Elastic Beanstalk. Al
realizar la implementación, Elastic Beanstalk crea un nuevo entorno virtual en las instancias de servidor e
instala las bibliotecas indicadas en requirements.txt. Para minimizar el tamaño del paquete de código
fuente que cargue durante la implementación, agregue un archivo .ebignore (p. 588) que le indique a la CLI
de EB que omita la carpeta virt.
Example ~/eb-flask/.ebignore
virt
Este comando crea una nueva aplicación llamada flask-tutorial y configura el repositorio local
para crear entornos con la última versión de la plataforma Python 3.6.
924
AWS Elastic Beanstalk Developer Guide
Implementación del sitio con la CLI de EB
2. (opcional) Ejecute de nuevo eb init para configurar un par de claves predeterminadas de forma que
pueda conectarse a la instancia EC2 donde se ejecuta la aplicación con SSH:
~/eb-flask$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
Seleccione un par de claves si tiene uno o siga las instrucciones para crear una nuevo par de claves.
Si no ve el símbolo del sistema o más adelante necesita cambiar la configuración, ejecute eb init -i.
3. Cree un entorno e implemente la aplicación en él con eb create:
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
925
AWS Elastic Beanstalk Developer Guide
Eliminación
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Cuando finalice el proceso de creación del entorno, abra el sitio web con eb open:
~/eb-flask$ eb open
Se abrirá una ventana del navegador con el nombre de dominio creado para su aplicación. Debería ver el
mismo sitio web de Flask que creó y probó en local.
En caso de que sí vea la aplicación en ejecución (le felicitamos en ese caso), habrá implementado la
primera aplicación de Flask con Elastic Beanstalk.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
926
AWS Elastic Beanstalk Developer Guide
Pasos siguientes
Pasos siguientes
Para obtener más información acerca de Flask, visite flask.pocoo.org.
Si desea probar otra plataforma web de Python, consulte Implementación de una aplicación de Django en
Elastic Beanstalk (p. 927).
Secciones
• Requisitos previos (p. 927)
• Configuración de un entorno virtual de Python con Django (p. 928)
• Creación de un proyecto de Django (p. 929)
• Configuración de la aplicación de Django para Elastic Beanstalk (p. 930)
• Implementación del sitio con la CLI de EB (p. 931)
• Actualización de la aplicación (p. 934)
• Limpieza y pasos siguientes (p. 938)
Requisitos previos
Para utilizar cualquier servicio de Amazon Web Services (AWS), incluido Elastic Beanstalk, necesita
disponer de una cuenta de AWS y credenciales. Para obtener más información y registrarse, visite https://
aws.amazon.com/.
Para seguir este tutorial, debe tener todos los requisitos previos comunes (p. 915) de Python instalados,
incluidos los siguientes paquetes:
• Python 3.6
• pip
• virtualenv
• awsebcli
927
AWS Elastic Beanstalk Developer Guide
Configuración de un entorno virtual de Python con Django
Note
Para crear entornos con el EB CLI se requiere una función de servicio (p. 22). Puede crear una
función de servicio creando un entorno en la Consola de Elastic Beanstalk. Si no cuenta con
ninguna función de servicio, el EB CLI intentará crear uno cuando ejecute eb create.
~$ virtualenv ~/eb-virt
~$ source ~/eb-virt/bin/activate
(eb-virt) ~$
C:\>%HOMEPATH%\eb-virt\Scripts\activate
(eb-virt) C:\>
Verá (eb-virt) delante del símbolo del sistema, lo que indica que se encuentra en un entorno
virtual.
Note
Note
La versión de Django que instale debe ser compatible con la versión de Python en la
configuración de Elastic Beanstalk Python que elija para implementar su aplicación. Para
obtener más información sobre la implementación, consulte ??? (p. 931) en este tema.
928
AWS Elastic Beanstalk Developer Guide
Creación de un proyecto de Django
Para obtener más información sobre las versiones de plataforma de Python actuales,
consulte Python en el documento Plataformas de AWS Elastic Beanstalk.
Para obtener información sobre la compatibilidad de versiones de Django con Python,
consulte ¿Qué versión de Python puedo utilizar con Django? Sin embargo, tenga en cuenta
que Django 2.2 es incompatible con la plataforma Python 3.6 de Elastic Beanstalk. La última
versión compatible es Django 2.1.
4. Para comprobar que Django se ha instalado, escriba:
Este comando enumera todos los paquetes instalados en su entorno virtual. Más adelante utilizará el
resultado de este comando para configurar su proyecto para usarlo con Elastic Beanstalk.
~$ source ~/eb-virt/bin/activate
(eb-virt) ~$
C:\>%HOMEPATH%\eb-virt\Scripts\activate
(eb-virt) C:\>
Verá el prefijo (eb-virt) delante del símbolo del sistema, lo que indica que se encuentra en un
entorno virtual.
Note
Este comando crea un sitio de Django estándar denominado ebdjango con la siguiente estructura de
directorios:
~/ebdjango
|-- ebdjango
| |-- __init__.py
| |-- settings.py
929
AWS Elastic Beanstalk Developer Guide
Configuración de la aplicación
de Django para Elastic Beanstalk
| |-- urls.py
| `-- wsgi.py
`-- manage.py
(eb-virt) ~$ cd ebdjango
5. Compruebe el registro del servidor para ver el resultado de la solicitud. Si desea detener el servidor
web y volver al entorno virtual, escriba Ctrl+C:
930
AWS Elastic Beanstalk Developer Guide
Implementación del sitio con la CLI de EB
De forma predeterminada, Elastic Beanstalk busca un archivo llamado application.py para iniciar
su aplicación. Como este archivo no existe en el proyecto de Django que ha creado, tendrá que realizar
algunos ajustes en el entorno de su aplicación. También necesitará configurar las variables de entorno
para que puedan cargarse los módulos de la aplicación.
C:\Users\USERNAME\ebdjango>%HOMEPATH%\eb-virt\Scripts\activate
Elastic Beanstalk utiliza requirements.txt para determinar qué paquete se va a instalar en las
instancias EC2 donde se ejecuta la aplicación.
3. Cree un nuevo directorio llamado .ebextensions:
Example ~/ebdjango/.ebextensions/django.config
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango/wsgi.py
Esta configuración, especifica la ubicación del script de WSGIPathque utiliza Elastic Beanstalk para
iniciar su aplicación.
5. Desactive el entorno virtual con el comando deactivate:
Vuelva a activar su entorno virtual siempre que necesite añadir paquetes adicionales a su aplicación o
ejecutar su aplicación localmente.
~/ebdjango/
|-- .ebextensions
| `-- django.config
|-- ebdjango
931
AWS Elastic Beanstalk Developer Guide
Implementación del sitio con la CLI de EB
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- db.sqlite3
|-- manage.py
`-- requirements.txt
Este comando crea una nueva aplicación llamada django-tutorial y configura el repositorio local
para crear entornos con la última versión de la plataforma Python 3.6.
2. (opcional) Ejecute de nuevo eb init para configurar un par de claves predeterminadas de forma que
pueda conectarse a la instancia EC2 donde se ejecuta la aplicación con SSH:
~/ebdjango$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
Seleccione un par de claves si tiene uno o siga las instrucciones para crear una nuevo par de claves.
Si no ve el símbolo del sistema o más adelante necesita cambiar la configuración, ejecute eb init -i.
3. Cree un entorno e implemente la aplicación en él con eb create:
Note
Si recibe un mensaje de error "service role required" (es necesario el rol de servicio), ejecute
eb create interactivamente (sin especificar un nombre de entorno) y la CLI de EB creará el
rol.
Este comando crea un entorno de Elastic Beanstalk con balanceo de carga llamado django-env.
Se tarda alrededor de cinco minutos en crear el entorno. A medida que Elastic Beanstalk crea los
recursos necesarios para ejecutar la aplicación, envía mensajes informativos que la CLI de EB
transmite a su terminal.
4. Cuando finalice el proceso de creación del entorno, busque el nombre de dominio de su nuevo
entorno. Para ello, ejecute eb status:
~/ebdjango$ eb status
932
AWS Elastic Beanstalk Developer Guide
Implementación del sitio con la CLI de EB
...
ALLOWED_HOSTS = ['eb-django-app-dev.elasticbeanstalk.com']
6. Guarde el archivo y, a continuación, vuelva a implementar la aplicación. Para ello, ejecute eb deploy.
Cuando ejecuta eb deploy, la CLI de EB empaqueta el contenido del directorio del proyecto y lo
implementa en su entorno.
~/ebdjango$ eb deploy
Note
Si utiliza Git con el proyecto, consulte Uso de la CLI de EB con Git (p. 596).
7. Cuando finalice el proceso de actualización del entorno, abra el sitio web con eb open:
~/ebdjango$ eb open
Se abrirá una ventana del navegador con el nombre de dominio creado para su aplicación. Debería
ver el mismo sitio web de Django que creó y probó localmente.
933
AWS Elastic Beanstalk Developer Guide
Actualización de la aplicación
En caso de que sí vea la aplicación en ejecución, (le felicitamos en ese caso), habrá implementado la
primera aplicación de Django con Elastic Beanstalk.
Actualización de la aplicación
Ahora que tiene una aplicación en ejecución en Elastic Beanstalk, puede actualizar y volver a implementar
su aplicación o su configuración; Elastic Beanstalk se encargará de la tarea de actualizar sus instancias e
iniciar la nueva versión de la aplicación.
Para este ejemplo, vamos a habilitar la consola de administración de Django y configurar otros ajustes.
Example ~/ebdjango/ebdjango/settings.py
...
934
AWS Elastic Beanstalk Developer Guide
Actualización de la aplicación
# Internationalization
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'US/Pacific'
USE_I18N = True
USE_L10N = True
USE_TZ = True
~/ebdjango/$ eb deploy
3. Para indicar a Django dónde debe almacenar los archivos estáticos, defina STATIC_ROOT en
settings.py:
Example ~/ebdjango/ebdjango/settings.py
935
AWS Elastic Beanstalk Developer Guide
Actualización de la aplicación
# https://docs.djangoproject.com/en/2.1/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = 'static'
4. Ejecute manage.py collectstatic para rellenar el directorio static con los recursos estáticos
(javascript, CSS e imágenes) del sitio de administración:
5. Implemente la aplicación:
~/ebdjango$ eb deploy
http://djang-env.p33kq46sfh.us-west-2.elasticbeanstalk.com/admin/
936
AWS Elastic Beanstalk Developer Guide
Actualización de la aplicación
1. Cree un nuevo archivo de configuración (p. 320) llamado db-migrate.config con el siguiente
contenido:
Example ~/ebdjango/.ebextensions/db-migrate.config
container_commands:
01_migrate:
command: "django-admin.py migrate"
leader_only: true
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: ebdjango.settings
937
AWS Elastic Beanstalk Developer Guide
Limpieza y pasos siguientes
~/ebdjango$ eb deploy
Este comando termina el entorno y todos los recursos de AWS que se ejecutan dentro de él. No elimina
la aplicación. Al contrario, podrá crear más entornos con la misma configuración siempre que quiera
ejecutando de nuevo eb create. Para obtener más información sobre los comandos de la CLI de EB,
consulte Administración de entornos de Elastic Beanstalk con la CLI de EB (p. 590).
Si ha terminado de trabajar con la aplicación de ejemplo, puede eliminar también la carpeta del proyecto y
el entorno virtual:
~$ rm -rf ~/eb-virt
~$ rm -rf ~/ebdjango
Para obtener más información sobre Django, como un tutorial detallado, consulte la documentación oficial.
Si desea probar otra plataforma web de Python, consulte Implementación de una aplicación de Flask en
AWS Elastic Beanstalk (p. 921).
Si es la primera vez que utiliza Amazon RDS, añada una instancia de base de datos (p. 939) a un
entorno de prueba con la consola de administración de Elastic Beanstalk y verifique que su aplicación
puede conectarse a ella.
Para conectarse a una base de datos, añada el controlador (p. 939) a su aplicación, cargue el
controlador en el código y cree un objeto de conexión (p. 940) con las propiedades de entorno
proporcionadas por Elastic Beanstalk. La configuración y el código de conexión varían en función del motor
de base de datos y la plataforma que utilice.
En entornos de producción, cree una instancia de base de datos fuera del entorno de Elastic Beanstalk
para desacoplar los recursos del entorno de los recursos de base de datos. El uso de una instancia
de base de datos permite conectarse a la misma base de datos desde varios entornos y llevar a cabo
implementaciones “blue/green” (azul/verde). Para obtener instrucciones, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Secciones
• Añadir una instancia de base de datos al entorno (p. 939)
• Descargar un controlador (p. 939)
938
AWS Elastic Beanstalk Developer Guide
Añadir una instancia de base de datos al entorno
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227).
Descargar un controlador
Añada el controlador de base de datos al archivo de requisitos (p. 920) de su proyecto.
Django==2.0.3
mysqlclient==1.3.12
939
AWS Elastic Beanstalk Developer Guide
Conexión a una base de datos
import os
if 'RDS_HOSTNAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
Recurso Descripción
Boto (el SDK de AWS para Python) Instalar Boto mediante GitHub.
Centro para desarrolladores de Python Un único lugar para obtener código de ejemplo,
documentación, herramientas y recursos adicionales.
940
AWS Elastic Beanstalk Developer Guide
Entorno de desarrollo
Creación e implementación de
aplicaciones Ruby en AWS Elastic
Beanstalk
Temas
• Configuración del entorno de desarrollo de Ruby (p. 941)
• Uso de la plataforma Ruby de AWS Elastic Beanstalk (p. 943)
• Implementación de una aplicación de Rails en Elastic Beanstalk (p. 945)
• Implementación de una aplicación de Sinatra en AWS Elastic Beanstalk (p. 951)
• Incorporación de una instancia de base de datos de Amazon RDS a un entorno de aplicaciones
Ruby (p. 954)
Elastic Beanstalk para Ruby facilita la implementación, administración y escalado de sus aplicaciones web
Ruby que utilizan Amazon Web Services. Elastic Beanstalk para Ruby está disponible para todo aquel que
desee desarrollar o alojar una aplicación web con Ruby. En esta sección se proporcionan instrucciones
paso a paso para implementar una aplicación de ejemplo en Elastic Beanstalk mediante la interfaz de línea
de comandos de Elastic Beanstalk (CLI de EB) y, a continuación, actualizar la aplicación para que use las
plataformas de aplicaciones web Rails y Sinatra.
En los temas de este capítulo se parte de la base de que se tienen conocimientos de los entornos de
Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción (p. 3) para
conocer los conceptos básicos.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Para ver procedimientos de configuración y herramientas comunes que se utilizan en todos los lenguajes,
consulte Configuración de su entorno de desarrollo local para usarlo con AWS Elastic Beanstalk (p. 575).
Secciones
• Instalación de Ruby (p. 942)
• Instalación de AWS SDK para Ruby (p. 943)
• Instalación de un IDE o un editor de texto (p. 943)
941
AWS Elastic Beanstalk Developer Guide
Instalación de Ruby
Instalación de Ruby
Instale GCC si no tiene un compilador de C. En Ubuntu, use apt.
Instale RVM para administrar las instalaciones del lenguaje Ruby en su equipo. Utilice los comandos en
rvm.io para obtener las claves de proyecto y ejecutar el script de instalación.
Este script instala RVM en una carpeta denominada .rvm en el directorio de usuario y modifica el perfil de
shell para cargar un script de instalación cada vez que abra un nuevo terminal. Cargue el script de forma
manual para comenzar.
~$ source ~/.rvm/scripts/rvm
Consulte Ruby en el documento Plataformas de AWS Elastic Beanstalk para encontrar la versión más
reciente de Ruby disponible en una plataforma de Elastic Beanstalk. Instale dicha versión.
~$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
942
AWS Elastic Beanstalk Developer Guide
Instalación de AWS SDK para Ruby
Visite la página de inicio de AWS SDK parar Ruby si desea obtener más información e instrucciones de
instalación.
• Instalar Aptana
• RubyMine
Note
Un IDE podría agregar archivos a la carpeta de proyectos que tal vez no quiera confirmar en el
control de código fuente. Para evitar confirmar estos archivos en el control de código fuente, utilice
.gitignore o la característica equivalente de la herramienta de control de código fuente.
Si simplemente quiere comenzar a escribir el código y no necesita todas las características de un IDE,
considere la posibilidad de instalar Sublime Text.
Elastic Beanstalk proporciona opciones de configuración (p. 252) que se pueden usar para personalizar
el software que se ejecuta en las instancias EC2 del entorno de Elastic Beanstalk. Puede configurar las
variables de entorno que necesita la aplicación y habilitar la rotación de registros en Amazon S3. La
plataforma también preestablece algunas variables de entorno comunes relacionadas con Rails y Rack
para facilitar la detección y el uso.
Para guardar la configuración en el código fuente, puede incluir archivos de configuración (p. 320). Los
valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que
implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar
scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.
943
AWS Elastic Beanstalk Developer Guide
Configuración del entorno de Ruby
Si utiliza RubyGems, puede incluir un archivo Gemfile (p. 945) en el paquete de código fuente para
instalar paquetes durante la implementación.
Log Options
La sección Log Options tiene dos valores:
• Instance profile: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de
Amazon S3 asociado con la aplicación.
• Enable log file rotation to Amazon S3 – especifica si los archivos de registro de las instancias EC2 de
Amazon de la aplicación deben copiarse en el bucket de Amazon S3 asociado a la aplicación.
Environment Properties
La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de
configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Las propiedades
del entorno se pasan como pares de clave-valor a la aplicación.
• BUNDLE_WITHOUT: lista de grupos separados por dos puntos que se van a omitir al instalar
dependencias desde un archivo Gemfile.
• RAILS_SKIP_ASSET_COMPILATION: establézcalo en true para omitir la ejecución de rake
assets:precompile durante la implementación.
• RAILS_SKIP_MIGRATIONS: establézcalo en true para omitir la ejecución de rake db:migrate
durante la implementación.
• RACK_ENV: especifique la fase del entorno de Rack. Por ejemplo, development, production o
test.
Dentro del entorno de Ruby que se ejecuta en Elastic Beanstalk, las variables de entorno están accesibles
a través del objeto ENV. Por ejemplo, podría leer una propiedad denominada API_ENDPOINT en una
variable con el siguiente código:
endpoint = ENV['API_ENDPOINT']
944
AWS Elastic Beanstalk Developer Guide
Espacios de nombres de configuración de Ruby
Para obtener más información, consulte Propiedades del entorno y otras opciones del software (p. 236).
La plataforma de Ruby no define ningún espacio de nombres adicional. En su lugar, define propiedades
para el entorno para opciones comunes de Rails y Rack. El siguiente archivo de configuración establece
cada una de las propiedades de entorno definidas en la plataforma y define una propiedad de entorno
adicional llamada LOGGING.
Example .ebextensions/ruby-settings.config
option_settings:
aws:elasticbeanstalk:application:environment:
BUNDLE_WITHOUT: test
RACK_ENV: development
RAILS_SKIP_ASSET_COMPILATION: true
RAILS_SKIP_MIGRATIONS: true
LOGGING: debug
Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además
de los archivos de configuración, también puede definir opciones a través de la consola, configuraciones
guardadas, la CLI de EB o la CLI de AWS. Para obtener más información, consulte Opciones de
configuración (p. 252).
source "https://rubygems.org"
gem 'sinatra'
gem 'json'
gem 'rack-parser'
Cuando hay un archivo Gemfile presente, Elastic Beanstalk ejecuta bundle install para instalar las
dependencias.
Secciones
• Requisitos previos (p. 946)
945
AWS Elastic Beanstalk Developer Guide
Requisitos previos
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Rails requiere Ruby 2.2.2 o posterior. En este tutorial vamos a utilizar Ruby 2.5.1 y la versión de la
plataforma de Elastic Beanstalk correspondiente. Instale Ruby; para ello, siga las instrucciones de
Configuración del entorno de desarrollo de Ruby (p. 941).
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
946
AWS Elastic Beanstalk Developer Guide
Instalación de Rails y generación de un sitio web
que se sitúa delante de la aplicación web, reenvía las solicitudes a esta, administra los recursos
estáticos y genera registros de acceso y errores.
• Grupo de seguridad de la instancia: grupo de seguridad de Amazon EC2 configurado para permitir el
tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente del balanceador
de carga llegue a la instancia EC2 en la que se ejecuta la aplicación web. De forma predeterminada, el
tráfico no está permitido en otros puertos.
• Balanceador de carga: balanceador de carga de Elastic Load Balancing que está configurado para
distribuir solicitudes a las instancias que se ejecutan en la aplicación. Los balanceadores de carga
también permiten que las instancias no estén expuestas directamente a Internet.
• Grupo de seguridad del balanceador de carga: grupo de seguridad de Amazon EC2 configurado para
permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de
Internet llegue al balanceador de carga. De forma predeterminada, el tráfico no está permitido en otros
puertos.
• Grupo de Auto Scaling: grupo de Auto Scaling que está configurado para reemplazar una instancia si
termina o deja de estar disponible.
• Bucket de Amazon S3: ubicación de almacenamiento para el código fuente, los registros y otros
artefactos que se crean al utilizar Elastic Beanstalk.
• Alarmas de Amazon CloudWatch: dos alarmas de CloudWatch que monitorizan la carga de las
instancias del entorno y que se activan si la carga es demasiado alta o demasiado baja. Cuando se
activa una alarma, en respuesta, el grupo de Auto Scaling aumenta o reduce los recursos.
• Pila de AWS CloudFormation: Elastic Beanstalk utiliza AWS CloudFormation para lanzar los recursos
del entorno y propagar los cambios de configuración. Los recursos se definen en una plantilla que puede
verse en la consola de AWS CloudFormation.
• Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato
subdominio.region.elasticbeanstalk.com.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
~$ rails --version
Rails 5.2.0
Utilice rails new con el nombre de la aplicación para crear un nuevo proyecto de Rails.
947
AWS Elastic Beanstalk Developer Guide
Instalación de Rails y generación de un sitio web
Rails crea un directorio con el nombre especificado, genera todos los archivos necesarios para ejecutar
localmente un proyecto de ejemplo y, a continuación, ejecuta bundler para instalar todas las dependencias
(Gems) definidas en el Gemfile del proyecto.
~$ cd eb-rails
eb-rails $ rails server
=> Booting Puma
=> Rails 5.2.0 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl+C to stop
...
En esta página solo es visible en el modo de desarrollo. Agregue contenido a la página de inicio de la
aplicación para admitir la implementación de producción en Elastic Beanstalk. Use rails generate para
crear un controlador, una ruta y una vista para la página de bienvenida.
948
AWS Elastic Beanstalk Developer Guide
Configuración de los ajustes de Rails
create app/controllers/welcome_page_controller.rb
route get 'welcome_page/welcome'
invoke erb
create app/views/welcome_page
create app/views/welcome_page/welcome.html.erb
invoke test_unit
create test/controllers/welcome_page_controller_test.rb
invoke helper
create app/helpers/welcome_page_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/welcome_page.coffee
invoke scss
create app/assets/stylesheets/welcome_page.scss.
Con esto dispondrá de todo lo necesario para obtener acceso a la página en /welcome_page/welcome.
Sin embargo, antes de publicar los cambios, cambie el contenido de la vista y añada una ruta para que
esta página aparezca en el nivel superior del sitio.
Example app/views/welcome_page/welcome.html.erb
<h1>Welcome!</h1>
<p>This is the front page of my first Rails application on Elastic Beanstalk.</p>
Example config/routes.rb
Rails.application.routes.draw do
get 'welcome_page/welcome'
root 'welcome_page#welcome'
Esto indica a Rails que dirija las solicitudes a la raíz del sitio web al método de bienvenida del controlador
de la página de bienvenida, que presenta el contenido en la vista de bienvenida (welcome.html.erb).
Rails utiliza esta propiedad para crear claves. Por lo tanto, debe mantenerla en secreto y no almacenarla
en el control de código fuente en texto no cifrado. En su lugar, debe incorporarla al código de Rails de su
entorno mediante una propiedad de entorno.
949
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
Implementar la aplicación
Cree un paquete de código fuente (p. 64) que contenga los archivos creados por Rails. El comando
siguiente crea un paquete de código fuente denominado rails-default.zip.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Rails en su entorno.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Pasos siguientes
Para obtener más información acerca de Rails, visite rubyonrails.org.
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
950
AWS Elastic Beanstalk Developer Guide
Tutorial: Sinatra
Requisitos previos
En este tutorial, se le presuponen algunos conocimientos sobre las operaciones básicas de Elastic
Beanstalk y la consola de Consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones
que se indican en Introducción al uso de Elastic Beanstalk (p. 3) para lanzara el primer entorno de Elastic
Beanstalk.
Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde
pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema
($) y del nombre del directorio actual, si es aplicable:
En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar
Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.
Sinatra requiere Ruby 1.9 o posterior. En este tutorial vamos a utilizar Ruby 2.5.1 y la versión de la
plataforma de Elastic Beanstalk correspondiente. Instale Ruby; para ello, siga las instrucciones de
Configuración del entorno de desarrollo de Ruby (p. 941).
El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
• Instancia EC2: máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para
ejecutar aplicaciones web en la plataforma que elija.
951
AWS Elastic Beanstalk Developer Guide
Escribir un sitio web de Sinatra básico
que se sitúa delante de la aplicación web, reenvía las solicitudes a esta, administra los recursos
estáticos y genera registros de acceso y errores.
• Grupo de seguridad de la instancia: grupo de seguridad de Amazon EC2 configurado para permitir el
tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente del balanceador
de carga llegue a la instancia EC2 en la que se ejecuta la aplicación web. De forma predeterminada, el
tráfico no está permitido en otros puertos.
• Balanceador de carga: balanceador de carga de Elastic Load Balancing que está configurado para
distribuir solicitudes a las instancias que se ejecutan en la aplicación. Los balanceadores de carga
también permiten que las instancias no estén expuestas directamente a Internet.
• Grupo de seguridad del balanceador de carga: grupo de seguridad de Amazon EC2 configurado para
permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de
Internet llegue al balanceador de carga. De forma predeterminada, el tráfico no está permitido en otros
puertos.
• Grupo de Auto Scaling: grupo de Auto Scaling que está configurado para reemplazar una instancia si
termina o deja de estar disponible.
• Bucket de Amazon S3: ubicación de almacenamiento para el código fuente, los registros y otros
artefactos que se crean al utilizar Elastic Beanstalk.
• Alarmas de Amazon CloudWatch: dos alarmas de CloudWatch que monitorizan la carga de las
instancias del entorno y que se activan si la carga es demasiado alta o demasiado baja. Cuando se
activa una alarma, en respuesta, el grupo de Auto Scaling aumenta o reduce los recursos.
• Pila de AWS CloudFormation: Elastic Beanstalk utiliza AWS CloudFormation para lanzar los recursos
del entorno y propagar los cambios de configuración. Los recursos se definen en una plantilla que puede
verse en la consola de AWS CloudFormation.
• Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato
subdominio.region.elasticbeanstalk.com.
Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk
termina todos los recursos que este contiene.
Note
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se
elimina durante la terminación del entorno. Para obtener más información, consulte Uso de Elastic
Beanstalk con Amazon S3 (p. 559).
Example config.ru
require './helloworld'
run Sinatra::Application
Example helloworld.rb
require 'sinatra'
get '/' do
"Hello World!"
end
952
AWS Elastic Beanstalk Developer Guide
Implementar la aplicación
source 'https://rubygems.org'
gem 'sinatra'
Implementar la aplicación
Cree un paquete de código fuente (p. 64) que contenga los archivos de código fuente. El comando
siguiente crea un paquete de código fuente denominado sinatra-default.zip.
Cargue el paquete de código fuente en Elastic Beanstalk para implementar Sinatra en su entorno.
Eliminación
Cuando ya no necesite utilizar Elastic Beanstalk, puede terminar el entorno. Elastic Beanstalk termina
todos los recursos de AWS asociados con el entorno, como las instancias Amazon EC2 (p. 179), las
instancias de base de datos (p. 227), los balanceadores de carga (p. 193), los grupos de seguridad y las
alarmas (p. ).
Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.
Pasos siguientes
Para obtener más información acerca de Sinatra, visite sinatrarb.com.
Mientras siga desarrollando la aplicación, es probable que desee una forma de administrar los entornos
e implementar su aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la Consola de
953
AWS Elastic Beanstalk Developer Guide
Añadir una base de datos
Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (p. 578) (CLI de EB) proporciona
comandos sencillos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk
desde la línea de comandos.
Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de
dominio personalizado (p. 251) para el entorno y habilitar HTTPS (p. 374) para las conexiones seguras.
Si es la primera vez que utiliza Amazon RDS, añada una instancia de base de datos (p. 954) a un
entorno de prueba con la consola de administración de Elastic Beanstalk y verifique que su aplicación
puede conectarse a ella.
Para conectarse a una base de datos, añada el adaptador (p. 955) a la aplicación y configure una
conexión (p. 955) con las propiedades de entorno proporcionadas por Elastic Beanstalk. La configuración
y el código de conexión varían en función del motor de base de datos y la plataforma que utilice.
En entornos de producción, cree una instancia de base de datos fuera del entorno de Elastic Beanstalk
para desacoplar los recursos del entorno de los recursos de base de datos. El uso de una instancia
de base de datos permite conectarse a la misma base de datos desde varios entornos y llevar a cabo
implementaciones “blue/green” (azul/verde). Para obtener instrucciones, consulte Uso de Elastic Beanstalk
con Amazon Relational Database Service (p. 548).
Secciones
• Añadir una instancia de base de datos al entorno (p. 954)
• Descarga de un adaptador (p. 955)
• Conexión a una base de datos (p. 955)
Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado
la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de
conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno
Etiqueta de la consola de Amazon RDS: Endpoint (Punto de enlace) (es el nombre de host).
954
AWS Elastic Beanstalk Developer Guide
Descarga de un adaptador
• RDS_PORT: el puerto en que la instancia de base de datos acepta las conexiones. El valor
predeterminado varía dependiendo del motor de base de datos.
Para obtener más información sobre cómo configurar una instancia de base de datos interna, consulte
Añadir una base de datos al entorno de Elastic Beanstalk (p. 227).
Descarga de un adaptador
Añada el adaptador de base de datos al archivo gem (p. 945) del proyecto.
source 'https://rubygems.org'
gem 'puma'
gem 'rails', '4.1.8'
gem 'mysql2'
• MySQL: mysql2
• PostgreSQL: pg
• Oracle: activerecord-oracle_enhanced-adapter
• SQL Server: sql_server
production:
adapter: mysql2
encoding: utf8
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
955
AWS Elastic Beanstalk Developer Guide
Conectividad
Solución de problemas
En este capítulo se proporciona una tabla con los problemas de Elastic Beanstalk más comunes y sus
soluciones. Los mensajes de error pueden aparecer como eventos en el panel del entorno de la consola,
en los logs o en la página de estado.
• Revise los eventos (p. 454) recientes del entorno. Los mensajes de Elastic Beanstalk sobre los
problemas de implementación, carga y configuración suelen aparecer aquí.
• Obtenga los logs (p. 457) para las ver las entradas recientes de los archivos log. Los logs del servidor
web contienen información sobre solicitudes entrantes y errores.
• Conéctese a una instancia (p. 455) y compruebe los recursos del sistema.
• Restaure (p. 130) una versión operativa anterior de la aplicación.
• Deshaga los últimos cambios de configuración o restaure una configuración guardada (p. 257).
• Implemente un nuevo entorno. Si parece que está en buen estado, realice un intercambio de
CNAME (p. 136) para dirigir el tráfico al nuevo entorno y siga depurando el anterior.
Temas
• Conectividad (p. 956)
• Creación del entorno y lanzamiento de instancias (p. 957)
• Implementaciones (p. 957)
• Estado (p. 957)
• Configuración (p. 958)
• Solución de problemas con contenedores de Docker (p. 958)
• Preguntas frecuentes (p. 959)
Conectividad
Problema: no se puede conectar con Amazon RDS desde Elastic Beanstalk.
• Asegúrese de que RDS está en la misma región que su aplicación de Elastic Beanstalk.
• Asegúrese de que el grupo de seguridad de RDS de la instancia tiene autorización para el grupo
de seguridad de Amazon EC2 que está utilizando en su entorno de Elastic Beanstalk. Para obtener
instrucciones acerca de cómo encontrar el nombre del grupo de seguridad de EC2 a través de la consola
de administración de AWS, consulte Grupos de seguridad (p. 182). Para obtener más información sobre
la configuración del grupo de seguridad de EC2, consulte la sección "Authorizing Network Access to an
Amazon EC2 Security Group" de Working with DB Security Groups en la Amazon Relational Database
Service User Guide.
• Para Java, asegúrese de que el archivo JAR de MySQL está en su WEB-INF/lib. Consulte Añadir una
instancia de base de datos de Amazon RDS a un entorno de aplicaciones Java (p. 737) para obtener
más detalles.
Problema: los servidores que se han creado en la Consola de administración de AWS no aparecen en
Toolkit for Eclipse
956
AWS Elastic Beanstalk Developer Guide
Creación del entorno
Puede importar manualmente los servidores siguiendo las instrucciones de Importación de entornos
existente en Eclipse (p. 743).
Este evento se produce cuando Elastic Beanstalk intenta lanzar un entorno y encuentra errores en el
proceso. Los eventos anteriores de la página Events (Eventos) le indicarán la causa del problema.
Evento: operación de crear entorno completa, pero con tiempos de espera de comandos. Try increasing
the timeout period.
Su aplicación puede tardar mucho tiempo en implementarse si utiliza archivos de configuración que
ejecutan comandos en la instancia, descargan archivos grandes o instalan paquetes. Aumente el tiempo
de espera de los comandos (p. 133) para dar más tiempo a la aplicación para que empiece a ejecutarse
durante las implementaciones.
Este mensaje indica que las instancias Amazon EC2 del entorno no comunicaron a Elastic Beanstalk
que se implementaron correctamente. Esto puede ocurrir si las instancias no disponen de conectividad a
Internet. Si configuró el entorno para lanzar las instancias en una subred de VPC privada, asegúrese de
que la subred tiene un NAT (p. 562) que permita que las instancias se conecten a Elastic Beanstalk.
Evento: se requiere un rol de servicio en esta región. Please add a Service Role option to the environment.
Elastic Beanstalk utiliza un rol de servicio para monitorizar los recursos del entorno y permitir las
actualizaciones administradas de la plataforma (p. 154). Para obtener más información, consulte
Administración de roles de servicio de Elastic Beanstalk (p. 491).
Implementaciones
Problema: la aplicación deja de estar disponible durante las implementaciones
Como Elastic Beanstalk utiliza un proceso de actualización "drop-in", podría haber algunos segundos
de inactividad. Utilice las implementaciones continuas (p. 132) para minimizar el efecto de las
implementaciones en los entornos de producción.
Puede que el paquete de código fuente de la aplicación sea demasiado grande o que haya alcanzado el
límite de versiones de la aplicación (p. 54).
Evento: operación de actualización de entorno completa, pero con tiempo de espera de los comandos. Try
increasing the timeout period.
Su aplicación puede tardar mucho tiempo en implementarse si utiliza archivos de configuración que
ejecutan comandos en la instancia, descargan archivos grandes o instalan paquetes. Aumente el tiempo
de espera de los comandos (p. 133) para dar más tiempo a la aplicación para que empiece a ejecutarse
durante las implementaciones.
Estado
Evento: el uso de la CPU supera el 95,00 %
957
AWS Elastic Beanstalk Developer Guide
Configuración
Intente ejecutar más instancias (p. 183) o elija un tipo de instancia distinto (p. 179).
Evento: Elastic Load Balancer awseb-myapp no tiene ninguna instancia con un estado correcto
Es posible que el balanceador de carga del entorno se haya quedado sin conexión. Realice únicamente
cambios en los recursos del entorno con las opciones de configuración y extensibilidad (p. 320)
proporcionadas por Elastic Beanstalk. Vuelva a crear el entorno o lance uno nuevo.
Evento: error al lanzar una instancia EC2. A la espera de que se lance una nueva instancia EC2...
Es posible que el tipo de instancia del entorno tenga poca disponibilidad o que se haya alcanzado el límite
de instancias de la cuenta. Consulte el Panel de estado del servicio para asegurarse de que el servicio
Compute Cloud (Amazon EC2) aparece de color verde o para solicitar un aumento del límite.
Configuración
Evento: no puede configurar un entorno de Elastic Beanstalk con valores para la opción Elastic Load
Balancing Target y la opción Application Healthcheck URL
Este mensaje puede aparecer si intenta mover un balanceador de carga entre subredes de la misma zona
de disponibilidad. Para cambiar las subredes del balanceador, debe sacar el balanceador de carga de
la zona o zonas de disponibilidad originales y volver a incluirlo con las subredes deseadas. Durante el
proceso, todas las instancias se migran de una zona de disponibilidad a otra, lo que causa tiempos de
inactividad importantes. En lugar de ello, considere la posibilidad de crear un nuevo entorno y realizar un
intercambio de CNAME (p. 136).
Marque la sintaxis del archivo dockerrun.aws.json con un validador JSON. Compruebe también
si el contenido de dockerfile se ajusta a los requisitos descritos en Configuración de Docker de un solo
contenedor (p. 673).
958
AWS Elastic Beanstalk Developer Guide
Preguntas frecuentes
dockerrun.aws.json proporciona un par de claves de EC2 y/o un bucket de S3 que no son válidos para
el archivo .dockercfg. También es posible que el perfil de instancia no tenga autorización de GetObject
para el bucket de S3. Compruebe que el archivo .dockercfg contiene un bucket de S3 y un par de
claves EC2 que son válidos. Conceda permisos para la acción s3:GetObject al rol de IAM en el perfil
de instancia. Para obtener más información, consulte Administración de perfiles de instancias de Elastic
Beanstalk (p. 486).
Preguntas frecuentes
Pregunta: ¿Cómo puedo cambiar la URL de mi aplicación de myapp.us-west-2.elasticbeanstalk.com a
www.myapp.com?
Pregunta: ¿Cómo puedo especificar una zona de disponibilidad específica para mi aplicación de Elastic
Beanstalk?
Puede elegir zonas de disponibilidad específicas mediante las API, la CLI, el complemento de Eclipse o el
complemento de Visual Studio. Para obtener instrucciones sobre cómo usar la Consola de administración
de AWS para especificar una zona de disponibilidad, consulte Grupo de Auto Scaling para el entorno de
AWS Elastic Beanstalk (p. 183).
Pregunta: ¿Puedo impedir que los volúmenes de Amazon EBS se eliminen cuando se terminan las
instancias?
Las instancias de su entorno utilizan Amazon EBS para el almacenamiento; sin embargo, el volumen raíz
se elimina cuando Auto Scaling termina una instancia. No se recomienda almacenar el estado u otros
datos de sus instancias. Si es necesario, puede evitar que se eliminen los volúmenes con la AWS CLI: $
aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false tal y como se describe
en la Referencia de la AWS CLI.
Los recursos de AWS que usa la aplicación Elastic Beanstalk pueden almacenar información personal.
Cuando termina un entorno, Elastic Beanstalk termina los recursos que creó. También se terminan
los recursos que agregó a través de los archivos de configuración (p. 320). Sin embargo, si creó los
recursos de AWS fuera de su entorno de Elastic Beanstalk y los asoció con la aplicación, puede que deba
asegurarse manualmente de que no se retenga innecesariamente la información personal que pueda
haber almacenado la aplicación. En esta guía para desarrolladores, siempre que se explica la creación de
recursos adicionales, también mencionamos cuándo debe considerar eliminarlos.
959
AWS Elastic Beanstalk Developer Guide
Aplicaciones de ejemplo
• Elastic Beanstalk API Reference: exhaustiva descripción de todas las API de SOAP y de consulta.
Además, contiene una lista de todos los tipos de datos de SOAP.
• Código de ejemplo y bibliotecas de Elastic Beanstalk: enlace a la herramienta de línea de comando junto
con una aplicación web Java de ejemplo. Consulte los enlaces siguientes para ver otras aplicaciones de
ejemplo.
• elastic-beanstalk-samples en GitHub: un repositorio de GitHub con archivos de configuración de Elastic
Beanstalk de ejemplo (.ebextensions). El archivo README.md del repositorio tiene enlaces a otros
repositorios de GitHub con aplicaciones de ejemplo.
• Preguntas frecuentes técnicas sobre Elastic Beanstalk: las principales preguntas realizadas por los
desarrolladores acerca de este producto.
• Notas de la versión de AWS Elastic Beanstalk: detalles sobre las nuevas características, actualizaciones
y correcciones del servicio, la plataforma, la consola y las versiones de la CLI de EB de Elastic
Beanstalk.
Aplicaciones de ejemplo
A continuación, se incluyen enlaces para descargar aplicaciones de ejemplo que se implementan como
parte de Introducción al uso de Elastic Beanstalk (p. 3).
Note
Es posible que, en algunos ejemplos, se utilicen características que podrían haberse publicado
después del lanzamiento de la plataforma que está utilizando. Si el ejemplo no puede ejecutarse
correctamente, intente actualizar la plataforma a una versión reciente, tal y como se describe en
the section called “Plataformas compatibles” (p. 32).
960
AWS Elastic Beanstalk Developer Guide
Aplicaciones de ejemplo
961
AWS Elastic Beanstalk Developer Guide
Historial de la plataforma
El historial de AWS Elastic Beanstalk se ha movido. ConsulteHistorial de la plataforma en el documento
Plataformas de AWS Elastic Beanstalk.
962