DNS não transporta o conteúdo
O Route 53 resolve o hostname. Depois disso, o navegador estabelece a conexão HTTPS diretamente com a rede do CloudFront.
Arquitetura segura e escalável para publicação de uma SPA React, com origem privada, distribuição global, HTTPS e domínio customizado na AWS.
Ambiente implementado
Os dados abaixo representam o ambiente implantado e foram conferidos por consultas de leitura e testes HTTP após o deploy.
Visão geral
A solução disponibiliza uma aplicação React sem servidores web dedicados. Os arquivos estáticos permanecem em uma origem privada e são entregues pelo CloudFront com cache distribuído, domínio próprio e criptografia TLS.
Desafio
Arquitetura
O Route 53 resolve o hostname, mas não transporta o conteúdo. Depois da resolução DNS, o navegador acessa a rede do CloudFront por HTTPS. A CDN utiliza o certificado do ACM e busca os arquivos no S3 por meio do OAC, sem tornar o bucket público.
Usuário
Navegador
Amazon Route 53
DNS público · Alias
Amazon CloudFront
CDN global · HTTPS
Bucket privado
Amazon S3
index.html + assets
Cache HIT
O CloudFront responde diretamente da edge, sem consultar o S3.
Fallback da SPA
Erros 403 e 404 retornam /index.html com status 200.
O diagrama representa o caminho da requisição, as fronteiras de acesso e o comportamento de cache da solução.
Fundamentos
Além da criação dos recursos, o projeto foi usado para compreender o caminho da requisição, as fronteiras de segurança e o comportamento do cache.
O Route 53 resolve o hostname. Depois disso, o navegador estabelece a conexão HTTPS diretamente com a rede do CloudFront.
A borda termina TLS, consulta o cache e busca a origem quando necessário. O bucket continua provisionado em uma Região AWS.
Em um hit, a borda responde sem consultar o S3. Em um miss, busca o objeto na origem e pode armazenar uma cópia.
O bucket permanece privado para impedir que domínio, TLS, cache e controles da distribuição sejam contornados.
O CloudFront assina a requisição com SigV4, e a bucket policy limita GetObject ao ARN da distribuição autorizada.
Enviar arquivos ao S3 não basta: a versão correta precisa estar sendo entregue pela CDN, especialmente o index.html da SPA.
Decisões técnicas
O endpoint público de website do S3 foi descartado. O CloudFront acessa o bucket privado por OAC e uma policy restritiva.
Um registro Alias A no Route 53 resolve residencia.fsocloudconsulting.com para a distribuição CloudFront.
O certificado do hostname da aplicação foi emitido pelo ACM em us-east-1, região exigida pelo CloudFront.
A política gerenciada CachingOptimized reduz acessos à origem. A atualização do index.html exige invalidação ou uma política de TTL específica.
Respostas 403 e 404 retornam o index.html com status 200, preservando o roteamento do lado do cliente.
Toda requisição HTTP é redirecionada para HTTPS antes da entrega do conteúdo.
Implementação
A implementação conectou a geração do build da aplicação à configuração da origem, distribuição, certificado e DNS, mantendo cada responsabilidade isolada e verificável.
Validação
Uma requisição por HTTP é redirecionada para HTTPS com resposta 301.
Um caminho que não corresponde a um arquivo retorna o index.html, sem expor um erro do S3.
O acesso direto à URL do bucket é negado; o conteúdo é servido exclusivamente pelo CloudFront.
Uma segunda consulta ao conteúdo retornou Hit from cloudfront em uma edge location de São Paulo.
Validações repetidas em 27/09/2026. Identificadores internos da conta AWS foram omitidos desta página pública.
Resultados
Case técnico