

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Comprensión de los conceptos de Elastic Beanstalk
<a name="concepts"></a>

Familiarizarse con los conceptos y términos le servirá para obtener los conocimientos necesarios para implementar sus aplicaciones con Elastic Beanstalk.

![\[Diagrama ilustrativo que muestra la relación entre una aplicación de Elastic web/worker Beanstalk y los entornos.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/aeb-overview.png)


## Aplicación
<a name="concepts-application"></a>

Una *aplicación* de Elastic Beanstalk es un contenedor de componentes de Elastic Beanstalk, que incluye *entornos*, *versiones* y *configuraciones de entorno*. Dentro de una aplicación de Elastic Beanstalk, usted administra todos los recursos relevantes para ejecutar el código.

## Versión de la aplicación
<a name="concepts-version"></a>

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. Por ejemplo, también podría cargar varias versiones de la aplicación para evaluar las diferencias entre ellas.

## Entorno
<a name="concepts-environment"></a>

Un *entorno* es un conjunto de AWS recursos que ejecutan una versión de una 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. Al crear un entorno, Elastic Beanstalk aprovisiona los recursos necesarios AWS en su cuenta para ejecutar la versión de la aplicación que especificó.

## Nivel de entorno
<a name="concepts-tier"></a>

Cuando inicie un entorno de Elastic Beanstalk, primero elija un nivel de entorno. La capa del entorno designa el tipo de aplicación que ejecuta el entorno y determina qué recursos aprovisiona Elastic Beanstalk para admitirla. Una aplicación que atiende solicitudes HTTP se ejecuta en una [capa del entorno de servidor web](concepts-webserver.md). Un entorno backend que extrae tareas de Amazon Simple Queue Service (Amazon SQS) se ejecuta en un [nivel de entorno de trabajo](concepts-worker.md).

## Configuración del entorno
<a name="concepts-environmentconfig"></a>

 Una *configuración del entorno* identifica una serie de parámetros y opciones de configuración que determinan cómo se comporta un entorno y sus recursos asociados. Cuando se actualiza una opción de 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
<a name="concepts-configuration"></a>

Una *configuración guardada* es una plantilla que puede utilizar como punto de partida para crear configuraciones de entorno únicas. Puede crear y modificar las configuraciones guardadas y aplicarlas a los entornos mediante la consola de Elastic Beanstalk, la AWS CLI CLI de EB o la API. *La API y la AWS CLI hacen referencia a las configuraciones guardadas como plantillas de configuración.*

## Plataforma
<a name="concepts-platform"></a>

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. Usted diseña y orienta su aplicación web a una plataforma. Elastic Beanstalk proporciona una variedad de plataformas en las que puede crear sus aplicaciones.

Para obtener información, consulte [Plataformas Elastic Beanstalk](concepts-all-platforms.md).

# Entornos del servidor web de Elastic Beanstalk
<a name="concepts-webserver"></a>

En el diagrama siguiente se muestra un ejemplo de arquitectura de Elastic Beanstalk para un nivel de entorno de servidor web y se muestra cómo interactúan los componentes de ese tipo de entorno.

![\[AWS Elastic Beanstalk diagrama de arquitectura de niveles de servidor web.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/aeb-architecture2.png)


El entorno es la piedra angular de la aplicación. En el diagrama, el entorno se muestra en la línea continua de nivel superior. Al crear un entorno, Elastic Beanstalk aprovisiona los recursos necesarios para ejecutar la aplicación. AWS Los recursos creados para un entorno incluyen un balanceador de carga elástico (ELB en el diagrama), un grupo de Auto Scaling y una o más instancias de Amazon Elastic Compute Cloud EC2 (Amazon).

Todos los entornos tienen un CNAME (URL) que apunta a un equilibrador de carga. El entorno tiene una URL; por ejemplo, `myapp.us-west-2.elasticbeanstalk.com`. Esta URL tiene alias en [Amazon Route 53](https://aws.amazon.com/route53/) a una URL de Elastic Load Balancing, algo así como, `abcdef-123456.us-west-2.elb.amazonaws.com` mediante un registro CNAME. [Amazon Route 53](https://aws.amazon.com/route53/) es un servicio web de sistema de nombres de dominio (DNS) 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 frente a las EC2 instancias de Amazon, que forman parte de un grupo de Auto Scaling. Amazon EC2 Auto Scaling inicia automáticamente EC2 instancias de Amazon adicionales para adaptarse al aumento de la carga de la aplicación. Si la carga de la aplicación disminuye, Amazon EC2 Auto Scaling detiene las instancias, pero siempre deja al menos una instancia en ejecución. 

La pila de software que se ejecuta en las EC2 instancias de Amazon 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 Elastic Beanstalk](concepts.platforms.md). Cada EC2 instancia de Amazon que ejecuta tu aplicación utiliza uno de estos tipos de contenedores. Además, en cada EC2 instancia de Amazon se ejecuta un componente de software denominado *administrador de 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
+ Supervisión de los archivos log de la aplicación en busca de errores críticos
+ Supervisión de el servidor de aplicaciones
+ Instalar parches en los componentes de la instancia
+ Rotar los archivos log de la aplicación y publicarlos en Amazon S3

El administrador del host informa de las métricas, los errores y los eventos, y del estado de la instancia del servidor, que están disponibles a través de la consola de Elastic APIs Beanstalk, y. CLIs

Las EC2 instancias de Amazon 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. Para obtener más información sobre los grupos EC2 de seguridad de Amazon y cómo configurarlos para la aplicación Elastic Beanstalk, consulte. [EC2 grupos de seguridad](using-features.managing.ec2.console.md#using-features.managing.ec2.securitygroups)

# Entornos de trabajo de Elastic Beanstalk
<a name="concepts-worker"></a>

AWS Los recursos creados para un nivel de entorno de trabajo incluyen un grupo de Auto Scaling, una o más EC2 instancias de Amazon 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. Al lanzar un entorno de trabajo, Elastic Beanstalk instala los archivos de soporte necesarios para el lenguaje de programación que prefiera y un daemon en cada EC2 instancia del grupo Auto Scaling. El daemon lee mensajes de una cola de Amazon SQS. El daemon 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 daemon, pero todas consultarán la misma cola de Amazon SQS.

El siguiente diagrama muestra los distintos componentes y sus interacciones en los entornos y servicios. AWS 

![\[AWS Elastic Beanstalk diagrama de arquitectura por niveles de trabajo.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/aeb-architecture_worker.png)


Amazon CloudWatch se usa para alarmas y monitoreo de salud. Para obtener más información, consulte [Informes de estado básicos](using-features.healthstatus.md).

Para obtener más información acerca de cómo funciona el nivel de entorno de trabajo, consulte [Entornos de trabajo de Elastic Beanstalk](using-features-managing-env-tiers.md).

# Consideraciones de diseño para sus aplicaciones de Elastic Beanstalk
<a name="concepts.concepts.design"></a>

*Dado que las aplicaciones que se implementan utilizando Nube de AWS recursos se AWS Elastic Beanstalk ejecutan con recursos, debe tener en cuenta varios factores de configuración para optimizarlas: *escalabilidad*, *seguridad*, *almacenamiento persistente*, *tolerancia* a errores, *entrega de contenido*, *actualizaciones y parches de software* y conectividad.* Cada uno de ellos se trata por separado en este tema. Para obtener una lista completa de AWS documentos técnicos, que abarcan temas como la arquitectura, así como la seguridad y la economía, consulte los documentos técnicos sobre computación [AWS en nube](https://aws.amazon.com/whitepapers/). 

## Escalabilidad
<a name="concepts.concepts.design.scalability"></a>

Al operar en un entorno de hardware físico, a diferencia de lo que ocurre con un entorno en la nube, se puede enfocar la escalabilidad de una de estas dos maneras. Se puede escalar mediante el escalado vertical o el escalado horizontal. El enfoque de escalado vertical requiere que se invierta en un hardware potente, que pueda soportar las crecientes demandas de su empresa. El enfoque de escalado horizontal requiere que se siga un modelo de inversión distribuido. Por lo tanto, las adquisiciones de hardware y aplicaciones se podrán orientar mejor, los conjuntos de datos estarán federados y el diseño estará orientado a los servicios. El enfoque de escalado vertical puede ser costoso y existe el riesgo de que la demanda sea mayor que la capacidad. En este sentido, el enfoque de escalado horizontal suele ser más eficaz. Sin embargo, al usarlo, se debe ser capaz de predecir la demanda a intervalos regulares e implementar la infraestructura en fragmentos para satisfacer esa demanda. Por lo tanto, a menudo este enfoque puede dar lugar a que no se utilice la capacidad y podría requerir una supervisión pormenorizada.

Al migrar a la nube, puede hacer que su infraestructura se ajuste mejor a la demanda aprovechando la elasticidad de la nube. La elasticidad ayuda a agilizar la adquisición y liberación de recursos. Con él, su infraestructura se puede reducir y escalar horizontalmente según fluctúe la demanda. Para utilizarlo, configure los ajustes de escalado automático para aumentar o disminuir el escalado en función de las métricas de los recursos del entorno. Por ejemplo, puedes configurar métricas (como la utilización del servidor o la redI/O. You can use Auto Scaling for compute capacity to be added automatically whenever usage rises and for it to be removed whenever usage drops. You can publish system metrics (for example, CPU, memory, disk I/O, and network I/O) para Amazon CloudWatch. Luego, puede configurar alarmas CloudWatch para activar acciones de Auto Scaling o enviar notificaciones en función de estas métricas. Para obtener instrucciones sobre cómo configurar escalado automático, consulte [Escalado automático de las instancias del entorno de Elastic Beanstalk](using-features.managing.as.md).

También recomendamos que, en la medida de lo posible, diseñe todas las aplicaciones de Elastic Beanstalk *sin estado*, utilizando 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 AWS, consulte [https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html) Framework.

## Seguridad
<a name="concepts.concepts.design.security"></a>

[La seguridad AWS es una responsabilidad compartida.](https://aws.amazon.com/compliance/shared-responsibility-model/) Amazon Web Services 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.

Configure SSL para proteger el flujo de información entre la aplicación y los clientes. Para configurar SSL, necesita un certificado gratuito de AWS Certificate Manager (ACM). Si ya tiene un certificado expedido por una entidad de certificación (CA) externa, puede utilizar ACM para importar ese certificado. De lo contrario, puede importarlo mediante AWS CLI.

Si el ACM no está [disponible en su Región de AWS](https://docs.aws.amazon.com/general/latest/gr/acm.html) ordenador, puede comprar un certificado de una entidad emisora de certificados externa, como VeriSign Entrust. A continuación, utilice AWS Command Line Interface (AWS CLI) para cargar un certificado autofirmado o de terceros y una clave privada a 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 sobre cómo crear, cargar y asignar un certificado SSL para el entorno, consulte [Configuración de HTTPS para su entorno de Elastic Beanstalk](configuring-https.md).

Cuando configura un certificado SSL para el entorno, los datos se cifran entre el cliente y el equilibrador de carga de Elastic Load Balancing para el entorno. De forma predeterminada, el cifrado finaliza en el balanceador de cargas y el tráfico entre el balanceador de cargas y las EC2 instancias de Amazon no está cifrado.

## Almacenamiento persistente
<a name="concepts.concepts.design.storage"></a>

Las aplicaciones de Elastic Beanstalk se ejecutan EC2 en instancias de Amazon que no tienen almacenamiento local persistente. Cuando las EC2 instancias de Amazon finalizan, el sistema de archivos local no se guarda. Las nuevas EC2 instancias de Amazon comienzan con un sistema de archivos predeterminado. Le recomendamos que configure la aplicación para almacenar datos en una fuente de datos persistente. AWS ofrece una serie de servicios de almacenamiento persistente que puede utilizar con su aplicación. En la siguiente tabla se enumeran.


| Servicio de almacenamiento | Documentación de servicio | Integración de Elastic Beanstalk | 
| --- | --- | --- | 
| [Amazon S3](https://aws.amazon.com/s3/) | [Documentación sobre Amazon Simple Storage Service](https://aws.amazon.com/documentation/s3/) | [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md) | 
| [Amazon Elastic File System](https://aws.amazon.com/efs/) | [Documentación de Amazon Elastic File System](https://aws.amazon.com/documentation/efs/) | [Uso de Elastic Beanstalk con Amazon Elastic File System](services-efs.md) | 
| [Amazon Elastic Block Store](https://aws.amazon.com/ebs/) |  [Amazon Elastic Block Store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) [Feature Guide: Elastic Block Store](https://aws.amazon.com/articles/1667)  |  | 
| [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) | [Documentación sobre Amazon DynamoDB](https://aws.amazon.com/documentation/dynamodb/) | [Uso de Elastic Beanstalk con Amazon DynamoDB](AWSHowTo.dynamoDB.md) | 
| [Amazon Relational Database Service (RDS)](https://aws.amazon.com/rds/) | [Documentación sobre Amazon Relational Database Service](https://aws.amazon.com/documentation/rds/) | [Uso de Elastic Beanstalk con Amazon RDS](AWSHowTo.RDS.md) | 

**nota**  
Elastic Beanstalk *crea* un usuario de aplicación web para que lo configure como propietario de los directorios de aplicaciones en las instancias. EC2 En el caso de las versiones de la plataforma Amazon Linux 2 que se publiquen a partir del [3 de febrero de 2022](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-02-03-linux.html#release-2022-02-03-linux.changes), Elastic Beanstalk asigna al usuario *webapp* un valor uid (id de usuario) y gid (id de grupo) de 900 para los nuevos entornos. Hace lo mismo con los entornos existentes tras una actualización de la versión de la plataforma. Este enfoque mantiene un permiso de acceso consistente para el usuario *webapp* al almacenamiento permanente del sistema de archivos.  
En la improbable situación de que otro usuario o proceso ya esté utilizando 900, el sistema operativo establece de forma predeterminada el uid y gid del usuario *webapp* en otro valor. *Ejecute el comando de Linux **id webapp** en las EC2 instancias para comprobar los valores uid y gid que se asignan al usuario de la aplicación web.*

## Tolerancia a errores
<a name="concepts.concepts.design.faulttolerance"></a>

Por lo general, conviene adoptar una actitud pesimista al diseñar la arquitectura de la nube. Aproveche la elasticidad que ofrece. 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 sus EC2 instancias de Amazon y para 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 visibilidad del estado de su aplicación de Elastic Beanstalk y tome las medidas adecuadas en caso de que se produzca un fallo de hardware o una degradación del rendimiento. Configure los ajustes de Auto Scaling para mantener su flota de EC2 instancias de Amazon en un tamaño fijo, de modo que las EC2 instancias de Amazon 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
<a name="concepts.concepts.design.cloudfront"></a>

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 podrían experimentar un rendimiento deficiente debido a una elevada latencia. Amazon CloudFront puede ayudar a reducir los problemas de latencia mediante la distribución del contenido web, como imágenes y vídeos, en una red de ubicaciones periféricas de todo el mundo. Las solicitudes de los usuarios se dirigen a la ubicación perimetral más cercana, por lo que el contenido se entrega con el mejor rendimiento posible. CloudFront funciona a la perfección 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, consulta la [Guía para CloudFront desarrolladores de Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html). 

## Actualizaciones de software y parches
<a name="concepts.concepts.design.updates"></a>

AWS Elastic Beanstalk publica periódicamente [actualizaciones de la plataforma](using-features.platform.upgrade.md) para proporcionar correcciones, actualizaciones de software y nuevas funciones. Elastic Beanstalk ofrece varias opciones para administrar las actualizaciones de la plataforma. Con las [actualizaciones de plataforma administradas](environment-platform-update-managed.md), el entorno se actualiza automáticamente a la última versión de una plataforma durante un periodo de mantenimiento programado mientras la aplicación sigue en servicio. Para los entornos que se crearon el 25 de noviembre de 2019 o con posterioridad a través de la consola de Elastic Beanstalk, de forma predeterminada y siempre que sea posible, las actualizaciones administradas están habilitadas. También puede iniciar manualmente las actualizaciones utilizando la consola de Elastic Beanstalk o la CLI de EB. 

## Conectividad
<a name="concepts.concepts.design.connectivity"></a>

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 ninguna configuración adicional. Esto se debe a que, en estos entornos, Elastic Beanstalk asigna a EC2 cada instancia de Amazon una dirección IP elástica pública que permite a la instancia comunicarse directamente con Internet.
+ En el caso de los entornos escalables con balanceo de carga de una Amazon VPC donde hay subredes públicas y privadas, debe hacer lo siguiente: 
  + Crea un balanceador de carga en la subred pública para enrutar el tráfico entrante de Internet a las instancias de Amazon. EC2 
  + Cree un dispositivo de traducción de direcciones de red (NAT) para enrutar el tráfico saliente de las EC2 instancias de Amazon en subredes privadas a Internet.
  + Crea reglas de enrutamiento de entrada y salida para las EC2 instancias de Amazon dentro de la subred privada.
  + Si utiliza una instancia de NAT, configure los grupos de seguridad de la instancia de NAT y de las EC2 instancias de Amazon para habilitar la comunicación por Internet.
+ Si se trata de un entorno con balanceo de carga y escalable en una Amazon VPC que solo tiene una subred pública, no se requiere ninguna configuración adicional. Esto se debe a que, con este entorno, EC2 las instancias de Amazon se configuran con una dirección IP pública que permite que las instancias se comuniquen con Internet.

Para obtener más información sobre el uso de Elastic Beanstalk con Amazon VPC, consulte [Uso de Elastic Beanstalk con Amazon VPC](vpc.md).