
Ao publicar sites estáticos no S3 o passo seguinte costuma ser ativar HTTPS e cache global. O CloudFront entrega esses dois requisitos com um setup simples. Veja como replicar minha configuração padrão.
1. Criar o certificado no ACM
- Abra AWS Certificate Manager na região
us-east-1(obrigatório para CloudFront). - Escolha Request a certificate → Request a public certificate.
- Informe os domínios
ennio.com.bre*.ennio.com.br. - Valide via DNS adicionando os CNAMEs sugeridos ao Route 53.
2. Preparar o bucket de origem
- Ative Static website hosting e deixe o bucket privado.
- Crie uma Origin Access Control (OAC) para evitar acesso direto ao S3.
- Atualize a política do bucket com o JSON gerado pelo console para permitir apenas o principal do CloudFront.
3. Criar a distribuição
- Em CloudFront → Distributions → Create distribution selecione o bucket como origem e vincule a OAC criada.
- Em Viewer defina
Redirect HTTP to HTTPS. - Em Alternate domain name (CNAME) adicione o host desejado
(
blog.ennio.com.br). - Escolha o certificado do ACM (região us-east-1).
- Ajuste os TTLs:
Default TTL 300,Max TTL 86400. - Salve e aguarde o status
Deployed.
4. Regras de cache e compressão
- Use a cache policy
CachingOptimized. - Ative a Origin request policy
CORS-S3Origin. - Ligue Compress objects automatically para servir gzip/brotli sem mexer no build.
5. DNS e validação
- Crie um registro CNAME ou ALIAS em
Route 53apontando para o domínio da distribuição (ex.:d123abcd.cloudfront.net). - Limpe o cache do navegador e execute:
curl -I https://blog.ennio.com.br/
O retorno deve exibir Server: CloudFront e código 200.
6. Monitoramento e logs
- Em Observability habilite logs padrão enviando-os para um bucket S3
dedicado (
logs-cloudfront). - Configure um dashboard no CloudWatch com métricas de
4xxErrorRatee5xxErrorRate. - Para invalidar arquivos críticos, use
Create invalidation → /*em deploys maiores ou paths específicos (/index.html).
Essa arquitetura mantém o conteúdo seguro, reduz o custo de transferência no S3 e evita que usuários encontrem o endpoint público sem HTTPS.