Pular para o conteúdo

AWS: o mapa essencial

Intermediário22 min de leituracloud
Antes disto:

A AWS tem mais de duzentos serviços e você vai usar uns quinze. Esta página é o mapa desses quinze: o que cada um resolve, quando escolher um em vez do outro e a armadilha que costuma aparecer depois. Não é substituto da documentação — é o atalho para saber o que procurar nela.

Computação: escolha pelo que você não quer operar

Seção intitulada “Computação: escolha pelo que você não quer operar”
Serviço Use quando Custo de operação
Lambda Evento, tarefa curta, tráfego irregular Mínimo; limite de tempo e partida a frio
ECS + Fargate Container sem querer cluster Baixo; menos flexível que Kubernetes
EKS Já usa Kubernetes, precisa do ecossistema Alto: você opera upgrades e add-ons
EC2 Software legado, licença, controle de kernel Você mantém patch, imagem e escala

O caminho de menor arrependimento para a maioria: container em ECS com Fargate, e EKS só quando existir motivo (ecossistema Kubernetes, portabilidade, time que já opera cluster). EKS cobra pelo control plane e, principalmente, cobra em atenção do time.

Lambda brilha em tarefa acionada por evento (S3, fila, cron) e engana quando vira arquitetura inteira: dezenas de funções sem rastreamento distribuído são mais difíceis de operar que um serviço.

  • VPC com sub-redes públicas e privadas, como visto na página anterior.
  • ALB para HTTP/HTTPS (roteamento por caminho e host), NLB para TCP/UDP e latência muito baixa.
  • Route 53 para DNS, com health check e roteamento por latência ou geolocalização.
  • CloudFront para CDN — e também para reduzir egress, já que a saída pela CDN costuma custar menos que a saída direta da região.
  • WAF na frente do ALB ou do CloudFront quando houver exposição pública relevante.

Para região, sa-east-1 (São Paulo) é o padrão para atender o Brasil: latência menor e conversa mais simples sobre transferência internacional de dados.

  • S3 — objetos. Barato, durável, com classes de armazenamento e ciclo de vida. Ative versionamento e bloqueio de acesso público na conta inteira.
  • RDS / Aurora — relacional gerenciado. Multi-AZ para disponibilidade, réplica de leitura para escala de leitura, deletion_protection sempre.
  • DynamoDB — chave-valor com escala elástica. Excelente quando o padrão de acesso é conhecido; ruim para consulta exploratória. Modele pelas consultas, não pelas entidades.
  • ElastiCache — Redis gerenciado para cache e sessão.
  • SQS / SNS / EventBridge — fila, publicação-assinatura e barramento de eventos. SQS com dead-letter queue desde o primeiro dia.
Janela do terminal
# higiene de S3 que evita a manchete: bloqueio de acesso público na conta
aws s3control put-public-access-block --account-id 000000000000 \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

IAM Identity Center (o antigo AWS SSO) para pessoas, integrado ao provedor de identidade da empresa; IAM Roles para workloads; Organizations com SCPs para os limites que nenhuma conta pode ultrapassar. Nada de usuário IAM com chave estática de longa duração — nem para você, nem para o CI (OIDC resolve).

Uma conta por ambiente, no mínimo. É o assunto de Landing zone e a melhor decisão estrutural que se toma cedo.

CloudWatch para métricas, logs e alarmes; X-Ray ou OpenTelemetry para tracing; CloudTrail para auditoria — habilitado em todas as regiões, com destino em conta separada.

CloudWatch Logs é conveniente e caro em volume alto. Defina retenção por grupo de log (o padrão é “para sempre”) e leve o histórico para S3:

Janela do terminal
aws logs put-retention-policy --log-group-name /aws/lambda/loja --retention-in-days 14
# grupos sem retenção definida — a fonte silenciosa de custo
aws logs describe-log-groups --query 'logGroups[?!retentionInDays].logGroupName'

Ative Cost Explorer, um orçamento com alerta e a tag obrigatória de centro de custo desde a primeira semana. Sem tag, a conversa sobre custo em seis meses vira arqueologia.

  • NAT Gateway processando tráfego que deveria ir por endpoint privado.
  • Snapshot e volume EBS órfãos de instâncias que não existem mais.
  • IPs elásticos alocados e não associados.
  • Tráfego entre zonas em aplicações conversadoras.
  • Instância provisionada para o pico o mês inteiro, sem plano de economia.
  • Log sem retenção acumulando por anos.
Janela do terminal
aws ec2 describe-volumes --filters Name=status,Values=available \
--query 'Volumes[].{id:VolumeId,gb:Size,criado:CreateTime}' --output table

Próximo passo: compare o modelo com o de outro provedor em Azure: o mapa essencial, ou vá direto para a organização de contas em Landing zone.