Saltar al contenido

Diagrama de arquitectura de AWS ECS en Fargate: servicios, tareas y balanceo de carga

Un servicio web de producción en ECS con Fargate, dibujado y explicado: red de las tareas, ALB, roles de IAM, secretos, auto scaling, Fargate Spot y despliegues.

· Fundador y desarrollador

Publicado el

Una VPC en dos Availability Zones. Los usuarios llegan a un Application Load Balancer entre las subredes públicas, que atiende una tarea de Fargate por subred privada. Las tareas consultan RDS Multi-AZ; ECR, Secrets Manager y los logs pasan por endpoints de VPC.

Subes la imagen, creas el servicio y las primeras tareas nunca llegan a RUNNING. Se detienen con un ResourceInitializationError: unable to pull secrets or registry auth. La imagen está bien. Las tareas están en subredes privadas sin ruta a Amazon ECR ni a Secrets Manager, así que Fargate no puede iniciarlas.

Muchos problemas de ECS en Fargate se parecen a este: los contenedores funcionan, pero la red, los roles o los ajustes del balanceador de carga que los rodean no. Este artículo recorre un servicio web de producción en Amazon ECS con AWS Fargate, desde la red y el balanceo de carga hasta IAM, el escalado, los despliegues y ECS vs EKS, con un diagrama que puedes copiar.

Los conceptos de ECS en una tabla

Concepto Qué es En el ejemplo
Clúster Un grupo lógico de servicios y tareas prod
Definición de tarea Plantilla versionada: imagen, CPU, memoria, puertos, roles, secretos, logging orders-api:42
Tarea Una copia en ejecución de una definición de tarea; en Fargate tiene su propio kernel, memoria e interfaz de red De 2 a 10 copias
Servicio Mantiene el número de tareas deseado, registra las tareas en el balanceador de carga, ejecuta los despliegues orders-api
Capacity provider Dónde se ejecutan las tareas: FARGATE, FARGATE_SPOT, grupos de EC2 Auto Scaling o ECS Managed Instances FARGATE y FARGATE_SPOT

El clúster no es un límite de red: las tareas se ejecutan en las subredes que indiques, detrás de sus propios grupos de seguridad. ECS no cobra nada por la orquestación; Fargate factura por segundo la vCPU, la memoria y el almacenamiento de cada tarea, con un mínimo de un minuto.

Red: una ENI por tarea

Las tareas de Fargate siempre usan el modo de red awsvpc: cada tarea recibe su propia interfaz de red elástica (ENI), una IP privada de su subred y sus propios grupos de seguridad (red de las tareas de Fargate). Tres consecuencias:

  • Las subredes necesitan espacio. Cada tarea ocupa una IP y AWS reserva cinco por subred. Sesenta tareas en dos AZ son 30 por subred, y un despliegue progresivo al 200 % necesita 60 por un momento. Una /24 (251 utilizables) basta; una /27 (27 utilizables) no.
  • Los grupos de seguridad funcionan por tarea. Abre el puerto del contenedor solo al grupo del balanceador de carga, y el puerto 5432 de la base de datos solo al grupo de las tareas.
  • Las tareas necesitan un camino a las API de AWS. Antes de que se ejecute tu código, Fargate descarga la imagen, obtiene los secretos y empieza a enviar logs por la ENI de la tarea.

Desde una subred privada, ese camino es una NAT gateway o endpoints de VPC (precios de US East en el momento de escribir, noviembre de 2026):

Camino Qué creas Coste Compromiso
NAT gateway Una por AZ, o una NAT gateway regional 0,045 USD por hora y AZ más 0,045 USD por GB También llega a API de terceros
Endpoints de VPC Endpoints de interfaz ecr.api, ecr.dkr, logs, secretsmanager, más el endpoint de gateway de S3 0,01 USD por endpoint, hora y AZ más 0,01 USD por GB; el gateway de S3 es gratis Ningún camino a internet

No te saltes el endpoint de gateway de S3: ECR guarda las capas de las imágenes en S3 (endpoints de interfaz de ECR). Cuatro endpoints de interfaz en dos AZ cuestan unos 58 USD al mes antes de los datos (8 × 0,01 USD × 730 horas), casi como dos NAT gateways a 66 USD. Los endpoints ganan en cargos por datos y privacidad, y NAT en alcance. Desde noviembre de 2025, una NAT gateway regional abarca las AZ por sí sola y no necesita subred pública. Poner IP públicas a las tareas también funciona, pero deja a cada tarea a una regla de grupo de seguridad de internet. El diagrama de VPC de AWS cubre las rutas y la ubicación de NAT.

El balanceador de carga: target groups y health checks

El ALB necesita subredes en al menos dos AZ, cada una /27 o mayor con ocho direcciones libres. Como una tarea awsvpc es una ENI y no una instancia de EC2, el tipo del target group debe ser ip. Usa un target group por servicio; ECS registra y da de baja las tareas.

Ajuste Valor por defecto Considera
Intervalo del health check 30 s 5 s si el servicio arranca en menos de 10 s (sugerencia de AWS)
Umbral de no saludable 2 comprobaciones Una tarea que falla sale en cerca de un minuto
Umbral de saludable 5 comprobaciones Los destinos nuevos solo necesitan una comprobación correcta
Retraso de baja del registro (deregistration delay) 300 s 30 s o menos para peticiones cortas; las tareas antiguas pueden drenar tanto tiempo
healthCheckGracePeriodSeconds 0 Cubre el tiempo de arranque, o las tareas que arrancan despacio se reemplazan en bucle

Desde noviembre de 2025, ECS Express Mode puede crear esta configuración de ALB, HTTPS y escalado a partir de una imagen de contenedor. El diagrama de balanceador de carga cubre en general los health checks y el draining.

IAM: el rol de ejecución y el rol de tarea

Dos roles, dos trabajos:

  • El rol de ejecución de tareas lo usan ECS y el agente de Fargate, no tu código: descarga la imagen, escribe los logs y lee los secretos nombrados en la definición de tarea (rol de ejecución de tareas). AmazonECSTaskExecutionRolePolicy cubre ECR y los logs; añade tú mismo secretsmanager:GetSecretValue, y kms:Decrypt para una clave administrada por el cliente.
  • El rol de tarea es el que usa tu código a través del SDK de AWS, para S3 o SQS, y el que necesita ECS Exec.

Los secretos llegan como variables de entorno:

"secrets": [{
  "name": "DB_PASSWORD",
  "valueFrom": "arn:aws:secretsmanager:us-east-1:111122223333:secret:prod/orders/db-AbCdEf:password::"
}]

ECS lee el valor cuando arranca el contenedor. Un secreto rotado no llega a las tareas en ejecución, así que vuelve a desplegar tras la rotación o deja que la aplicación lea el secreto con su rol de tarea. Elegir una sola clave JSON, como arriba, requiere la versión de plataforma 1.4.0, la actual LATEST.

Escalado: target tracking y Fargate Spot

Para Service Auto Scaling, empieza con target tracking sobre ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization o ALBRequestCountPerTarget. Escala hacia fuera rápido, hacia dentro despacio y pausa la reducción durante los despliegues; con varias políticas, solo reduce cuando todas coinciden. Mantén al menos una tarea por AZ.

Fargate Spot cuesta hasta un 70 % menos. Cuando AWS recupera la capacidad, la tarea recibe un aviso de dos minutos, como evento de EventBridge con el código de parada SpotInterruption y como SIGTERM (capacity providers de Fargate). stopTimeout tiene un máximo de 120 segundos, y Fargate nunca vuelve por sí solo a la capacidad normal, así que mantén una base:

"capacityProviderStrategy": [
  { "capacityProvider": "FARGATE", "base": 2, "weight": 1 },
  { "capacityProvider": "FARGATE_SPOT", "weight": 1 }
]

Las dos primeras tareas siempre se ejecutan en Fargate normal; el resto se reparte uno a uno. Un servicio de una sola tarea en Spot simplemente se detiene hasta que vuelve la capacidad.

Despliegues: progresivo, blue/green, lineal y canary

El progresivo (rolling) es el predeterminado: con minimumHealthyPercent en 100 y maximumPercent en 200, ECS inicia tareas nuevas antes de detener las antiguas. Activa el deployment circuit breaker con rollback; por defecto, hace fallar un despliegue cuando las tareas fallidas alcanzan la mitad del número deseado (al menos 3, como máximo 200). Las alarmas de CloudWatch pueden activar el mismo rollback.

Desde julio de 2025, ECS ejecuta por sí mismo los despliegues blue/green, sin CodeDeploy, y desde octubre de 2025 también los lineales y canary. Inician la nueva revisión detrás de un segundo target group, desplazan el tráfico del listener y conservan las tareas antiguas durante un bake time, de modo que el rollback es un cambio de tráfico.

Estrategia Desplazamiento del tráfico Rollback Capacidad extra
Rolling Tareas reemplazadas por lotes Volver a desplegar Hasta maximumPercent
Blue/green Todo a la vez, tras tráfico de prueba opcional Volver a cambiar 2x
Lineal Pasos iguales, como un 10 % cada pocos minutos Volver a cambiar 2x
Canary Una pequeña parte, luego el resto Volver a cambiar 2x

Los hooks de Lambda o de pausa pueden condicionar cada etapa. El target tracking sobre ALBRequestCountPerTarget no es compatible con blue/green. El diagrama de estrategias de despliegue compara los patrones.

Observabilidad

El controlador awslogs necesita awslogs-group, awslogs-region y, en Fargate, awslogs-stream-prefix. Desde el 25 de junio de 2025, usa por defecto el modo non-blocking con un búfer de 10 MB: un fallo de CloudWatch ya no congela tu aplicación, pero un búfer lleno pierde líneas. Añade Container Insights con observabilidad mejorada, ECS Exec para shells y una regla de EventBridge sobre los cambios de estado de las tareas; el motivo de parada (stopped reason) dice por qué murió una tarea. Para las trazas, ejecuta un OpenTelemetry Collector como sidecar en la tarea; es el nivel de agente de un pipeline de logs, métricas y trazas con OpenTelemetry.

ECS vs EKS

Amazon ECS Amazon EKS
Plano de control Gratis 0,10 USD por hora y clúster, unos 73 USD al mes
API Definiciones de tarea y servicios de AWS Kubernetes, Helm, operadores
Cómputo Fargate, EC2, ECS Managed Instances Fargate, grupos de nodos de EC2, EKS Auto Mode
Actualizaciones Ninguna para el plano de control 14 meses de soporte estándar por versión de Kubernetes, luego 0,60 USD por hora y clúster
Despliegues integrados Rolling, blue/green, lineal, canary Rolling; los demás con herramientas como Argo Rollouts

Los precios proceden de la página de precios de EKS en el momento de escribir (noviembre de 2026). Elige EKS cuando necesites la portabilidad de Kubernetes o su ecosistema; el diagrama de arquitectura de Kubernetes muestra ese cuadro. Para trabajo corto y basado en eventos, los diseños serverless basados en Lambda no necesitan ningún servicio en ejecución permanente.

El diagrama de ECS en Fargate

Una VPC en dos Availability Zones. Los usuarios llegan a un Application Load Balancer entre las subredes públicas, que atiende una tarea de Fargate por subred privada. Las tareas consultan RDS Multi-AZ; ECR, Secrets Manager y los logs pasan por endpoints de VPC.

22 componentes · 10 conexiones

Abrir en Archboard
Contenido del diagrama
  • VPC
  • Public subnet · AZ a
  • Public subnet · AZ b
  • Private subnet · AZ a
  • Private subnet · AZ b
  • Application Load Balancer
  • orders-api task
  • RDS for PostgreSQL
  • VPC endpoints
  • Users
  • Amazon ECR
  • Secrets Manager
  • CloudWatch Logs
  • HTTPS 443
  • HTTP 8080
  • SQL 5432
  • image pull
  • secrets at start
  • awslogs
Un servicio ECS en Fargate repartido en dos Availability Zones. El ALB de las subredes públicas reenvía a las IP de las tareas en subredes privadas; las tareas llegan a ECR, Secrets Manager y CloudWatch Logs por endpoints de VPC, no por internet.

Cómo leerlo:

  • Las AZ son filas. Cada una tiene una subred pública y una privada. El ALB, RDS y los endpoints están entre las filas porque cada uno abarca las dos AZ: un nodo del ALB en cada subred pública, un standby Multi-AZ para la base de datos.
  • El azul continuo es la ruta de las peticiones: HTTPS al ALB, HTTP 8080 a una tarea por AZ, SQL en el puerto 5432.
  • El morado discontinuo es el tráfico de la plataforma: la descarga de la imagen, los secretos y los logs, enviados por Fargate con el rol de ejecución de tareas a través de los endpoints de VPC.
  • Solo las subredes públicas enrutan 0.0.0.0/0 a la internet gateway.
  • El bloque Markdown enumera los ajustes del servicio.

Dibujar diagramas de ECS con claridad

  • Pon las tareas dentro de subredes por AZ. Una caja «clúster de ECS» alrededor de todo oculta dónde se ejecutan las tareas y a qué pueden llegar.
  • Dibuja una tarea por AZ, con el rango de escalado al lado.
  • Muestra el camino a ECR, Secrets Manager y CloudWatch Logs. Un camino que falta es una razón habitual de que las tareas no arranquen.
  • Etiqueta la arista del ALB con el puerto y el tipo de destino, y nombra el rol detrás de las aristas discontinuas en una leyenda.
  • Deja fuera los sidecars, el CI/CD y los registros DNS, salvo que el diagrama trate de ellos.

La plantilla de arquitectura de tres capas de AWS tiene la misma disposición de VPC con EC2.

Constrúyelo en Archboard

  1. Inicia sesión con Google o GitHub y crea un diagrama.
  2. Añade una VPC del paquete Red y cuatro nodos Subred dentro, uno público y uno privado por cada AZ.
  3. Añade un Balanceador de carga en la nube del paquete Nube entre las subredes públicas, y notas de Texto en las subredes públicas para la ruta y el nodo del ALB.
  4. Añade una Instancia de cómputo del paquete Nube en cada subred privada, con el tamaño de la tarea en el campo del tipo de instancia.
  5. Entre las subredes privadas, añade una Base de datos administrada con alta disponibilidad activada y un Recurso en la nube para los endpoints de VPC, ambos del paquete Nube.
  6. Fuera de la VPC, añade Internet del paquete Red, Registro del paquete Docker, Bóveda del paquete Seguridad y Registros del paquete DevOps.
  7. Dibuja aristas etiquetadas, discontinuas para el tráfico de la plataforma, y añade un bloque Markdown del paquete Básico con los ajustes.

Las herramientas CloudFormation a diagrama y Terraform a diagrama convierten el código de un stack existente en un primer borrador; al dibujar el servicio a partir de Terraform, recorta el borrador y añade a mano la ruta de las peticiones.

El ejemplo usa 15 nodos de diagrama, dentro del plan Free.

Preguntas frecuentes

¿Fargate exige el modo de red awsvpc? Sí. Cada tarea de Fargate recibe su propia interfaz de red y dirección IP privada, por eso sus target groups deben usar el tipo de destino ip.

¿Cuál es la diferencia entre el rol de tarea de ECS y el rol de ejecución de tareas? El rol de ejecución permite a ECS iniciar la tarea: descargar la imagen, obtener los secretos, enviar los logs. El rol de tarea es el que usa el código de tu aplicación para sus propias llamadas a AWS.

¿Las tareas de Fargate en subredes privadas necesitan una NAT gateway? No para los servicios de AWS. Bastan los endpoints de interfaz de ECR, CloudWatch Logs y Secrets Manager, más el endpoint de gateway de S3. Solo necesitas NAT para llegar a internet.

¿ECS admite despliegues blue/green sin CodeDeploy? Sí. ECS ejecuta blue/green de forma nativa desde julio de 2025, y lineal y canary desde octubre de 2025, con bake times, lifecycle hooks y rollback basado en alarmas.

¿Es ECS más barato que EKS? En el plano de control, sí: ECS no tiene tarifa de orquestación, mientras que un clúster de EKS cuesta 0,10 USD por hora con soporte estándar. Los precios de Fargate y de las instancias de EC2 son los mismos en ambos.

Empieza gratis — un puesto, sin tarjeta de crédito.

Artículos relacionados

← Volver al blog

Abre un lienzo en un minuto

Inicia sesión con Google o GitHub. Gratis para un asiento. Mejora el plan cuando se una el equipo.