Quanto custa object storage: armazenamento, requisições e saída

Object storage cobra por GB armazenado por mês, por requisição (upload, download, listagem) e por GB que sai para a internet. Em projetos com muito download, a saída costuma pesar mais que o armazenamento.

Atualizado em 6 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Entender as três linhas que compõem a conta de um object storage
  • Estimar o custo mensal de um projeto com uma conta reproduzível
  • Reconhecer os custos escondidos: duração mínima, versões antigas e uploads incompletos
Nesta página

O preço em destaque na página de um object storage é o do GB armazenado, e ele é baixo: centavos de dólar por mês. Só que a fatura tem outras linhas. Cada upload, cada download e cada listagem é uma requisição, e cada GB que sai para a internet pode ser cobrado à parte.

Os números deste artigo são hipotéticos, escolhidos para facilitar a conta. Não são preços de nenhum provedor; os valores reais mudam com o tempo, variam por região e ficam nas páginas oficiais citadas em "fontes". A conta completa mais adiante pode ser adaptada ao seu projeto. Se o conceito ainda é novo, comece por o que é object storage.

Bucket de 500 GBcusto por mêsServe mídiaArquivos friosSaídamesmo armazenamentoArmazenamentoUploadsDownloadsSaída
Mesmo armazenamento nos dois casos: o que faz a conta crescer é a saída de dados dos downloads.

O que compõe o custo de um object storage?#

Quase todo provedor cobra três coisas:

  1. Armazenamento: GB guardados por mês. A cobrança costuma ser proporcional ao tempo: 1 TB por meio mês custa metade de 1 TB pelo mês inteiro.
  2. Requisições: operações na API. Escrever (PUT, COPY, POST) e listar (LIST) costuma custar mais que ler (GET).
  3. Saída de dados (egress): GB transferidos do storage para a internet ou para outra região. A entrada, em geral, não é cobrada.

Alguns provedores acrescentam linhas para classes de armazenamento frias (taxa de recuperação, duração mínima) e para recursos como replicação entre regiões. O modelo de cobrança varia muito: há quem cobre as três linhas, quem isente requisições e quem não cobre saída.

Como os grandes provedores cobram cada linha?#

Duas referências com modelos opostos:

Linha Amazon S3 Standard Backblaze B2 (pay-as-you-go)
Armazenamento Preço por GB-mês, em faixas que barateiam com o volume Preço por TB-mês, em geral mais baixo por GB
Escrita e listagem Cobradas por milhar de PUT, COPY, POST ou LIST Sem cobrança na maior parte das chamadas
Leitura Cobrada por milhar de GET, mais barata que a escrita Sem cobrança na maior parte das chamadas
Saída para a internet Franquia mensal pequena (somando todos os serviços da AWS), depois preço por GB em faixas de volume Franquia proporcional ao volume armazenado, depois um preço baixo por GB
Duração mínima Nenhuma no Standard Nenhuma

No S3, tanto o preço do GB quanto o da saída caem em faixas conforme o volume cresce. No B2, algumas chamadas menos comuns são cobradas acima de uma franquia diária. Os preços mudam e variam por região, então confira as páginas oficiais da AWS e da Backblaze antes de fechar uma conta.

Como estimar o custo mensal de um projeto?#

Você precisa de quatro números: GB armazenados, número de uploads, número de downloads e GB baixados por mês. Exemplo hipotético: um app que guarda 500 GB de imagens, recebe 1 milhão de uploads e serve 20 milhões de downloads que somam 2 TB (2.000 GB) por mês.

O script abaixo faz a conta para um provedor que cobra as três linhas separadas, com preços hipotéticos. Troque-os pelos preços atuais do seu provedor e da sua região antes de usar o resultado. Salve como custo-storage.mjs e rode com node custo-storage.mjs:

javascript
// Exemplo hipotético em US$: um provedor que cobra as três linhas separadas.
// Não são preços de nenhum provedor; troque pelos da página oficial do seu.
const preco = {
  armazenamentoGB: 0.02, // por GB-mês
  putPorMil: 0.01, // por 1.000 PUT, COPY, POST ou LIST
  getPorMil: 0.001, // por 1.000 GET
  saidaGB: 0.1, // por GB para a internet
  franquiaSaidaGB: 100, // franquia mensal de saída
};

const uso = { armazenadoGB: 500, puts: 1_000_000, gets: 20_000_000, saidaGB: 2000 };

const linhas = {
  armazenamento: uso.armazenadoGB * preco.armazenamentoGB,
  uploads: (uso.puts / 1000) * preco.putPorMil,
  downloads: (uso.gets / 1000) * preco.getPorMil,
  saida: Math.max(0, uso.saidaGB - preco.franquiaSaidaGB) * preco.saidaGB,
};
const total = Object.values(linhas).reduce((a, b) => a + b, 0);

for (const [nome, valor] of Object.entries(linhas)) console.log(nome.padEnd(14), valor.toFixed(2));
console.log("total".padEnd(14), total.toFixed(2));

A saída:

armazenamento  10.00
uploads        10.00
downloads      20.00
saida          190.00
total          230.00

O armazenamento é 4% da conta; a saída, 83%. Agora um provedor que cobra US$ 5 por TB-mês, não cobra requisições e dá uma franquia de saída de 2 vezes o volume armazenado, com US$ 0,02 por GB acima dela (também hipotético): o mesmo cenário dá US$ 2,50 de armazenamento (0,5 TB), nada de requisições e US$ 20 de saída (2.000 GB menos a franquia de 1.000 GB), US$ 22,50 no total. A diferença vem quase toda da política de saída, não do preço do GB. O artigo sobre taxas de saída detalha como essa linha funciona.

Para chegar nos seus números, estime o tamanho médio do arquivo e multiplique pelo número de downloads. Um arquivo de 100 KB baixado 20 milhões de vezes são 2.000 GB.

Quais custos escondidos aparecem na fatura?#

  • Duração e tamanho mínimos em classes frias. O S3 Standard-IA cobra menos por GB-mês que o Standard, mas conta no mínimo 30 dias por objeto, cobra objetos menores que 128 KB como se tivessem 128 KB e acrescenta uma taxa por GB recuperado. Um arquivo apagado depois de uma semana paga o mês inteiro. Classes de arquivamento têm prazos mínimos ainda maiores.
  • Versões antigas. Com versionamento ligado, a AWS informa que cada versão é o objeto inteiro e é cobrada pelas tarifas normais: três versões de um arquivo custam como três arquivos. Sobrescrever um arquivo grande todo dia multiplica o armazenamento em silêncio.
  • Uploads multipart incompletos. As partes de um upload que nunca terminou ficam guardadas até serem abortadas. A AWS recomenda uma regra de lifecycle com AbortIncompleteMultipartUpload para reduzir esse custo. Veja regras de ciclo de vida.
  • Listagens em massa. Ferramentas de sincronização que listam o bucket inteiro a cada execução geram milhares de LIST, cobrados como escrita no S3.
  • Saída entre regiões e migração. Copiar dados para outra região, ou baixar tudo para trocar de provedor, é saída cobrada sobre o volume inteiro.
  • Picos e hotlinking. Um arquivo viral ou outro site usando o link direto das suas imagens multiplica a saída sem que nada mude no seu código.

Como reduzir a conta de object storage?#

  1. Coloque uma CDN na frente dos arquivos públicos, com Cache-Control longo. O arquivo sai do storage uma vez e o resto vem do cache. A diferença entre arquivos públicos e privados define o que pode ir para a CDN.
  2. Comprima e redimensione antes de subir. Uma imagem WebP de 80 KB no lugar de um JPEG de 2 MB corta armazenamento e saída ao mesmo tempo.
  3. Use regras de lifecycle para apagar temporários, versões antigas e uploads incompletos.
  4. Só mova para classes frias o que você realmente não lê, e só se o arquivo ficar lá mais que a duração mínima.
  5. Escolha o provedor pelo seu perfil de uso. Muito armazenamento e pouco download: o preço do GB manda. Muito download: a política de saída manda. Um storage compatível com S3 facilita trocar depois, porque o código não muda.

Quando o armazenamento é a linha que pesa?#

Em arquivos frios, como cópias de segurança e logs antigos, quase não há download, então a conta é praticamente GB vezes preço por GB. Aqui classes de arquivamento e provedores com GB barato fazem diferença real, desde que você respeite as durações mínimas. Para esse caso, veja como guardar cópias de segurança em object storage.

Já em apps que servem mídia para usuários (imagens de perfil, anexos, vídeos), a saída domina e o preço do GB armazenado quase não importa.

Como fazer isso na Square Cloud#

O Blob Storage da Square Cloud é um object storage com API compatível com S3 (aws-cli, rclone, boto3, SDKs da AWS), API REST e painel. Ele não cobra taxa de saída nem de entrada, então a linha que dominava a conta do exemplo some da fatura.

Todo plano inclui uma cota de armazenamento, de 5 GB a 250 GB. O plano Hobby, a partir de R$ 12,49 por mês, inclui de 5 a 15 GB de Blob. Arquivos públicos são servidos por uma CDN global na edge, e arquivos privados abrem por link temporário de até 24 horas ou por link de compartilhamento de até 30 dias.

No lugar das regras de lifecycle, o Blob tem regras por pasta (expiração, cache, limpeza automática): a regra "apagar após N dias" expira os objetos antigos sozinha, contando a partir da última escrita. Ele aceita arquivos de até 10 GB, e o multipart só é obrigatório acima de 100 MB. Veja cotas e detalhes na página do Blob Storage.

Blob Storage

Object storage compatível com S3, sem taxa de saída

Saiba mais

Perguntas frequentes

Quanto custa guardar 1 TB em object storage?

Só o armazenamento é o volume em GB vezes o preço por GB-mês do provedor. Supondo US$ 0,02 por GB-mês (valor hipotético), 1 TB (1.000 GB) sai por US$ 20 por mês; num provedor que cobrasse US$ 5 por TB-mês, também hipotético, sairia por US$ 5. Requisições e saída de dados entram à parte.

Por que minha conta de storage veio maior que o esperado?

Quase sempre por saída de dados (downloads para a internet) ou por requisições em massa. Versões antigas de objetos, uploads multipart incompletos e taxas de recuperação em classes frias também somam sem aparecer no painel principal.

Classes frias como Infrequent Access são sempre mais baratas?

Só para arquivos que quase nunca são lidos. No S3 Standard-IA o GB armazenado custa menos, mas há taxa por GB recuperado, cobrança mínima de 30 dias e de 128 KB por objeto.

Upload de arquivos é cobrado?

A transferência de entrada vinda da internet costuma ser gratuita, mas cada upload é uma requisição. No S3, PUT, COPY, POST e LIST são cobrados por milhar de requisições, a uma tarifa maior que a do GET.

Próximo artigoQuanto custa guardar arquivos e imagens dos usuáriosGuardar uploads de usuários custa armazenamento por GB, requisições e saída de dados. Veja como cada linha é cobrada, uma conta de 12 meses e como reduzir.