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
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
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:
- Crie um bucket chamado
static.dominioexemplo.com
- Desabilite o bloqueio de acesso público (libere leitura pública)
- Ative a opção Static Website Hosting
- Index document:
index.html
- Error document:
404.html
(opcional)
- Index document:
- Faça upload do conteúdo (por exemplo:
index.html
, arquivos JS/CSS, etc)
Passo 2: Configurar o Cloudflare
No painel do Cloudflare:
DNS
- Crie um registro CNAME:
- Nome:
static
- Target:
static.dominioexemplo.com.s3-website-us-east-1.amazonaws.com
- Proxy: ativado (ícone laranja)
SSL/TLS
- Acesse SSL/TLS > Overview
-
Modo:
Full
ouFull (Strict)
(recomendado se usar certificado válido via ACM)- 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/*"
}
]
}
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.