← Volver al catálogo

Amazon ECS

Amazon Elastic Container Service (Amazon ECS)

En una frase: Orquestador de contenedores propio de AWS que ejecuta tareas y servicios en EC2 o Fargate
Documentación oficial: Documentación de Amazon ECS ↗

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

Comparativa con servicios parecidos

NecesidadServicio adecuado
Orquestar contenedores de la forma más sencilla en AWSECS
Kubernetes estándar y su ecosistemaEKS
No gestionar servidores para los contenedoresFargate (con ECS o EKS)
Guardar las imágenesECR
Contenedor web desde código o imagen, sin configurar red ni balanceadorApp 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