Esta es la guía para desarrolladores de AWS CDK v2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.
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.
Ejemplo: Crear un servicio de AWS Fargate con AWS CDK.
En este ejemplo, le mostramos cómo crear un servicio de AWS Fargate que se ejecute en un clúster de Amazon Elastic Container Service (Amazon ECS) encabezado por un Equilibrador de carga de aplicación con acceso a Internet a partir de una imagen de Amazon ECR.
Amazon ECS es un servicio de administración de contenedores muy escalable y rápido que facilita la tarea de ejecutar, detener y administrar contenedores de Docker en un clúster. Puede alojar el clúster en una infraestructura sin servidor administrada por Amazon ECS. Para ello, lance los servicios o las tareas con el tipo de lanzamiento Fargate. Si desea más control, puede alojar las tareas en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) administrado mediante el tipo de lanzamiento Amazon EC2.
En este ejemplo, lanzamos algunos servicios mediante el tipo de lanzamiento de Fargate. Si ha utilizado la consola de administración de AWS para crear un servicio Fargate, sabrá que hay muchos pasos a seguir para realizar esa tarea. AWS tiene varios tutoriales y temas de documentación que le guiarán a través de la creación de un servicio Fargate, entre los que se incluyen:
En este ejemplo se crea un servicio Fargate similar mediante AWS CDK
El constructo de Amazon ECS utilizado en este ejemplo le ayuda a utilizar los servicios de AWS al ofrecer las siguientes ventajas:
-
Configura automáticamente un equilibrador de carga.
-
Abre automáticamente un grupo de seguridad para los equilibradores de carga. Esto permite que los equilibradores de carga se comuniquen con las instancias sin tener que crear explícitamente un grupo de seguridad.
-
Ordena automáticamente la dependencia entre el servicio y el equilibrador de carga asociado a un grupo objetivo, donde el AWS CDK impone el orden correcto de creación del oyente antes de crear una instancia.
-
Configura automáticamente los datos de usuario en grupos que se escalan automáticamente. Esto crea la configuración correcta para asociar un clúster a las AMI.
-
Valida anticipadamente las combinaciones de parámetros. Esto expone los problemas de AWS CloudFormation antes, lo que ahorra tiempo de implementación. Por ejemplo, en función de la tarea, es fácil configurar incorrectamente los ajustes de memoria. Anteriormente, no se producía ningún error hasta que implementábamos nuestra aplicación. Pero ahora el AWS CDK puede detectar un error de configuración y emitir un error cuando sintetizamos nuestra aplicación.
-
Agrega automáticamente permisos para Amazon Elastic Container Registry (Amazon ECR) si utilizamos una imagen de Amazon ECR.
-
Escala automáticamente. AWS CDK proporciona un método para que podamos escalar automáticamente las instancias cuando utilizamos un clúster de Amazon EC2. Esto ocurre automáticamente cuando utilizamos una instancia en un clúster de Fargate.
Además, el AWS CDK evita que se elimine una instancia cuando el escalado automático intenta detener una instancia, pero una tarea se está ejecutando o está programada en esa instancia.
Antes, teníamos que crear una función de Lambda para disponer de esta funcionalidad.
-
Proporciona soporte de activos para que podamos implementar una fuente desde nuestra máquina en Amazon ECS en un solo paso. Anteriormente, para utilizar una fuente de aplicación, teníamos que realizar varios pasos manuales, como subirla a Amazon ECR y crear una imagen de Docker.
importante
Los constructos de ApplicationLoadBalancedFargateService que utilizaremos incluyen numerosos componentes de AWS, algunos de los cuales tienen costos nada despreciables si se dejan aprovisionados en nuestra cuenta de AWS, incluso si no los utilizamos. Asegúrese de limpiar (cdk destroy) si sigue este ejemplo.
Crear un proyecto CDK
Empezamos por crear un proyecto CDK. Este es un directorio que almacena nuestro código de AWS CDK, incluida nuestra aplicación CDK.
A continuación, ejecutamos la aplicación y confirmamos que cree una pila vacía.
cdk synth
Crear un servicio de Fargate
Existen dos formas diferentes de ejecutar nuestras tareas de contenedores con Amazon ECS:
-
Usar el tipo de lanzamiento de
Fargate, en el que Amazon ECS administra por nosotros las máquinas físicas en las que se ejecutan nuestros contenedores. -
Usar el tipo de lanzamiento de
EC2, en el que nos encargamos de la administración, por ejemplo, especificando el escalado automático.
Para este ejemplo, crearemos un servicio Fargate que se ejecute en un clúster de Amazon ECS, presentado por un Equilibrador de carga de aplicación con acceso a Internet.
Añadimos las siguientes importaciones del módulo de la Biblioteca de constructos de AWS a nuestro archivo de pila:
Dentro de nuestra pila, agregamos el siguiente código:
A continuación, validamos nuestro código ejecutando lo siguiente para sintetizar nuestra pila:
cdk synth
La pila consta de cientos de líneas, por lo que no la mostraremos aquí. La pila debe contener una instancia predeterminada, una subred privada y una subred pública para las tres zonas de disponibilidad y un grupo de seguridad.
Para implementar la pila, ejecutamos lo siguiente:
cdk deploy
AWS CloudFormation muestra información sobre las decenas de pasos que debe realizar para implementar nuestra aplicación.
Una vez completada la implementación, habremos creado correctamente un servicio Amazon ECS con tecnología Fargate para ejecutar una imagen de Docker.
Limpieza
Como práctica recomendada de mantenimiento general y para minimizar los costos innecesarios, eliminamos nuestra pila una vez finalizada:
cdk destroy