Qué es
Amazon ECS (Elastic Container Service) es el orquestador de contenedores de AWS. Le dices qué imagen ejecutar, con cuánta CPU (Central Processing Unit: procesador) y memoria y cuántas copias quieres, y ECS las arranca, las reparte, las sustituye si fallan y las conecta con balanceadores, IAM (Identity and Access Management) y CloudWatch. No hay plano de control que gestionar ni pagar: es más sencillo que Kubernetes, a cambio de ser específico de AWS.
Conceptos clave
- Clúster: agrupación lógica de la capacidad donde corren las tareas.
- Definición de tarea: la "receta" en JSON (JavaScript Object Notation: formato de datos en texto): imágenes, CPU y memoria, puertos, variables, secretos, volúmenes, registros y roles de IAM. Tiene versiones (revisiones).
- Tarea: una ejecución de la definición (uno o varios contenedores juntos). Útil para trabajos que terminan.
- Servicio: mantiene un número deseado de tareas en marcha, las registra en un balanceador, hace despliegues progresivos y escala con Service Auto Scaling.
- Capacidad (mediante capacity providers):
- Fargate (y Fargate Spot): sin servidores; pagas por la CPU y la memoria de cada tarea.
- EC2 (Elastic Compute Cloud): tus instancias en un grupo de Auto Scaling; más control (GPU (Graphics Processing Unit: procesador gráfico, muy usado en ML), tipos concretos) y opciones de ahorro, pero tú las gestionas.
- ECS Managed Instances: instancias EC2 que AWS elige, parchea y escala por ti, a medio camino entre las dos anteriores.
- Dos roles de IAM distintos: el rol de ejecución de la tarea lo usa el agente de ECS para descargar la imagen de ECR (Elastic Container Registry), leer secretos y enviar registros; el rol de la tarea lo usa tu código para llamar a otros servicios (S3 (Simple Storage Service), DynamoDB…).
- Red
awsvpc: cada tarea recibe su propia interfaz de red y su security group (obligatorio en Fargate). - Despliegues: rolling update por defecto; blue/green con CodeDeploy o de forma nativa; el circuit breaker revierte despliegues que fallan.
- Service Connect: descubrimiento de servicios y comunicación entre ellos por nombre, con métricas.
Casos de uso típicos
- Microservicios y APIs en contenedores detrás de un Application Load Balancer.
- Trabajos por lotes y tareas programadas con EventBridge Scheduler.
- Modernizar aplicaciones monolíticas empaquetándolas en contenedores.
- Procesamiento asíncrono que escala según la longitud de una cola SQS (Simple Queue Service).
Cuándo NO usarlo
- Si el equipo ya trabaja con Kubernetes o necesita portabilidad entre nubes: EKS (Elastic Kubernetes Service).
- Funciones cortas por evento sin contenedor que mantener: Lambda.
- Una web sencilla desde un repositorio sin configurar nada: App Runner o Amplify.
Comparativa con servicios parecidos
| Necesidad | Servicio adecuado |
|---|---|
| Orquestar contenedores de la forma más sencilla en AWS | ECS |
| Kubernetes estándar y su ecosistema | EKS |
| No gestionar servidores para los contenedores | Fargate (con ECS o EKS) |
| Guardar las imágenes | ECR |
| Contenedor web desde código o imagen, sin configurar red ni balanceador | App Runner |
Modelo de precios
ECS en sí no cobra. Pagas la capacidad: con Fargate, la vCPU y la memoria que pide cada tarea por segundo (Fargate Spot es mucho más barato y puede interrumpirse); con EC2, las instancias y sus volúmenes; con Managed Instances, las instancias más un cargo de gestión. Aparte, balanceadores, ECR, registros y transferencia de datos. Compute Savings Plans cubre Fargate y EC2.
Seguridad y alta disponibilidad
- Un rol de tarea por servicio, con mínimo privilegio.
- Secretos inyectados desde Secrets Manager o Parameter Store en la definición de tarea, no en la imagen ni en variables en claro.
- Security group por tarea con
awsvpc, y tareas en subredes privadas. - Servicios repartidos en varias zonas; el programador distribuye las tareas y sustituye las que fallan las comprobaciones de estado.
- Escaneo de imágenes en ECR (Amazon Inspector).
Trampas de examen
- "Contenedores sin gestionar servidores": Fargate.
- "La tarea no puede descargar la imagen de ECR" o "no lee el secreto": revisa el rol de ejecución.
- "El código del contenedor no puede escribir en S3": revisa el rol de la tarea.
- "Kubernetes" en el enunciado: EKS, no ECS.
- "Tareas por lotes baratas que toleran interrupciones": Fargate Spot.
- "Revertir solo un despliegue fallido": circuit breaker de despliegue.
- "Escalar según los mensajes pendientes en SQS": Service Auto Scaling con una métrica de la cola.
Preguntas de práctica
Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.
Fuentes
- What is Amazon Elastic Container Service?, documentación de AWS (consultada el 26/09/2026).
- Amazon ECS task execution IAM role, documentación de AWS (consultada el 26/09/2026).
- Amazon ECS task IAM role, documentación de AWS (consultada el 26/09/2026).
- AWS Fargate for Amazon ECS, documentación de AWS (consultada el 26/09/2026).
- How the Amazon ECS deployment circuit breaker detects failures, documentación de AWS (consultada el 26/09/2026).