Implemente una aplicación agrupada en Amazon ECS mediante Copilot AWS - Recomendaciones de AWS

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.

Implemente una aplicación agrupada en Amazon ECS mediante Copilot AWS

Creada por Jean-Baptiste Guillois (AWS), Mathew George () y Thomas Scott () AWS AWS

Repositorio de código: demostración de una aplicación de muestra agrupada

Entorno: producción

Tecnologías: contenedores y microservicios; productividad empresarial; CloudNative DevelopmentAndTesting

AWSservicios: AmazonECS; AWS Fargate; Amazon ECR

Resumen

Este patrón muestra cómo implementar contenedores en un clúster de Amazon Elastic Container Service (AmazonECS) de dos maneras: mediante la consola de administración de Amazon Web Services (AWS) y mediante AWS Copilot, para demostrar cómo Copilot simplifica las tareas de implementación. AWS

Amazon ECS es un servicio de administración de contenedores rápido y altamente escalable que facilita la ejecución, la detención y la administración de 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. Puede ejecutar sus tareas y servicios en una infraestructura sin servidor gestionada 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 (AmazonEC2) que administre.

Los comandos de la interfaz de línea de comandos (CLI) de AWS Copilot simplifican la creación, el lanzamiento y el funcionamiento de aplicaciones contenerizadas listas para la producción en ECS Amazon desde un entorno de desarrollo local. El AWS Copilot CLI se adapta a los flujos de trabajo de los desarrolladores que respaldan las mejores prácticas de aplicaciones modernas: desde el uso de la 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 el AWS Copilot CLI como parte de su ciclo diario de desarrollo y pruebas como alternativa a la consola de administración. AWS

Requisitos previos y limitaciones

Requisitos previos 

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

  • AWSentorno configurado con una nube privada virtual (VPC), subredes públicas y privadas y grupos de seguridad

  • ECSClúster de Amazon

  • Definición ECS de servicios y tareas de Amazon

  • Amazon Elastic Container Registry (AmazonECR)

  • 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.

Arquitectura para implementar contenedores con AWS Copilot

Herramientas

AWSservicios

  • Amazon ECR: Amazon Elastic Container Registry (AmazonECR) es un servicio AWS gestionado de registro de imágenes de contenedores seguro, escalable y fiable. Amazon ECR admite repositorios privados con permisos basados en recursos mediante. IAM

  • Amazon ECS: Amazon Elastic Container Service (AmazonECS) es un servicio de administración de contenedores rápido y altamente escalable para ejecutar, detener y administrar contenedores en un clúster. Puede ejecutar sus tareas y servicios en una infraestructura sin servidor gestionada 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 (AmazonEC2) que administre.

  • AWSCopilot: AWS Copilot proporciona una interfaz de línea de comandos que le ayuda a lanzar y administrar aplicaciones en contenedoresAWS, lo que incluye introducirlas en un registro, crear una definición de tarea y crear un clúster.

  • AWSFargate: AWS Fargate es un motor de cómputo portátil y sin servidor que le permite centrarse en crear aplicaciones sin administrar servidores. pay-as-you AWSFargate es compatible con Amazon ECS y Amazon Elastic Kubernetes Service (Amazon). EKS Cuando ejecuta sus ECS tareas y servicios de Amazon con el tipo de lanzamiento de Fargate o un proveedor de capacidad de Fargate, empaqueta la aplicación en contenedores, especifica los requisitos de memoria CPU y los requisitos de red, y lanza IAM la aplicación. Cada tarea de Fargate tiene su propio límite de aislamiento y no comparte el núcleo, los CPU recursos, los recursos de memoria o la interface de red elástica subyacentes con otra tarea.

  • Amazon DynamoDB: Amazon DynamoDB es un servicio SQL sin base de datos totalmente administrado que proporciona un rendimiento rápido y predecible con una escalabilidad perfecta.

  • 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 GitHub repositorio de aplicaciones de muestra de clúster. Siga las instrucciones de la siguiente sección para utilizar los archivos de muestra.

Epics

TareaDescripciónHabilidades requeridas
Clona el GitHub repositorio.

Clone el repositorio de código de muestra mediante el comando:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Desarrollador de aplicaciones, AWS DevOps
Crea tu ECR repositorio de Amazon.
  1. Inicie sesión en la consola AWS de administración y abra la ECR consola de Amazon en https://console.aws.amazon.com/ecr/los repositorios.

  2. Elija Create repository.

  3. Para el nombre del repositorio, introduzca cluster-sample-app.

  4. Mantenga los valores predeterminados para el resto de ajustes.

  5. Elija Create repository.

Para obtener más información, consulta Cómo crear un repositorio privado en la ECR documentación de Amazon.

Desarrollador de aplicaciones, AWS DevOps
Crea, etiqueta y envía tu imagen de Docker a tu ECR repositorio de Amazon.
  1. Seleccione el repositorio que acaba de crear y seleccione Ver comandos push.

  2. Copie los comandos que se muestran y ejecútelos localmente para crear, etiquetar y enviar su imagen de Docker. Estos comandos serán similares a lo siguiente.

Para autenticar su cliente de Docker en el registro:

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Para compilar su imagen de Docker:

docker build -t cluster-sample-app .

Para etiquetar su imagen de Docker:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

Para enviar su imagen de Docker a su repositorio:

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
Desarrollador de aplicaciones, AWS DevOps
Implementar la pila de aplicaciones.
  1. Abre la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation/.

  2. Seleccione Crear pila.

  3. En la sección Preparación de la plantilla, seleccione La plantilla está lista.

  4. En la sección Especificar plantilla, elija Cargar un archivo de plantilla.

  5. Elija el archivo local cluster-sample-app-stack.yml que ha clonado del GitHub repositorio como CloudFormation plantilla y, a continuación, seleccione Siguiente.

  6. Escriba un nombre para la pila y después elija Next (Siguiente).

  7. Conserve todas las opciones predeterminadas, y luego elija Next (Siguiente).

  8. Revisa todas las opciones, confirma la creación de IAM los recursos y, a continuación, selecciona Crear pila.

  9. Cuando se haya implementado la pila de aplicaciones, seleccione la pestaña Salida, cópiela URL y ábrala en su navegador para acceder a la aplicación.

Para obtener más información sobre la implementación de CloudFormation plantillas, consulte Crear una pila en la AWS CloudFormation documentación.

AWS DevOps, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas
Clona el GitHub repositorio.

Clone el repositorio de código de muestra mediante el comando:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Desarrollador de aplicaciones, AWS DevOps
Implemente la imagen de su contenedor AWS mediante el AWS CopilotCLI.

Implemente la aplicación en un solo paso mediante el siguiente comando en el directorio raíz de su proyecto:

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

A continuación, debería poder acceder a la aplicación utilizando el DNS nombre proporcionado como resultado.

Desarrollador de aplicaciones, AWS DevOps
TareaDescripciónHabilidades requeridas
Elimine los recursos creados a través de la consola AWS de administración.

Si utilizó la opción 1 (la consola de AWS administración) para implementar la pila de aplicaciones, siga estos pasos cuando esté listo para eliminar los recursos que creó:

  1. Abra la CloudFormation consola en https://console.aws.amazon.com/cloudformation/.

  2. Seleccione la pila que creó y, a continuación, seleccione Eliminar.

  3. Abre la ECR consola de Amazon en los https://console.aws.amazon.com/ecr/repositorios.

  4. Seleccione el repositorio que creó y, a continuación, seleccione Eliminar.

Desarrollador de aplicaciones, AWS DevOps
Elimine los recursos creados por AWS Copilot.

Si utilizó la opción 2 (el AWS CopilotoCLI) 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ó:

copilot app delete
Desarrollador de aplicaciones, AWS DevOps

Recursos relacionados