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.
Implementar una aplicación agrupada en Amazon ECS con AWS Copilot
Creado por Jean-Baptiste Guillois (AWS), Mathew George (AWS) y Thomas Scott (AWS)
Resumen
Este patrón muestra cómo implementar contenedores en un clúster de Amazon Elastic Container Service (Amazon ECS) de dos maneras: mediante la consola de administración de Amazon Web Services (AWS) y mediante AWS Copilot, para demostrar cómo AWS Copilot simplifica las tareas de implementación.
Amazon ECS es un servicio de administración de contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y administrar contenedores en un clúster. Los contenedores se definen en una definición de tareas que se utiliza para ejecutar tareas individuales o tareas dentro de un servicio. Las tareas y los servicios se pueden ejecutar en una infraestructura sin servidor administrada por AWS Fargate. Como alternativa, para tener más control sobre su infraestructura, puede ejecutar sus tareas y servicios en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) que administre.
Los comandos de la interfaz de la línea de comandos (CLI) de AWS Copilot simplifican la creación, el lanzamiento y el uso de aplicaciones en contenedores listas para producción en Amazon ECS desde un entorno de desarrollo local. La CLI de AWS Copilot se alinea con los flujos de trabajo de los desarrolladores que admiten prácticas recomendadas de aplicaciones modernas: desde la utilización de infraestructura como código hasta la creación de una canalización de integración y entrega continuas (CI/CD) aprovisionada en nombre de un usuario. Puede utilizar la CLI de AWS Copilot como parte de su ciclo cotidiano de desarrollo y prueba o como alternativa a la Consola de administración de AWS.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada localmente para usar su cuenta de AWS (consulte las instrucciones de instalación y las instrucciones de configuración en la documentación de la CLI de AWS)
AWS Copilot instalado localmente (consulte las instrucciones de instalación en la documentación de Amazon ECS)
Docker instalado en su máquina local (consulte la documentación de Docker
)
Limitaciones
En el plan gratuito, Docker impone un límite de extracción de 100 imágenes de contenedor por cada 6 horas por dirección IP.
Arquitectura
Pila de tecnología de destino
Entorno de AWS configurado con una nube privada virtual (VPC), subredes públicas y privadas y grupos de seguridad
Clúster de Amazon ECS
Definición de tareas y servicios de Amazon ECS
Amazon Elastic Container Registry (Amazon ECR)
Amazon DynamoDB
Equilibrador de carga de aplicación
AWS Fargate
Amazon Identity and Access Management (IAM)
Amazon CloudWatch
AWS CloudTrail
Arquitectura de destino
Al implementar la aplicación de muestra para este patrón, se crean e implementan varias tareas en zonas de disponibilidad independientes. Cada tarea almacena datos en Amazon DynamoDB. Al acceder a la página web de una tarea, puede ver los datos de todas las demás tareas.

Herramientas
Servicios de AWS
Amazon ECR : Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado por AWS que es seguro, escalable y fiable. Amazon ECR admite repositorios privados con permisos basados en recursos mediante IAM.
Amazon ECS: Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores altamente escalable y rápido que permite ejecutar, detener y administrar contenedores en un clúster. Las tareas y los servicios se pueden ejecutar en una infraestructura sin servidor administrada por AWS Fargate. Como alternativa, para tener más control sobre su infraestructura, puede ejecutar sus tareas y servicios en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) que administre.
AWS Copilot: AWS Copilot proporciona una interfaz de la línea de comandos que le ayuda a lanzar y administrar aplicaciones en contenedores en AWS, incluyendo su envío a un registro, la creación de una definición de tarea y la creación de un clúster.
AWS Fargate: AWS Fargate es un motor de pay-as-you-go cómputo sin servidor que le permite centrarse en crear aplicaciones sin tener que administrar servidores. AWS Fargate es compatible tanto con Amazon ECS como con Amazon Elastic Kubernetes Service (Amazon EKS). Al ejecutar las tareas y los servicios de Amazon ECS con el tipo de lanzamiento de Fargate o un proveedor de capacidad de Fargate, la aplicación se empaqueta en contenedores, se especifican los requisitos de CPU y de memoria, se definen las políticas de IAM y las redes, y se lanza la aplicación. Cada tarea de Fargate tiene su propio límite de aislamiento y no comparte el kernel subyacente, los recursos de CPU, los recursos de memoria ni la interfaz de red elástica con otra tarea.
Amazon DynamoDB: Amazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como una perfecta escalabilidad.
Elastic Load Balancing (ELB): Elastic Load Balancing distribuye automáticamente el tráfico entrante entre varios destinos, como EC2 instancias, contenedores y direcciones IP, en una o más zonas de disponibilidad. Monitorea el estado de los destinos registrados y enruta el tráfico solamente a destinos en buen estado. Elastic Load Balancing escala el equilibrador de carga a medida que el tráfico entrante va cambiando con el tiempo. Puede escalarse automáticamente para adaptarse a la mayoría de las cargas de trabajo.
Herramientas
Código
El código de la aplicación de muestra utilizada en este patrón está disponible en el repositorio GitHub de aplicaciones de muestra de clúster
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clona el GitHub repositorio. | Clone el repositorio de código de muestra mediante el comando:
| Desarrollador de aplicaciones, AWS DevOps |
Crear su repositorio de Amazon ECR. |
Para obtener más información, consulte Creación de un repositorio privado en la documentación de Amazon ECR. | Desarrollador de aplicaciones, AWS DevOps |
Crear, etiquetar y enviar una imagen de Docker a su repositorio de Amazon ECR. |
Para autenticar su cliente de Docker en el registro:
Para compilar su imagen de Docker:
Para etiquetar su imagen de Docker:
Para enviar su imagen de Docker a su repositorio:
| Desarrollador de aplicaciones, AWS DevOps |
Implementar la pila de aplicaciones. |
Para obtener más información sobre la implementación de CloudFormation plantillas, consulte Crear una pila en la CloudFormation documentación de AWS. | AWS DevOps, desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clona el GitHub repositorio. | Clone el repositorio de código de muestra mediante el comando:
| Desarrollador de aplicaciones, AWS DevOps |
Implementar la imagen de contenedor en AWS mediante la CLI de AWS Copilot. | Implemente la aplicación en un solo paso mediante el siguiente comando en el directorio raíz de su proyecto:
A continuación, debería poder acceder a la aplicación mediante el nombre de DNS obtenido como resultado. | Desarrollador de aplicaciones, AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Eliminar los recursos creados a través de la consola de administración de AWS. | Si utilizó la opción 1 (la consola de administración de AWS) para implementar la pila de aplicaciones, siga estos pasos cuando esté listo para eliminar los recursos que creó:
| Desarrollador de aplicaciones, AWS DevOps |
Eliminar los recursos creados por AWS Copilot. | Si utilizó la opción 2 (la CLI de AWS Copilot) para implementar la pila de aplicaciones, ejecute el siguiente comando desde el directorio raíz de su proyecto cuando esté listo para eliminar los recursos que creó:
| Desarrollador de aplicaciones, AWS DevOps |
Recursos relacionados
Instalación o actualización de la versión más reciente de la CLI de AWS (documentación de la CLI de AWS)
Uso de la interfaz de la línea de comandos de AWS Copilot (documentación de Amazon ECS)
Amazon ECS en AWS Fargate (documentación de Amazon ECR)
Docker Desktop
(documentación de Docker)