Pular para o conteúdo

Diagrama de arquitetura do AWS ECS no Fargate: serviços, tasks e balanceamento de carga

Um serviço web de produção no ECS com Fargate, desenhado e explicado: rede das tasks, ALB, roles do IAM, secrets, auto scaling, Fargate Spot e deployments.

· Fundador e desenvolvedor

Publicado em

Uma VPC em duas Availability Zones. Os usuários chegam a um Application Load Balancer entre as sub-redes públicas, que atende uma task do Fargate por sub-rede privada. As tasks consultam o RDS Multi-AZ; ECR, Secrets Manager e os logs passam por endpoints de VPC.

Você faz o push da imagem, cria o serviço, e as primeiras tasks nunca chegam a RUNNING. Elas param com um ResourceInitializationError: unable to pull secrets or registry auth. A imagem está certa. As tasks estão em sub-redes privadas sem rota para o Amazon ECR nem para o Secrets Manager, então o Fargate não consegue iniciá-las.

Muitos problemas do ECS no Fargate parecem com este: os contêineres funcionam, mas a rede, as roles ou as configurações do balanceador de carga ao redor deles não. Este post percorre um serviço web de produção no Amazon ECS com AWS Fargate, da rede e do balanceamento de carga ao IAM, ao escalonamento, aos deployments e a ECS vs EKS, com um diagrama que você pode copiar.

Os conceitos do ECS em uma tabela

Conceito O que é No exemplo
Cluster Um grupo lógico de serviços e tasks prod
Task definition Modelo versionado: imagem, CPU, memória, portas, roles, secrets, logging orders-api:42
Task Uma cópia em execução de uma task definition; no Fargate ela tem seu próprio kernel, memória e interface de rede De 2 a 10 cópias
Serviço Mantém o número desejado de tasks, registra as tasks no balanceador de carga, executa os deployments orders-api
Capacity provider Onde as tasks rodam: FARGATE, FARGATE_SPOT, grupos do EC2 Auto Scaling ou ECS Managed Instances FARGATE e FARGATE_SPOT

O cluster não é um limite de rede: as tasks rodam nas sub-redes que você indicar, atrás de seus próprios security groups. O ECS não cobra nada pela orquestração; o Fargate cobra por segundo a vCPU, a memória e o armazenamento de cada task, com mínimo de um minuto.

Rede: uma ENI por task

As tasks do Fargate sempre usam o modo de rede awsvpc: cada task recebe sua própria interface de rede elástica (ENI), um IP privado da sua sub-rede e seus próprios security groups (rede das tasks do Fargate). Três consequências:

  • As sub-redes precisam de espaço. Cada task ocupa um IP, e a AWS reserva cinco por sub-rede. Sessenta tasks em duas AZs são 30 por sub-rede, e um deployment rolling a 200% precisa de 60 por um instante. Uma /24 (251 utilizáveis) serve; uma /27 (27 utilizáveis) não.
  • Os security groups funcionam por task. Abra a porta do contêiner só para o grupo do balanceador de carga, e a porta 5432 do banco de dados só para o grupo das tasks.
  • As tasks precisam de um caminho até as APIs da AWS. Antes de o seu código rodar, o Fargate baixa a imagem, busca os secrets e começa a enviar logs pela ENI da task.

A partir de uma sub-rede privada, esse caminho é um NAT gateway ou endpoints de VPC (preços de US East no momento da escrita, novembro de 2026):

Caminho Você cria Custo Contrapartida
NAT gateway Um por AZ, ou um NAT gateway regional US$ 0,045 por hora e AZ mais US$ 0,045 por GB Também alcança APIs de terceiros
Endpoints de VPC Endpoints de interface ecr.api, ecr.dkr, logs, secretsmanager, mais o endpoint de gateway do S3 US$ 0,01 por endpoint, hora e AZ mais US$ 0,01 por GB; o gateway do S3 é gratuito Nenhum caminho para a internet

Não pule o endpoint de gateway do S3: o ECR guarda as camadas das imagens no S3 (endpoints de interface do ECR). Quatro endpoints de interface em duas AZs custam cerca de US$ 58 por mês antes dos dados (8 × US$ 0,01 × 730 horas), quase o mesmo que dois NAT gateways a US$ 66. Os endpoints ganham em custos de dados e privacidade, e o NAT em alcance. Desde novembro de 2025, um NAT gateway regional abrange as AZs sozinho e não precisa de sub-rede pública. IPs públicos nas tasks também funcionam, mas deixam cada task a uma regra de security group da internet. O diagrama de VPC da AWS cobre as rotas e o posicionamento do NAT.

O balanceador de carga: target groups e health checks

O ALB precisa de sub-redes em pelo menos duas AZs, cada uma /27 ou maior com oito endereços livres. Como uma task awsvpc é uma ENI, e não uma instância EC2, o tipo do target group precisa ser ip. Use um target group por serviço; o ECS registra e remove o registro das tasks.

Configuração Padrão Considere
Intervalo do health check 30 s 5 s se o serviço iniciar em menos de 10 s (sugestão da AWS)
Limite de não saudável 2 verificações Uma task com falha sai em cerca de um minuto
Limite de saudável 5 verificações Novos alvos precisam de apenas uma verificação bem-sucedida
Atraso de cancelamento do registro (deregistration delay) 300 s 30 s ou menos para requisições curtas; as tasks antigas podem drenar por esse tempo
healthCheckGracePeriodSeconds 0 Cubra o tempo de inicialização, ou as tasks de partida lenta são substituídas em loop

Desde novembro de 2025, o ECS Express Mode pode criar essa configuração de ALB, HTTPS e escalonamento a partir de uma imagem de contêiner. O diagrama de balanceador de carga cobre health checks e draining em geral.

IAM: a execution role e a task role

Duas roles, dois trabalhos:

  • A task execution role é usada pelo ECS e pelo agente do Fargate, não pelo seu código: ela baixa a imagem, grava os logs e lê os secrets citados na task definition (task execution role). AmazonECSTaskExecutionRolePolicy cobre o ECR e os logs; adicione secretsmanager:GetSecretValue você mesmo, e kms:Decrypt para uma chave gerenciada pelo cliente.
  • A task role é a que o seu código usa pelo AWS SDK, para S3 ou SQS, e a que o ECS Exec precisa.

Os secrets chegam como variáveis de ambiente:

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

O ECS lê o valor quando o contêiner inicia. Um secret rotacionado não chega às tasks em execução, então faça um novo deployment após a rotação ou deixe o app ler o secret com a sua task role. Escolher uma única chave JSON, como acima, exige a versão de plataforma 1.4.0, a atual LATEST.

Escalonamento: target tracking e Fargate Spot

Para o Service Auto Scaling, comece com target tracking em ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization ou ALBRequestCountPerTarget. Ele aumenta rápido, reduz devagar e pausa a redução durante os deployments; com várias políticas, só reduz quando todas concordam. Mantenha pelo menos uma task por AZ.

O Fargate Spot custa até 70% menos. Quando a AWS recupera a capacidade, a task recebe um aviso de dois minutos, como evento do EventBridge com o stop code SpotInterruption e como SIGTERM (capacity providers do Fargate). stopTimeout tem máximo de 120 segundos, e o Fargate nunca volta sozinho para a capacidade regular, então mantenha uma base:

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

As duas primeiras tasks sempre rodam no Fargate regular; o restante se divide um para um. Um serviço de uma única task no Spot simplesmente para até a capacidade voltar.

Deployments: rolling, blue/green, linear e canary

O rolling é o padrão: com minimumHealthyPercent em 100 e maximumPercent em 200, o ECS inicia as tasks novas antes de parar as antigas. Ative o deployment circuit breaker com rollback; por padrão, ele faz um deployment falhar quando as tasks com falha chegam à metade do número desejado (no mínimo 3, no máximo 200). Alarmes do CloudWatch podem disparar o mesmo rollback.

Desde julho de 2025, o ECS executa deployments blue/green por conta própria, sem o CodeDeploy, e desde outubro de 2025 também os lineares e canary. Eles iniciam a nova revisão atrás de um segundo target group, deslocam o tráfego do listener e mantêm as tasks antigas por um bake time, de modo que o rollback é uma troca de tráfego.

Estratégia Deslocamento do tráfego Rollback Capacidade extra
Rolling Tasks substituídas em lotes Novo deployment Até maximumPercent
Blue/green Tudo de uma vez, após tráfego de teste opcional Voltar a troca 2x
Linear Passos iguais, como 10% a cada poucos minutos Voltar a troca 2x
Canary Uma pequena parte, depois o resto Voltar a troca 2x

Hooks de Lambda ou de pausa podem condicionar cada etapa. O target tracking em ALBRequestCountPerTarget não é compatível com blue/green. O diagrama de estratégias de deployment compara os padrões.

Observabilidade

O driver awslogs precisa de awslogs-group, awslogs-region e, no Fargate, awslogs-stream-prefix. Desde 25 de junho de 2025, ele usa por padrão o modo non-blocking com um buffer de 10 MB: uma falha do CloudWatch não congela mais o seu app, mas um buffer cheio perde linhas. Adicione o Container Insights com observabilidade aprimorada, o ECS Exec para shells e uma regra do EventBridge sobre mudanças de estado das tasks; o motivo da parada (stopped reason) diz por que uma task morreu. Para traces, rode um OpenTelemetry Collector como sidecar na task; ele é a camada de agente de um pipeline de logs, métricas e traces com OpenTelemetry.

ECS vs EKS

Amazon ECS Amazon EKS
Control plane Gratuito US$ 0,10 por hora e cluster, cerca de US$ 73 por mês
API Task definitions e serviços da AWS Kubernetes, Helm, operators
Computação Fargate, EC2, ECS Managed Instances Fargate, node groups do EC2, EKS Auto Mode
Atualizações Nenhuma para o control plane 14 meses de suporte padrão por versão do Kubernetes, depois US$ 0,60 por hora e cluster
Deployments integrados Rolling, blue/green, linear, canary Rolling; os outros por ferramentas como Argo Rollouts

Os preços vêm da página de preços do EKS no momento da escrita (novembro de 2026). Escolha o EKS quando precisar da portabilidade do Kubernetes ou do seu ecossistema; o diagrama de arquitetura do Kubernetes mostra esse cenário. Para trabalho curto e orientado a eventos, os designs serverless baseados em Lambda dispensam qualquer serviço rodando o tempo todo.

O diagrama do ECS no Fargate

Uma VPC em duas Availability Zones. Os usuários chegam a um Application Load Balancer entre as sub-redes públicas, que atende uma task do Fargate por sub-rede privada. As tasks consultam o RDS Multi-AZ; ECR, Secrets Manager e os logs passam por endpoints de VPC.

22 componentes · 10 conexões

Abrir no Archboard
Conteúdo do 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
Um serviço ECS no Fargate distribuído em duas Availability Zones. O ALB nas sub-redes públicas encaminha para os IPs das tasks em sub-redes privadas; as tasks chegam ao ECR, Secrets Manager e CloudWatch Logs por endpoints de VPC, não pela internet.

Como ler:

  • As AZs são linhas. Cada uma tem uma sub-rede pública e uma privada. O ALB, o RDS e os endpoints ficam entre as linhas porque cada um abrange as duas AZs: um nó do ALB em cada sub-rede pública, um standby Multi-AZ para o banco de dados.
  • O azul contínuo é o caminho das requisições: HTTPS até o ALB, HTTP 8080 até uma task por AZ, SQL na porta 5432.
  • O roxo tracejado é o tráfego da plataforma: o pull da imagem, os secrets e os logs, enviados pelo Fargate com a task execution role pelos endpoints de VPC.
  • Só as sub-redes públicas roteiam 0.0.0.0/0 para o internet gateway.
  • O bloco Markdown lista as configurações do serviço.

Desenhando diagramas de ECS com clareza

  • Coloque as tasks dentro de sub-redes por AZ. Uma caixa «cluster ECS» em volta de tudo esconde onde as tasks rodam e o que elas alcançam.
  • Desenhe uma task por AZ, com a faixa de escalonamento ao lado.
  • Mostre o caminho até o ECR, o Secrets Manager e o CloudWatch Logs. Um caminho ausente é um motivo comum para as tasks não iniciarem.
  • Rotule a aresta do ALB com a porta e o tipo de alvo, e nomeie a role por trás das arestas tracejadas em uma legenda.
  • Deixe de fora sidecars, CI/CD e registros DNS, a menos que o diagrama seja sobre eles.

O modelo de arquitetura de três camadas da AWS tem o mesmo layout de VPC com EC2.

Monte no Archboard

  1. Entre com Google ou GitHub e crie um diagrama.
  2. Adicione uma VPC do pacote Rede e quatro nós Sub-rede dentro dela, uma pública e uma privada para cada AZ.
  3. Adicione um Balanceador de carga na nuvem do pacote Nuvem entre as sub-redes públicas, e notas de Texto nas sub-redes públicas para a rota e o nó do ALB.
  4. Adicione uma Instância de computação do pacote Nuvem em cada sub-rede privada, com o tamanho da task no campo do tipo de instância.
  5. Entre as sub-redes privadas, adicione um Banco de dados gerenciado com alta disponibilidade ativada e um Recurso de nuvem para os endpoints de VPC, ambos do pacote Nuvem.
  6. Fora da VPC, adicione Internet do pacote Rede, Registro do pacote Docker, Cofre do pacote Segurança e Registros do pacote DevOps.
  7. Desenhe arestas rotuladas, tracejadas para o tráfego da plataforma, e adicione um bloco Markdown do pacote Básico com as configurações.

As ferramentas CloudFormation para diagrama e Terraform para diagrama transformam o código de um stack existente em um primeiro rascunho; ao desenhar o serviço a partir do Terraform, enxugue o rascunho e adicione à mão o caminho das requisições.

O exemplo usa 15 nós de diagrama e fica dentro do plano Free.

Perguntas frequentes

O Fargate exige o modo de rede awsvpc? Sim. Cada task do Fargate recebe sua própria interface de rede e endereço IP privado, e é por isso que seus target groups precisam usar o tipo de alvo ip.

Qual é a diferença entre a task role do ECS e a task execution role? A execution role permite que o ECS inicie a task: baixar a imagem, buscar os secrets, enviar os logs. A task role é a que o código da sua aplicação usa para as próprias chamadas à AWS.

As tasks do Fargate em sub-redes privadas precisam de um NAT gateway? Não para os serviços da AWS. Endpoints de interface para ECR, CloudWatch Logs e Secrets Manager, mais o endpoint de gateway do S3, bastam. Você só precisa do NAT para alcançar a internet.

O ECS oferece suporte a deployments blue/green sem o CodeDeploy? Sim. O ECS executa blue/green nativamente desde julho de 2025, e linear e canary desde outubro de 2025, com bake times, lifecycle hooks e rollback baseado em alarmes.

O ECS é mais barato que o EKS? Para o control plane, sim: o ECS não tem taxa de orquestração, enquanto um cluster do EKS custa US$ 0,10 por hora no suporte padrão. Os preços do Fargate e das instâncias EC2 são os mesmos nos dois.

Comece grátis — um assento, sem cartão de crédito.

Artigos relacionados

← Voltar ao blog

Abra um canvas em um minuto

Entre com Google ou GitHub. Grátis para um assento. Faça upgrade quando a equipe entrar.