Armazenamento de Objetos R2 vs S3: Como Eliminar Custos de Tráfego
A Rasteira do Tráfego na AWS: A Fatura Oculta do Armazenamento Cloud
Quando uma equipa de programadores começa a desenhar uma nova aplicação web ou loja online, consulta quase sempre a calculadora de preços da Amazon Web Services (AWS) para o serviço S3 (Simple Storage Service).
Os números parecem muito apelativos:
- Custo de armazenamento em disco: cerca de 0,023$ por gigabyte ao mês.
- Enviar ficheiros para a cloud (upload): Gratuito.
Se a empresa tiver 10 terabytes de fotografias de produtos, faturas em PDF e vídeos, calcula a fatura mensal: 10.000 GB * 0,023$ = 230$ por mês. O orçamento é aprovado pela gestão e a equipa instala o SDK da AWS.
Depois, a plataforma começa a receber milhares de utilizadores reais.
Os clientes visualizam 30 milhões de páginas por mês, descarregando 50 terabytes de tráfego pela internet fora. Quando a fatura do cartão de crédito chega no final do mês, a administração tem um choque brutal:
Armazenamento em Disco S3 (10 TB): 230,00 $
Tráfego de Saída para a Internet (50 TB): 4.250,00 $ <-- A ARMADILHA DO EGRESS!
Total Mensal de Armazenamento: 4.480,00 $
Guardar os ficheiros custou 230 dólares, mas deixar os clientes descarregar as fotos custou quase vinte vezes mais! A cobrança de tráfego de saída (egress fees) na AWS funciona como um resgate financeiro: meter dados lá dentro é grátis, mas tirá-los cá para fora custa uma pequena fortuna.
- O RESGATE DO EGRESS NA AWS vs ZERO EGRESS NO CLOUDFLARE R2
- MODELO TRADICIONAL NA AWS S3: [Browser do Cliente] → Tráfego de Saída: 0,08$ por GB! → [Bucket AWS S3] (50 TB de tráfego = mais de 4.000$ por mês apenas em taxas de transferência!)
- MODELO MODERNO CLOUDFLARE R2: [Browser do Cliente] → Tráfego de Saída: 0,00$ por GB! → [Bucket R2] (50 TB de tráfego = EXATAMENTE ZERO EUROS em taxas de transferência!)
Para protegeres os projetos da tua empresa com a disciplina que aplicamos nos nossos serviços de alojamento gerido, a solução passa por adotar armazenamento de objetos com zero egress no Cloudflare R2.
Cloudflare R2: Compatibilidade Total com S3 sem Custos de Transferência
Criado pela Cloudflare, o R2 revolucionou o mercado de infraestrutura ao eliminar por completo as taxas de tráfego de saída.
O modelo de preços é transparente e previsível:
- Armazenamento em repouso: 0,015$ por GB/mês (cerca de 35% mais barato do que a AWS).
- Transferência de dados de saída: 0,00$ por GB (totalmente grátis e ilimitada).
- Operações de Escrita (Classe A): 4,50$ por milhão de pedidos.
- Operações de Leitura (Classe B): 0,36$ por milhão de pedidos.
E o melhor de tudo é que o Cloudflare R2 é 100% compatível com a API do AWS S3. Não precisas de reescrever o teu código nem de aprender novas bibliotecas: continuas a usar o SDK oficial da AWS, apontando apenas o endereço do endpoint para a tua conta na Cloudflare.
ARQUITETURA DE MEDIA COM CLOUDFLARE R2
- O Teu Servidor / API: Upload com o AWS S3 SDK → [Armazenamento R2]
- (Tráfego Gratuito!)
- Visitantes do Site: Entrega Rápida na Edge → [CDN media.empresa.pt]
Ao associares o R2 à rede global de distribuição de conteúdos da Cloudflare, os ficheiros solicitados com frequência ficam guardados na memória dos servidores de Lisboa e Madrid, respondendo em 3 milissegundos sem gastar operações de leitura no bucket.
Como Usar o Cloudflare R2 em Node.js com o SDK Oficial da AWS
Vê como podes implementar esta ligação de forma simples em Node.js utilizando o pacote padrão @aws-sdk/client-s3:
// src/services/armazenamento.ts
import { S3Client, PutObjectCommand, GetObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
const ACCOUNT_ID = process.env.CLOUDFLARE_ACCOUNT_ID!;
const R2_ACCESS_KEY = process.env.R2_ACCESS_KEY_ID!;
const R2_SECRET_KEY = process.env.R2_SECRET_ACCESS_KEY!;
const BUCKET = process.env.R2_BUCKET_NAME || 'media-producao';
// Inicializa o cliente padrão da AWS apontado para o endpoint do R2
export const clienteR2 = new S3Client({
region: 'auto',
endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
credentials: {
accessKeyId: R2_ACCESS_KEY,
secretAccessKey: R2_SECRET_KEY,
},
});
export async function carregarFicheiro(
buffer: Buffer,
caminhoDestino: string,
tipoMime: string
): Promise<string> {
const comando = new PutObjectCommand({
Bucket: BUCKET,
Key: caminhoDestino,
Body: buffer,
ContentType: tipoMime,
CacheControl: 'public, max-age=31536000, immutable',
});
await clienteR2.send(comando);
// Devolve o URL com domínio próprio da tua CDN
return `https://media.x078.com/${caminhoDestino}`;
}
export async function gerarUrlUploadDireto(
caminhoDestino: string,
tipoMime: string
): Promise<string> {
const comando = new PutObjectCommand({
Bucket: BUCKET,
Key: caminhoDestino,
ContentType: tipoMime,
});
// O browser envia o ficheiro direto para o R2 sem sobrecarregar a tua API!
return await getSignedUrl(clienteR2, comando, { expiresIn: 3600 });
}
Repara na vantagem da função gerarUrlUploadDireto: o telemóvel do teu cliente envia vídeos pesados diretamente para o bucket da Cloudflare, poupando a memória e a rede da tua API.
Integrar com Nginx e Servidores Próprios em HestiaCP
Podes combinar este armazenamento em nuvem com os teus próprios servidores dedicados geridos em HestiaCP ou Debian.
No teu Nginx, configuras um proxy reverso transparente para o teu bucket:
# /etc/nginx/conf.d/proxy_media.conf
server {
listen 443 ssl http2;
server_name media.x078.com;
# Certificados SSL Let's Encrypt geridos automaticamente
ssl_certificate /etc/letsencrypt/live/media.x078.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.x078.com/privkey.pem;
location / {
proxy_pass https://pub-9f8e7d6c5b4a392817.r2.dev;
proxy_set_header Host pub-9f8e7d6c5b4a392817.r2.dev;
proxy_hide_header x-amz-request-id;
# Cache agressiva de longo prazo no navegador
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header X-Content-Type-Options "nosniff" always;
}
}
Esta arquitetura híbrida assegura que os teus websites de alta performance carregam imagens a velocidade instantânea sem que a fatura cloud dispare no final do mês. Podes consultar mais projetos de integração no GitHub.
Boas Práticas Operacionais: Permissões de Chaves e Regras de Limpeza
Seguindo os padrões comprovados na WebXtek, deves aplicar estas três recomendações essenciais:
- Limita as Permissões das Chaves de API: Nunca uses tokens globais de administrador no código das tuas aplicações. No painel da Cloudflare, cria chaves de acesso restritas exclusivamente à escrita e leitura no bucket específico do projeto.
- Configura Regras de Limpeza de Ficheiros Temporários: Não guardes exportações temporárias de utilizadores para sempre. Define regras de ciclo de vida no R2 para apagar automaticamente ficheiros da pasta
tmp/ao fim de 7 dias. - Cuidado com Listagens Repetidas de Ficheiros: Se a tua aplicação fizer milhões de operações
LISTouHEADno bucket, os custos de operações de Classe A podem subir. Guarda os nomes e caminhos dos ficheiros na tua base de dados PostgreSQL para pesquisares localmente em milissegundos.
Ao livrares a infraestrutura da tua empresa das taxas de tráfego da AWS S3 e adotares o Cloudflare R2 com cache na borda, ganhas tranquilidade financeira e eliminas faturas surpresa para sempre. Se precisas de ajuda para migrar dados com zero paragens de serviço, a nossa equipa de consultoria técnica está à tua disposição.
Na prática, aplicas exatamente estes padrões operacionais em setores exigentes como saas empresarial b2b e provedores de cloud computing e iaas. Quando alinhas a tua estrutura através de alojamento gerido para websites e aplicações e websites de alta performance, transformas boas práticas técnicas numa vantagem competitiva real e mensurável para o teu negócio.
[+] [ INDEX_DIRECTORY ] 13 tópicos ▼
- A Rasteira do Tráfego na AWS: A Fatura Oculta do Armazenamento Cloud
- Cloudflare R2: Compatibilidade Total com S3 sem Custos de Transferência
- Como Usar o Cloudflare R2 em Node.js com o SDK Oficial da AWS
- Integrar com Nginx e Servidores Próprios em HestiaCP
- Boas Práticas Operacionais: Permissões de Chaves e Regras de Limpeza
- Autor
- Perguntas Frequentes
- O que são as taxas de tráfego de saída (egress fees) na AWS S3?
- Como é que o Cloudflare R2 elimina as taxas de transferência de dados?
- O Cloudflare R2 funciona com as bibliotecas e ferramentas do AWS S3?
- Como é que o uso de um domínio personalizado na Cloudflare reduz ainda mais os custos?
- Nós Relacionados
- Sequência do Caminho
Perguntas Frequentes
O que são as taxas de tráfego de saída (egress fees) na AWS S3?
Enquanto guardar dados no S3 custa cerca de 0,023€ por GB ao mês, transferir esses dados para a internet pública custa entre 0,05€ e 0,09€ por GB. Em aplicações com muitas fotos ou vídeos, o custo da transferência de saída representa habitualmente mais de 80% de toda a fatura cloud.
Como é que o Cloudflare R2 elimina as taxas de transferência de dados?
O Cloudflare R2 adota um modelo pioneiro de tráfego de saída gratuito (zero egress). Pagas apenas pelo espaço ocupado em disco (0,015$/GB/mês) e operações de leitura/escrita. Podes transferir terabytes ou petabytes para a internet sem pagar um único cêntimo de tráfego.
O Cloudflare R2 funciona com as bibliotecas e ferramentas do AWS S3?
Sim. O R2 implementa a especificação oficial da API do S3. Podes usar o SDK oficial da AWS para Node.js, Python ou ferramentas como o rclone simplesmente mudando o endereço do endpoint para o URL da tua conta Cloudflare.
Como é que o uso de um domínio personalizado na Cloudflare reduz ainda mais os custos?
Ao associares um domínio próprio (como media.empresa.pt) ao bucket do R2 com a cache da Cloudflare ativada, os ficheiros são servidos a partir da memória dos servidores edge em 3ms. Os pedidos em cache não pagam operações de leitura ao R2, garantindo velocidade máxima a custo quase zero.
[ RELATED_NODES ]
> INICIAR_PROJETO
Precisa de um website que transmita confiança, apareça na pesquisa e dê mais força à sua presença digital? Comece a conversa aqui.