Clústeres de ECS, definiciones de tareas y servicios
Defina las definiciones de tareas de ECS con imágenes de contenedor y límites de recursos, regístrelas en un clúster y cree un servicio que mantenga el número deseado
Clústeres de ECS, definiciones de tareas y servicios es una lección gratuita de AWS Solutions Architect en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AWS Solutions Architect, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AWS Solutions Architect incluye 4 lecciones en total.
¿Por qué usar contenedores en AWS?
Los contenedores empaquetan una aplicación y todas sus dependencias en una unidad portátil y aislada que se ejecuta de forma uniforme en distintos entornos. Amazon ECS (Elastic Container Service) es el servicio de orquestación de contenedores totalmente administrado de AWS, que ejecuta contenedores de Docker sin que tenga que administrar un plano de control. ECS se integra estrechamente con los servicios de AWS (IAM, ALB, CloudWatch, Secrets Manager) y es la forma recomendada de ejecutar contenedores en AWS sin la complejidad de Kubernetes.
Clústeres de ECS: la unidad de agrupación
Un ECS Cluster es una agrupación lógica de recursos informáticos donde se ejecutan los contenedores. Un clúster puede contener instancias de EC2 (tipo de lanzamiento EC2), capacidad de Fargate (tipo de lanzamiento Fargate) o ambas. Puede tener varios servicios y tareas independientes en un mismo clúster. Los clústeres son regionales, pero abarcan varias zonas de disponibilidad. Un patrón habitual es tener un clúster por entorno (desarrollo, preparación y producción), con varios servicios dentro de cada clúster para distintos microservicios.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Definiciones de tareas: el plano de referencia
Una Task Definition es el plano de referencia para ejecutar contenedores en ECS, equivalente a un archivo de Docker Compose. Especifica: imágenes de contenedor (URI de ECR o Docker Hub), asignaciones de CPU y memoria, mapeos de puertos, variables de entorno, configuración de registro, volúmenes y el rol de tarea de IAM. Una definición de tareas tiene versiones; cada revisión es inmutable. Puede definir varios contenedores por tarea para implementar patrones sidecar (aplicación principal + reenviador de registros + agente de monitorización).
{
'family': 'myapp-task',
'networkMode': 'awsvpc',
'requiresCompatibilities': ['FARGATE'],
'cpu': '512',
'memory': '1024',
'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
'containerDefinitions': [{
'name': 'myapp',
'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
'portMappings': [{'containerPort': 8080}]
}]
}Rol de tarea frente a rol de ejecución
Las tareas de ECS usan dos roles de IAM independientes con propósitos distintos. El Task Execution Role lo utiliza el agente de ECS para extraer imágenes de contenedor de ECR, enviar registros a CloudWatch y recuperar secretos de Secrets Manager o Parameter Store durante el inicio de la tarea. El Task Role lo utiliza el código de la aplicación que se ejecuta dentro del contenedor para llamar a servicios de AWS (S3, DynamoDB, SQS). Asigne siempre permisos de mínimo privilegio a cada rol por separado; nunca conceda al rol de ejecución permisos que la aplicación no necesite.
Servicios de ECS para cargas de trabajo de larga duración
Un ECS Service mantiene un número especificado de instancias de tareas ejecutándose simultáneamente (el desired count). Si una tarea falla o se detiene, el programador del servicio lanza automáticamente un reemplazo. Los servicios también se integran con Elastic Load Balancing para distribuir el tráfico y admiten implementaciones progresivas y blue/green. Use un servicio para cualquier proceso de larga duración (servidor web, servidor de API o proceso en segundo plano). Para trabajos puntuales, ejecute una tarea independiente.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--launch-type FARGATE \
--network-configuration '{
"awsvpcConfiguration": {
"subnets": ["subnet-aaa111", "subnet-bbb222"],
"securityGroups": ["sg-xyz"],
"assignPublicIp": "DISABLED"
}
}'Modos de red: awsvpc frente a bridge
El modo de red awsvpc proporciona a cada tarea de ECS su propia interfaz de red elástica (ENI) y dirección IP privada dentro de su VPC, igual que una instancia de EC2. Esto permite un control detallado de los grupos de seguridad por tarea y es obligatorio para las tareas de Fargate. El modo de red bridge utiliza la red virtual integrada de Docker en el host, con un mapeo de puertos del host al contenedor; comparte la ENI de la instancia de EC2 del host. Para el examen SAA-C03, Fargate siempre utiliza awsvpc; el tipo de lanzamiento EC2 puede utilizar cualquiera de los dos.
Asociación de un balanceador de carga a un servicio de ECS
Registre su servicio de ECS en un grupo de destino de ALB para distribuir el tráfico entre las instancias de tareas. Cuando se inicia una tarea nueva, ECS la registra automáticamente en el grupo de destino; cuando se detiene, ECS la elimina del registro. Configure un periodo de gracia para la comprobación de estado (por ejemplo, de 60 a 120 segundos) para dar tiempo a los contenedores a iniciarse antes de ejecutar las comprobaciones de estado. Sin un periodo de gracia, el ALB podría marcar como incorrecto un contenedor de inicio lento antes de que estuviera listo, lo que provocaría ciclos de reemplazo.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--load-balancers \
'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
--health-check-grace-period-seconds 120 \
--task-definition 'myapp-task:5' \
--desired-count 3Implementación progresiva frente a implementación blue/green
Los servicios de ECS admiten dos estrategias de implementación: Rolling Update reemplaza gradualmente las tareas antiguas por nuevas; se configura mediante minimumHealthyPercent (límite inferior) y maximumPercent (límite superior). Establecer 100/200 significa que las tareas antiguas se ejecutan mientras se inician las nuevas (se requiere un 100 % de estado saludable, con hasta un 200 % de capacidad). La implementación blue/green (mediante AWS CodeDeploy) crea un nuevo conjunto de tareas junto al antiguo, desvía el tráfico gradualmente mediante el enrutamiento ponderado del ALB y termina las tareas antiguas después de la validación. Blue/green permite revertir los cambios sin tiempo de inactividad.
Registro de CloudWatch desde ECS
Configure el controlador de registros awslogs en la definición de tareas para enviar directamente la salida estándar y el error estándar del contenedor a CloudWatch Logs. Especifique un grupo de registros, una región y un prefijo de flujo. El rol de ejecución de la tarea necesita los permisos logs:CreateLogStream y logs:PutLogEvents. Para centralizar los registros de varios servicios, considere usar FireLens (un contenedor sidecar con Fluent Bit o Fluentd) para dirigirlos a S3, OpenSearch o sistemas de registro de terceros.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}Detección de servicios de ECS con Cloud Map
Cuando los microservicios de ECS necesitan comunicarse entre sí, las direcciones IP codificadas no funcionan porque las tareas son efímeras y obtienen nuevas IP en cada lanzamiento. Use AWS Cloud Map (detección de servicios de ECS) para registrar la IP y el puerto de cada tarea en un espacio de nombres DNS. Otros servicios resuelven myservice.namespace.local en las IP actuales de las tareas saludables. ECS registra automáticamente las tareas nuevas y elimina del registro las que fallan, manteniendo actualizados los registros DNS sin gestión manual.
Secretos en las definiciones de tareas de ECS
No codifique nunca las credenciales directamente en las definiciones de tareas. En su lugar, haga referencia a secretos de Secrets Manager o Parameter Store en la definición de tareas; ECS los inyecta como variables de entorno al iniciar la tarea. El rol de ejecución de la tarea debe tener permisos para recuperar los secretos. Para Secrets Manager, use secretsmanager:GetSecretValue; para Parameter Store, use ssm:GetParameters. Los secretos se recuperan una vez al iniciar el contenedor; para que los nuevos valores surtan efecto después de rotarlos, es necesario reemplazar la tarea.
'secrets': [
{
'name': 'DB_PASSWORD',
'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
},
{
'name': 'API_KEY',
'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
}
]Comprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) tratados en esta lección.
Resumen de la lección
En esta lección ha aprendido que los ECS Clusters agrupan los recursos informáticos donde se ejecutan las tareas; las Task Definitions definen las imágenes de contenedor, la CPU y la memoria, los roles y el registro como planos de referencia versionados; y los ECS Services mantienen el número de tareas deseado, se integran con ALB para distribuir el tráfico y admiten implementaciones progresivas o blue/green. A continuación compararemos el tipo de lanzamiento EC2 con el tipo de lanzamiento Fargate sin servidor.
Preguntas frecuentes
¿La lección «Clústeres de ECS, definiciones de tareas y servicios» es gratis?
Sí — el texto completo de «Clústeres de ECS, definiciones de tareas y servicios» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AWS Solutions Architect, actualiza a CoddyKit PRO. El curso de AWS Solutions Architect incluye 4 lecciones en total.
¿Qué aprenderé en «Clústeres de ECS, definiciones de tareas y servicios»?
Defina las definiciones de tareas de ECS con imágenes de contenedor y límites de recursos, regístrelas en un clúster y cree un servicio que mantenga el número deseado Practicas AWS Solutions Architect con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AWS Solutions Architect?
No se requiere experiencia previa. AWS Solutions Architect en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Clústeres de ECS, definiciones de tareas y servicios»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AWS Solutions Architect?
Sí. Cada lección de AWS Solutions Architect incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Clústeres de ECS, definiciones de tareas y servicios
- Tipo de lanzamiento EC2 frente a Fargate
- ECR: almacenamiento y extracción de imágenes de contenedor
- Auto Scaling y balanceo de carga de servicios de ECS