DEV Community

Cover image for Como usar Cloudflare para servir um domínio customizado com HTTPS de um bucket S3
Marcos Vilela
Marcos Vilela

Posted on

Como usar Cloudflare para servir um domínio customizado com HTTPS de um bucket S3

Servir arquivos estáticos diretamente da AWS S3 com um domínio customizado e HTTPS é uma prática comum em ambientes modernos de DevOps. Neste artigo, mostro como configurar um domínio como https://static.dominioexemplo.com para servir um frontend hospedado em um bucket S3, mantendo HTTPS via Cloudflare.

Objetivo

Apontar https://static.dominioexemplo.com para o conteúdo hospedado em:

https://nome-do-bucket.s3.us-east-1.amazonaws.com/dev/app/index.html
Enter fullscreen mode Exit fullscreen mode

Mantendo:

  • Domínio próprio na barra de endereços
  • HTTPS válido via Cloudflare
  • Performance e caching otimizados

Estrutura do conteúdo

No exemplo, os arquivos estão no seguinte caminho no S3:

/dev/app/index.html
Enter fullscreen mode Exit fullscreen mode

Para servir isso diretamente como https://static.dominioexemplo.com, a abordagem ideal é usar um bucket com o mesmo nome do domínio e mover os arquivos para a raiz.

Passo 1: Criar um bucket com o nome do domínio

No AWS S3:

  1. Crie um bucket chamado static.dominioexemplo.com
  2. Desabilite o bloqueio de acesso público (libere leitura pública)
  3. Ative a opção Static Website Hosting
    • Index document: index.html
    • Error document: 404.html (opcional)
  4. Faça upload do conteúdo (por exemplo: index.html, arquivos JS/CSS, etc)

Passo 2: Configurar o Cloudflare

No painel do Cloudflare:

DNS

  1. Crie um registro CNAME:
  • Nome: static
  • Target: static.dominioexemplo.com.s3-website-us-east-1.amazonaws.com
  • Proxy: ativado (ícone laranja)

SSL/TLS

  1. Acesse SSL/TLS > Overview
  • Modo: Full ou Full (Strict) (recomendado se usar certificado válido via ACM)

    1. Em SSL/TLS > Edge Certificates
  • Ative o Always Use HTTPS

  • Habilite Automatic HTTPS Rewrites

Passo 3: Permissões públicas no bucket

Política mínima para permitir leitura pública:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::static.dominioexemplo.com/*"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Aplica-se diretamente nas configurações do bucket.

Resultado

Acessando https://static.dominioexemplo.com, o visitante terá acesso ao conteúdo estático hospedado na AWS, com:

  • HTTPS válido via Cloudflare
  • Domínio próprio preservado
  • Boa performance e cache via proxy reverso

Considerações finais

  • Utilize sempre o endpoint de site estático da S3, não o endpoint padrão de objetos (s3.amazonaws.com)
  • O certificado do Cloudflare cobre o acesso HTTPS dos visitantes, mesmo que o S3 não tenha um certificado público
  • Essa abordagem é ideal para frontends estáticos.

Top comments (0)