Configurando HTTPS na AWS via CloudFront

vuejs-ssl

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

  1. Abra AWS Certificate Manager na região us-east-1 (obrigatório para CloudFront).
  2. Escolha Request a certificateRequest a public certificate.
  3. Informe os domínios ennio.com.br e *.ennio.com.br.
  4. 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

  1. Em CloudFront → Distributions → Create distribution selecione o bucket como origem e vincule a OAC criada.
  2. Em Viewer defina Redirect HTTP to HTTPS.
  3. Em Alternate domain name (CNAME) adicione o host desejado (blog.ennio.com.br).
  4. Escolha o certificado do ACM (região us-east-1).
  5. Ajuste os TTLs: Default TTL 300, Max TTL 86400.
  6. 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

  1. Crie um registro CNAME ou ALIAS em Route 53 apontando para o domínio da distribuição (ex.: d123abcd.cloudfront.net).
  2. 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 4xxErrorRate e 5xxErrorRate.
  • 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.

← Voltar para Blog — Artigos sobre PHP, JavaScript e DevOps