ALB
Application Load Balancer — entrada HTTP/HTTPS da API
O Application Load Balancer (ALB) é o ponto de entrada HTTP/HTTPS para as APIs do CRM na AWS. Ele termina TLS (certificado ACM), distribui requisições entre targets saudáveis do Target Group e aplica regras por host, path ou header — sem expor IPs individuais das tasks ECS.
O que o ALB faz (e o que não faz)
| Faz | Não faz |
|---|---|
| Balanceamento L7 (HTTP/HTTPS/WebSocket) | Balanceamento TCP puro de longa duração (use NLB) |
| Terminação SSL com certificado ACM | Executar código da aplicação |
| Redirecionar HTTP → HTTPS | Substituir autenticação da API |
| Sticky sessions (opcional) | Cache de resposta (use CloudFront) |
Componentes
| Componente | Descrição |
|---|---|
| Load balancer | Recurso com DNS name xxx.region.elb.amazonaws.com |
| Listener | Porta + protocolo (80, 443) |
| Rules | Prioridade: condição → ação (forward, redirect, fixed response) |
| Target group | Conjunto de IPs/instâncias/Lambda |
| Security group | Tráfego permitido na ENI do ALB |
Listeners típicos no CRM
| Porta | Protocolo | Ação comum |
|---|---|---|
| 443 | HTTPS | Forward para TG da API com certificado ACM |
| 80 | HTTP | Redirect permanente para 443 |
Certificados TLS
| Origem | Uso |
|---|---|
| ACM (AWS Certificate Manager) | Certificado gratuito renovado automaticamente no ALB |
| Certificado Kinghost / externo | Pode ser importado no ACM ou terminado em outro layer |
Para domínios cujo registro está na Kinghost mas DNS está no Route 53, a validação ACM costuma ser por registro DNS no Route 53.
Regras de roteamento (exemplos)
| Prioridade | Condição | Ação |
|---|---|---|
| 1 | Host: api.crm.exemplo.com | Forward → TG produção |
| 2 | Path: /health* | Forward → TG (ou fixed 200 em ambiente específico) |
| default | — | Fixed response 404 |
Headers e integração com a API
O ALB injeta headers úteis para a aplicação:
| Header | Significado |
|---|---|
X-Forwarded-For | IP original do cliente |
X-Forwarded-Proto | https quando listener é HTTPS |
X-Forwarded-Port | Porta do listener |
A API deve confiar nesses headers somente se vierem do ALB (não aceitar de clientes diretos na mesma porta).
Alta disponibilidade e limites
- ALB é regional e multi-AZ por design.
- Idle timeout padrão (60 s) afeta conexões longas; WebSockets precisam de configuração adequada.
- Limites de regras por listener e tamanho de request body seguem quotas da conta AWS.
WAF (opcional)
AWS WAF pode ser associado ao ALB para bloquear IPs, rate limit, SQLi — camada extra antes do Target Group.
Relação com outros serviços
| Serviço | Relação |
|---|---|
| Route 53 | Registro alias A apontando para o ALB |
| TG | Destino do forward |
| ECS | Tasks registradas no TG |
| SG | ALB SG inbound 443 da internet; task SG inbound só do ALB |
| CF | Pode usar ALB como origem (menos comum que S3 para estáticos) |
Se usuários recebem 502/503, distinga: 502 costuma ser target sem resposta válida; 503 frequentemente significa nenhum target healthy no grupo — verifique health check e security groups antes de debugar código da API.