Amazon ECS
Elastic Container Service
Orquestador de contenedores propio de AWS: ejecuta y escala tus contenedores sin instalar un plano de control.
En palabras simples
Es el jefe de turno de un restaurante: tú dices cuántos platos de cada tipo deben estar listos a la vez, y él reparte el trabajo entre las cocinas disponibles y repone al que se quema.
Cuándo aplicarlo
Cuando tu aplicación ya está en contenedores y necesitas que alguien decida dónde correrlos, los reinicie si fallan y los escale con el tráfico, sin la complejidad de Kubernetes.
- ▸Ejecutar una API en contenedor detrás de un balanceador de carga
- ▸Procesar trabajos de una cola con tareas que aparecen y desaparecen
- ▸Migrar una aplicación de EC2 a contenedores sin adoptar Kubernetes
- ▸Correr tareas programadas que no justifican una máquina encendida
Vocabulario mínimo
- Definición de tarea
- La receta: qué imagen se ejecuta, con cuánta CPU y memoria, con qué variables y qué rol de IAM.
- Tarea
- Una instancia en ejecución de esa receta. Es la unidad que ECS levanta, vigila y reemplaza.
- Servicio
- El que mantiene un número deseado de tareas corriendo: si una muere, levanta otra.
- Clúster
- La agrupación lógica donde corren las tareas, sea sobre instancias EC2 tuyas o sobre Fargate.
- Tipo de lanzamiento
- Decide quién pone las máquinas: EC2, si administras las instancias, o Fargate, si no quieres verlas.
Costo y capa gratuita
- Cómo se cobra
- ECS no cobra por sí mismo. Se paga lo que hay debajo: las instancias EC2 del clúster, o la CPU y memoria por segundo si las tareas corren en Fargate.
- Capa gratuita
- El orquestador es gratuito siempre. Fargate no tiene capa gratuita propia, así que la práctica sale desde el primer segundo de tarea encendida.
Cuidado con los créditos
- ⚠Dejar un servicio con tareas deseadas mayores que cero después de un taller: ECS las mantendrá vivas indefinidamente.
- ⚠Pedir 2 GB de memoria "por si acaso" en la definición de tarea: en Fargate se paga la memoria reservada, no la usada.
- ⚠Un balanceador de carga olvidado delante del servicio sigue costando aunque no llegue tráfico.
Descripción
Amazon ECS responde a una pregunta concreta: ya tienes la aplicación metida en un contenedor, ¿quién decide en qué máquina corre, qué pasa si esa máquina se cae y cómo se pasa de tres copias a diez cuando llega el tráfico? Esa función se llama orquestación, y ECS es la respuesta propia de AWS.
Su gran diferencia frente a Kubernetes es la superficie que hay que aprender. ECS tiene tres conceptos — definición de tarea, tarea y servicio — y está integrado de fábrica con IAM, los balanceadores, CloudWatch y las redes de la VPC. No hay plano de control que instalar ni actualizar.
Cómo funciona
- Publicas la imagen de tu contenedor en un registro, normalmente Amazon ECR.
- Escribes una definición de tarea: qué imagen, cuánta CPU y memoria, qué puertos y qué rol.
- Creas un servicio que diga cuántas copias quieres corriendo y detrás de qué balanceador.
- Eliges dónde corre: sobre EC2, si quieres administrar las instancias, o sobre Fargate, si prefieres no verlas.
- ECS coloca las tareas, vigila su estado y reemplaza las que fallan sin que nadie intervenga.
Manos a la obra
- Sube una imagen sencilla a ECR (un
nginxcon una página propia sirve de sobra). - Crea una definición de tarea de Fargate con 0.25 vCPU y 512 MB, el mínimo posible.
- Crea un servicio con dos tareas deseadas y ponle delante un Application Load Balancer.
- Termina una de las tareas a mano desde la consola y observa cómo ECS levanta otra sola.
- Pon el servicio en cero tareas al terminar y borra el balanceador: es lo que sigue cobrando.
Ejemplo visual
El servicio de ECS es quien sostiene el dibujo: el número de tareas que se ve es el que se declaró, y volverá a ser ese después de cualquier fallo.
Cuándo NO es la mejor opción
- Amazon EKS — si el equipo ya trabaja con Kubernetes o necesita su ecosistema de herramientas y portabilidad entre nubes.
- AWS Lambda — si la carga es puntual y por eventos: mantener un contenedor esperando es desperdicio.
- AWS App Runner — si solo quieres publicar una aplicación web en contenedor y no te interesa configurar red ni clúster.
Se usa junto con
Aparece en certificaciones
- AWS Certified Solutions Architect – Associate
- AWS Certified Developer – Associate
- AWS Certified DevOps Engineer – Professional
Para profundizar