1. Separe a fatura em cinco itens#

Comparar armazenamento de objetos pelo preço do GB-mês é como comparar planos de celular só pelo preço do minuto. Esse valor aparece em todas as páginas de preços, mas a fatura final depende de quantas operações você faz, de quantos dados saem para a internet e de o provedor aplicar ou não uma cobrança mínima ou uma duração mínima de armazenamento.

Antes de olhar provedores, descreva a sua carga com cinco números mensais: armazenamento médio, gravações, leituras, dados que saem para a internet e a vida média de cada objeto. Com esses dados você consegue calcular qualquer tarifa pública; sem eles, qualquer comparação é só intuição.

  • Armazenamento: volume médio do mês, não o pico. É cobrado como GB-mês ou GiB-mês.
  • Operações: PUT, GET, LIST, HEAD e similares, agrupadas em classes com preços diferentes.
  • Egress: dados que saem do provedor para a internet ou outra nuvem.
  • Mínimos: assinaturas base, cotas incluídas e tamanhos mínimos de objeto cobráveis.
  • Retenção mínima: dias que você paga mesmo apagando o objeto antes, comum em classes de acesso infrequente ou frias.

Este guia usa os mesmos números revisados do comparador de armazenamento da Codifly para AWS S3 Standard em N. Virginia, Cloudflare R2 Standard, Backblaze B2 Pay as you go e DigitalOcean Spaces Standard. Se o que você precisa é fazer upload de arquivos direto do navegador sem expor o bucket, o guia de uploads diretos com URLs assinadas cobre esse fluxo; aqui o foco é o custo.

Para se aprofundar: Uploads diretos para o S3: URLs assinadas sem expor seus arquivos

2. GiB vs GB: a diferença de 7,4% que ninguém olha#

Um GB decimal são 10⁹ bytes; um GiB são 2³⁰ bytes, ou seja, 1.073.741.824 bytes. A AWS documenta que o S3 calcula o uso de armazenamento em GB binários, em que 1 GB equivale a 2³⁰ bytes. A DigitalOcean publica os preços do Spaces diretamente em GiB. A Cloudflare publica as tarifas do R2 em GB sem esclarecer a base na página de preços, e a Backblaze as publica por TB.

Se o seu inventário diz 1.000 GB decimais e o provedor cobra em GiB, ele vai cobrar cerca de 931,32 GiB. Para comparar tarifas na mesma unidade, divida a tarifa por GiB por 1,073741824. O comparador faz exatamente isso: os $0,023 por GiB-mês do S3 viram cerca de $0,02142 por GB decimal, e os $0,02 por GiB-mês adicionais do Spaces, cerca de $0,01863.

python
GIB = 2**30 / 10**9  # 1.073741824 GB decimais por GiB

def tarifa_por_gb_decimal(tarifa_por_gib: float) -> float:
    return tarifa_por_gib / GIB

def gib_desde_gb(gb_decimales: float) -> float:
    return gb_decimales / GIB

print(round(tarifa_por_gb_decimal(0.023), 5))  # S3 Standard: 0.02142
print(round(gib_desde_gb(1000), 2))            # 1.000 GB = 931.32 GiB
Conversão mínima para normalizar tarifas. Aplique a conversão só quando o provedor documenta unidades binárias.

A diferença parece pequena, mas se acumula em volumes grandes e confunde as conciliações: o seu monitoramento reporta GB decimais, a fatura mostra outro número e alguém perde uma tarde procurando um erro que não existe. Defina uma unidade para a sua planilha e documente a conversão.

Documentação: AWS: preços do S3 e GB binário ↗ · DigitalOcean: preços do Spaces em GiB ↗

3. As operações têm classes e preços diferentes#

Cada chamada à API de um bucket é uma operação cobrável, a menos que o provedor a declare gratuita. Os provedores agrupam as operações em classes: as que gravam ou listam costumam custar bem mais que as leituras simples. Uma aplicação que lista o bucket a cada requisição pode pagar mais por LIST do que para armazenar os arquivos.

ProvedorGravações e listagensLeiturasGrátis ou incluído
S3 Standard (us-east-1)PUT, COPY, POST, LIST: $0,005 por 1.000GET, SELECT: $0,0004 por 1.000DELETE e CANCEL sem custo
R2 StandardClasse A (PutObject, ListObjects): $4,50 por milhãoClasse B (GetObject, HeadObject): $0,36 por milhão1 M classe A e 10 M classe B por mês; DeleteObject grátis
Backblaze B2PutObject (classe A) e ListObjects (classe C): sem custoGetObject, HeadObject (classe B): sem custoClasses A, B e C grátis; classe D (notificações de eventos): $0,004 por 10.000 após 2.500 diárias grátis
Spaces StandardSem tarifa por requisição publicadaSem tarifa por requisição publicadaA página de preços não lista cobranças por operação

Por milhão, o S3 cobra $5 por PUT e $0,40 por GET; o R2, $4,50 e $0,36. A diferença real aparece ao descontar as cotas incluídas do R2 e ao conferir qual operação cai em qual classe: no R2, ListObjects é classe A, igual a uma gravação.

Meça as operações com os logs ou métricas do bucket atual, não com uma estimativa por endpoint. Os retries do SDK, os uploads multipart e as thumbnails geradas on-the-fly multiplicam as chamadas em relação ao que o usuário vê.

Documentação: AWS: requisições do S3 ↗ · Cloudflare: classes de operações do R2 ↗ · Backblaze: classes de transações do B2 ↗ · DigitalOcean: preços do Spaces ↗

4. O egress costuma ser o maior item da fatura#

Egress é o tráfego que sai do provedor. Para um bucket que serve imagens, downloads ou vídeo direto ao público, ele costuma superar o armazenamento. Por isso as diferenças de política pesam mais que as diferenças de tarifa por GB-mês.

  • S3: a saída para a internet a partir de us-east-1 custa $0,09 por GB na primeira faixa; os primeiros 100 GB por mês são grátis, mas essa cota é compartilhada entre todos os serviços e regiões da AWS.
  • R2: o egress para a internet não tem custo, tanto no Standard quanto no Infrequent Access.
  • B2: inclui egress grátis de até três vezes o seu armazenamento médio mensal; o excedente é cobrado a $0,01 por GB.
  • Spaces: a assinatura inclui 1.024 GiB de saída; o tráfego adicional custa $0,01 por GiB e o tráfego de entrada não desconta dessa cota.

Uma CDN na frente do bucket muda esse item, mas não o elimina: as requisições que não estão em cache continuam saindo da origem, e a CDN tem as próprias tarifas. Modele a taxa de acerto de cache que você realmente observa, não a que você espera.

Documentação: AWS: transferência de dados do S3 ↗ · Cloudflare: egress do R2 ↗ · Backblaze: política de egress do B2 ↗ · DigitalOcean: transferência do Spaces ↗

5. Mínimos mensais e retenção mínima#

O Spaces Standard tem uma assinatura base de $5 por mês que inclui 250 GiB de armazenamento compartilhados entre todos os seus buckets; o armazenamento adicional custa $0,02 por GiB-mês. A cobrança começa com o primeiro bucket e termina quando você destrói todos. Para um projeto pequeno, esse mínimo é o valor que você vai pagar mesmo guardando poucos GB.

No outro extremo, o R2 inclui 10 GB-mês, 1 milhão de operações classe A e 10 milhões classe B por mês na classe Standard, e o B2 inclui os primeiros 10 GB de armazenamento. O S3 Standard não aplica duração mínima nem tamanho mínimo de objeto.

A retenção mínima aparece em classes pensadas para dados pouco consultados. O S3 Standard-IA cobra um mínimo de 30 dias e um tamanho mínimo cobrável de 128 KB por objeto. O R2 Infrequent Access tem 30 dias mínimos e uma tarifa de recuperação de $0,01 por GB. O Spaces Cold Storage também exige 30 dias de retenção mínima. O B2 declara que não aplica duração mínima nem tamanho mínimo de arquivo.

Se os seus objetos são temporários, como exportações apagadas poucos dias depois ou arquivos em quarentena, uma classe de acesso infrequente pode sair mais cara que a Standard mesmo com tarifa por GB menor: você paga os 30 dias completos.

Documentação: DigitalOcean: assinatura e Cold Storage do Spaces ↗ · Cloudflare: cotas incluídas e R2 Infrequent Access ↗ · Backblaze: condições de armazenamento do B2 ↗ · AWS: mínimos do S3 Standard-IA ↗

6. Exemplo calculado: 1 TB com tráfego público#

Premissas: 1.000 GB decimais de armazenamento médio (931,32 GiB), 5 milhões de PUT, 50 milhões de GET e 1.000 GB de saída para a internet por mês. Tarifas publicadas, primeira faixa, sem impostos, sem créditos de conta nova e sem outros serviços da AWS consumindo a cota gratuita de transferência. O egress é considerado na unidade que cada provedor publica, sem conversão.

text
S3 Standard (us-east-1)
  armazenamento   931,32 GiB × $0,023            = $21,42
  PUT             5.000 × $0,005 por mil        = $25,00
  GET             50.000 × $0,0004 por mil      = $20,00
  egress          (1.000 − 100) GB × $0,09      = $81,00
  total                                         = $147,42

R2 Standard
  armazenamento   (1.000 − 10) GB × $0,015      = $14,85
  classe A        (5 M − 1 M) × $4,50 por M     = $18,00
  classe B        (50 M − 10 M) × $0,36 por M   = $14,40
  egress          sem custo                     = $0,00
  total                                         = $47,25

Backblaze B2
  armazenamento   (1.000 − 10) GB × $0,00695    = $6,88
  PUT e GET       classes A e B grátis          = $0,00
  egress          1.000 GB < 3 × 1.000 GB       = $0,00
  total                                         = $6,88

Spaces Standard
  assinatura      inclui 250 GiB e 1.024 GiB    = $5,00
  armazenamento   (931,32 − 250) GiB × $0,02    = $13,63
  egress          931,32 GiB < 1.024 GiB        = $0,00
  total                                         = $18,63
O B2 é calculado como no comparador: $6,95 por TB convertido em $0,00695 por GB. Valores arredondados para centavos.
ProvedorCenário 1 TBBucket de 20 GBO que domina o custo
S3 Standard$147,42$1,33Egress e operações
R2 Standard$47,25$0,15Operações classe A e B
Backblaze B2$6,88$0,07Armazenamento
Spaces Standard$18,63$5,00Assinatura mínima

A coluna de 20 GB supõe 100.000 PUT, 1 milhão de GET e 20 GB de saída. No S3: 20 GB são 18,63 GiB × $0,023 = $0,43, mais $0,50 de PUT e $0,40 de GET; o egress fica dentro dos 100 GB gratuitos. No R2 e no B2 tudo cabe nas cotas incluídas, exceto 10 GB de armazenamento. No Spaces você paga o mínimo de $5.

A ordem muda com o seu padrão. Se o bucket é um backup que quase não sai para a internet, o egress do S3 desaparece e a diferença diminui. Se você lista muito, o R2 sobe. E se você guarda pouco, o mínimo do Spaces pesa mais que qualquer tarifa. Também não incluímos desempenho, regiões, compliance nem integração com o resto da sua nuvem, que podem justificar pagar mais.

Documentação: AWS: preços do S3 ↗ · Cloudflare: preços do R2 ↗ · Backblaze: preços do B2 ↗ · DigitalOcean: preços do Spaces ↗

7. Checklist antes de escolher o provedor#

  • Meça armazenamento médio, PUT, GET, LIST e egress dos últimos três meses com dados reais.
  • Anote a unidade de cada tarifa (GB, GiB ou TB) e normalize antes de comparar.
  • Identifique qual operação cai em cada classe, principalmente as listagens.
  • Confira se cada cota incluída é por conta ou por bucket antes de descontá-la.
  • Calcule o egress com a sua taxa real de acerto de CDN.
  • Revise mínimos mensais e retenção mínima se usar classes de acesso infrequente ou frias.
  • Inclua o que o preço do bucket não cobre: CDN, computação, criptografia gerenciada, replicação e migração dos dados existentes.
  • Repita o cálculo com o dobro de tráfego para ver qual provedor escala pior.
  • Confira de novo as tarifas na página oficial antes de fechar contrato: elas mudam sem aviso.

O comparador de armazenamento da Codifly mostra as tarifas marginais normalizadas para GB decimal e os alertas de cada provedor. Use-o como ponto de partida e substitua as premissas pelas suas métricas.

Fontes e escopo

Documentação consultada em 26 de setembro de 2026. Os exemplos e critérios de decisão são propostas editoriais; adapte-os ao contrato da sua aplicação e valide-os no seu ambiente de testes autorizado.

Do design à decisão

Compare armazenamento de objetos

Confira preços, limites, condições e fontes de cada opção.

Abrir comparador