Containers on AWS ECS · EKS · ECR · Fargate — Revisão SAA-C03

Docker on an OS

Dentro de um servidor (ex: instância EC2), múltiplos containers Docker rodam de forma isolada, cada um com seu próprio runtime e dependências — sem interferência entre si.

  • Cada container encapsula a aplicação e suas dependências
  • Containers Java, Node.js e MySQL rodam lado a lado no mesmo OS
  • O Docker Daemon no host gerencia todos os containers
  • Recursos de CPU e memória são compartilhados com o host
Docker on an OS — múltiplos containers em um servidor EC2
Múltiplos containers em uma instância EC2

O que é Docker?

Onde ficam as imagens Docker?

Imagens Docker ficam armazenadas em Docker Repositories.

Docker Hub

Amazon ECR

Docker vs. Máquinas Virtuais

  • Docker é "de certa forma" uma virtualização, mas não exatamente
  • Recursos são compartilhados com o host → muitos containers em um servidor
AspectoVMDocker
IsolamentoTotal (Guest OS)Processo no Host OS
OverheadAlto (GB/VM)Baixo (MB/container)
Boot timeMinutosSegundos
Camada extraHypervisor + Guest OSDocker Daemon
Docker vs Virtual Machines — comparativo de arquitetura
VM vs Container — arquitetura comparada

Como funciona o Docker

  • Dockerfile → define a imagem (FROM, COPY, RUN, CMD…)
  • Build → gera a Docker Image
  • Push → envia para Docker Hub ou Amazon ECR
  • Pull → baixa a imagem do repositório
  • Run → executa como container
Fluxo: Dockerfile → Docker Image → Container
Dockerfile → Image → Container

Gerenciamento de Containers na AWS


Amazon ECS — EC2 Launch Type

  • ECS = Elastic Container Service
  • Deploy de containers = lançar ECS Tasks em ECS Clusters
  • Você precisa provisionar e manter as instâncias EC2
  • Cada EC2 deve rodar o ECS Agent para se registrar no cluster
  • A AWS cuida de iniciar e parar os containers
Amazon ECS EC2 Launch Type — diagrama do cluster
ECS Cluster com EC2 Instances e ECS Agent

Amazon ECS — Fargate Launch Type

  • Sem provisionamento de infraestrutura — totalmente Serverless
  • Você apenas cria as task definitions
  • A AWS executa ECS Tasks com base na CPU/RAM necessária
  • Para escalar: aumente o número de tasks — sem EC2
Dica de prova
EC2 Launch Type = você gerencia EC2 + ECS Agent.
Fargate = serverless, só crie task definitions.
Amazon ECS Fargate Launch Type — cluster serverless
Fargate — sem EC2, só tasks

Amazon ECS — IAM Roles

EC2 Instance Profile (somente EC2 Launch Type)

  • Usado pelo ECS Agent para chamadas de API ao ECS
  • Envia logs ao CloudWatch Logs
  • Faz pull de imagens do ECR
  • Referencia dados no Secrets Manager / SSM Parameter Store

ECS Task Role

  • Cada task tem um role específico
  • Roles diferentes para cada ECS Service
  • Definido na task definition
ECS IAM Roles — EC2 Instance Profile e Task Role
EC2 Instance Profile vs ECS Task Role

Amazon ECS — Load Balancer Integrations

  • Application Load Balancer — recomendado para maioria dos casos
  • Network Load Balancer — alto throughput / alta performance ou AWS PrivateLink
  • Classic Load Balancer — suportado mas não recomendado (sem Fargate)
ECS Load Balancer Integration — ALB com ECS Tasks
ALB distribuindo para ECS Tasks

Amazon ECS — Data Volumes (EFS)

  • Monte sistemas de arquivos EFS nas ECS Tasks
  • Funciona para EC2 e Fargate launch types
  • Tasks em qualquer AZ compartilham os mesmos dados
  • Fargate + EFS = Serverless
  • Caso de uso: armazenamento compartilhado multi-AZ persistente
Importante
Amazon S3 não pode ser montado como sistema de arquivos em containers ECS.
ECS Data Volumes com EFS — EC2 e Fargate montando EFS
EC2 e Fargate montando EFS compartilhado

ECS Service Auto Scaling

Atenção
ECS Service Auto Scaling (task level) ≠ EC2 Auto Scaling (instance level).
Fargate Auto Scaling é muito mais simples (Serverless).

EC2 Launch Type — Auto Scaling Instances

Exemplo: ECS Scaling por CPU

ECS Scaling — CPU Usage → CloudWatch → Auto Scaling → Scale ECS
CloudWatch Metric → Alarm → Auto Scaling Group → Scale ECS Capacity Providers

ECS Tasks invocadas pelo EventBridge

ECS Task invocada por EventBridge — S3 upload → task → DynamoDB
Upload S3 → EventBridge → ECS Task (Fargate) → DynamoDB

ECS Tasks invocadas por EventBridge Schedule

ECS Task agendada pelo EventBridge Schedule — batch processing S3
EventBridge Schedule (cada 1h) → ECS Task → Batch Processing no S3

ECS com SQS Queue

ECS com SQS — tasks fazem poll da fila e ECS Auto Scaling escala
SQS Queue → ECS Service faz poll → Auto Scaling por volume da fila

ECS — Intercept Stopped Tasks com EventBridge

ECS Stopped Task → EventBridge → SNS → email para administrador
Container parado → evento → EventBridge → SNS → e-mail ao administrador


ECS Task Definition — Estrutura

A Task Definition é o "blueprint" de como seu container vai rodar. É um arquivo JSON versionado (família + revisão) que define tudo que uma task precisa.

Estrutura ECS Task Definition Task Definition (JSON) — familia:revisao ex: my-app:3 IAM Roles taskRole / executionRole agente ECS acessa ECR/CW Rede networkMode awsvpc | bridge | host Recursos cpu 256–4096 memory 512–30720 MB Container Definitions Container A image, portMappings, env Container B image, portMappings, logs Sidecar xray-daemon, dependsOn Volumes EFS, bind mount, EBS Logging awslogs → CloudWatch · firelens → S3 Fargate exige networkMode: awsvpc Cada task recebe ENI propria + Security Group individual
Comparativo direto ECS vs EKS — os pontos mais cobrados na SAA-C03
Dica de prova
Trigger words para EKS: "já usa Kubernetes", "multi-cloud", "portabilidade", "on-premises Kubernetes".
Trigger words para ECS: "simples", "only-AWS", "menor custo de operação", "novo projeto de containers".


Qual servico usar? — Arvore de decisao

Questao classica da prova: dado um cenario, qual servico de container escolher?

Arvore de decisao containers AWS Preciso rodar containers na AWS Ja uso Kubernetes ou preciso de multi-cloud? Sim EKS Nao Preciso gerenciar instancias EC2? Sim ECS+EC2 controle total Nao Workload tolera interrupcoes (Spot)? Sim Fargate Spot ~70% mais barato batch / CI/CD Nao ECS + Fargate Serverless — sem EC2 para gerenciar
Fluxo de decisao: EKS → ECS+EC2 → Fargate Spot → ECS+Fargate
Dica de prova
"jobs noturnos, minimo custo, tolerante a falhas"Fargate Spot.

ECS vs EKS — Comparativo

Empresa ja usa Kubernetes → EKS. Novo projeto only-AWS → ECS.

Comparativo ECS vs EKS SAA-C03 Amazon ECS Amazon EKS OrquestradorProprietario AWSKubernetes (open-source) API / configTask Definitions (JSON)Pods / Deployments (YAML) Multi-cloudNao — somente AWSSim — Azure, GCP, on-prem ComplexidadeBaixa — simples de operarAlta — curva de aprendizado Custo baseGratis (paga so compute)+$0.10/h por cluster Quando usarNovo projeto, only-AWSMigracao k8s, multi-cloud Logs / metricasCloudWatch nativoContainer Insights (CW) Gatilho prova"new project" / "AWS only""migrating k8s" / "multi-cloud"
Pontos mais cobrados na SAA-C03
Dica de prova
EKS: "ja usa Kubernetes", "multi-cloud", "portabilidade".
ECS: "simples", "only-AWS", "novo projeto".

Amazon ECR — Lifecycle Policies

Frequentemente omitido nos estudos, mas cobrado na prova como mecanismo de controle de custo e organização de imagens.

Dica de prova
Cenário: "custos do ECR crescendo sem controle — imagens antigas acumulando" → solução: ECR Lifecycle Policy.

ECS Service Connect e Service Discovery

Como os serviços ECS se comunicam entre si dentro de um cluster?

ECS Service Discovery (Cloud Map)

ECS Service Connect (mais recente)

Dica de prova
Se a questão perguntar sobre comunicação interna entre serviços ECS: Service Connect (solução mais simples e moderna) ou Service Discovery via Cloud Map (mais configurável).

Amazon ECR

  • ECR = Elastic Container Registry
  • Armazena e gerencia imagens Docker na AWS
  • Repositório Privado e Público (ECR Public Gallery)
  • Integrado ao ECS, com backing no Amazon S3
  • Acesso controlado pelo IAM
  • Suporta scan de vulnerabilidades, versionamento, image tags e lifecycle
Amazon ECR — repositório de imagens Docker com pull via IAM Role
ECR Repository → pull via IAM Role → ECS

Amazon EKS — Overview

Amazon EKS — Diagrama de Arquitetura

Amazon EKS — diagrama VPC com múltiplas AZs, EKS nodes, pods e load balancers
EKS Cluster — VPC com 3 AZs, subnets públicas/privadas, EKS Nodes e Pods

Amazon EKS — Node Types

Amazon EKS — Data Volumes

Resumo para a prova
ServiçoDescriçãoQuando usar
ECS + EC2Containers em EC2 gerenciadas por vocêControle total da infra
ECS + FargateContainers serverlessSem gestão de servidores
EKSKubernetes gerenciadoJá usa Kubernetes; multi-cloud
ECRRegistry de imagens DockerArmazenar imagens na AWS
FargateServerless para ECS e EKSEscala simples, sem EC2