CloudFront
CDN global para conteúdo estático e cache de origem
O Amazon CloudFront é a CDN (Content Delivery Network) da AWS: replica conteúdo em edge locations perto do usuário, reduz latência e carga na origem (S3 ou ALB).
| Cenário | Origem CloudFront | Benefício |
|---|
| Painel SPA / assets | S3 ou Amplify | JS/CSS/imagens carregam mais rápido no Brasil e exterior |
| Downloads públicos | S3 com OAC | Menos tráfego direto no bucket |
| API com cache seletivo | ALB | Só se endpoints forem idempotentes e cacheáveis (cuidado) |
A API dinâmica do CRM normalmente não deve ser cacheada agressivamente sem políticas explícitas de Cache-Control.
| Componente | Função |
|---|
| Distribution | Configuração global (domínio, certificado, behaviors) |
| Origin | S3 bucket, ALB, custom HTTP |
| Behavior | Path pattern → qual origin, métodos, TTL de cache |
| Cache policy | O que entra no cache (headers, query strings, cookies) |
| Origin request policy | O que repassa à origem |
| Response headers policy | CORS, security headers (HSTS, CSP) |
| Configuração | Impacto |
|---|
| TTL mínimo/default/máximo | Tempo no edge antes de revalidar |
| Query strings | Incluir na chave de cache só o necessário (ex. ?v=hash) |
| Cookies | Incluir cookies na chave fragmenta cache — evite em assets públicos |
| Invalidation | /* após deploy de frontend — custo por path |
Para SPA em S3, behavior comum:
| Path | Origin | Cache |
|---|
/static/* | S3 | Longo (1 ano com hash no filename) |
/* | S3 index.html | Curto ou sem cache para HTML |
| Item | Detalhe |
|---|
| Certificado | ACM na região us-east-1 (requisito CloudFront) |
| Alternate domain (CNAME) | app.exemplo.com na distribution |
| DNS | Route 53 alias para a distribution |
| Sem OAC | Com OAC |
|---|
| Bucket público ou URLs vazando | Apenas CloudFront lê objetos; Block Public Access ativo |
Fluxo: usuário → CloudFront (assinatura) → S3; acesso direto ao bucket negado.
| Sintoma | Causa |
|---|
| SPA roteamento 404 em refresh | Falta custom error 403/404 → /index.html |
| Asset antigo após deploy | Cache TTL alto sem invalidation ou sem hash no filename |
| CORS no browser | Response headers policy ou CORS no S3/origem inconsistentes |
| API retorna dado velho | Behavior cacheando GET indevidamente |
- Cobrança por tráfego de saída (data transfer out) e requisições por edge.
- Origem S3 na mesma região reduz custo de pull origin.
| Serviço | Relação |
|---|
| S3 | Origem mais comum para estáticos |
| Route 53 | Aponta domínio para distribution |
| ALB | Origem opcional para APIs |
| Amplify | Pode usar CloudFront gerenciado pelo Amplify |