Como parte da consultoria de nuvem que oferecemos aos clientes na DoiT International, vez ou outra me deparo com casos extremos em que a tentativa do cliente de economizar acaba aumentando os custos de armazenamento no S3. O post a seguir mostra como evitar que isso aconteça.

Ao armazenar arquivos (objetos) em um bucket do S3, você tem as seguintes classes de armazenamento disponíveis: Standard (padrão), Infrequent Access (também chamada de Standard-IA), Intelligent-Tiering, Glacier e S3 Outposts.
A classe de armazenamento é definida no momento do upload ou em qualquer etapa posterior. Uma prática comum é criar uma regra de ciclo de vida no bucket, definindo as ações que o Amazon S3 deve executar ao longo da vida útil de um objeto (por exemplo, mudar a classe de armazenamento do arquivo de Standard para Infrequent Access 30 dias após a sua criação).
O armazenamento Infrequent Access permite guardar arquivos por um custo menor do que a classe Standard. A velocidade de download, a durabilidade e a latência são iguais às da classe Standard, mas o custo para baixar o arquivo é mais alto. Por isso, fazendo jus ao nome, o Infrequent Access é indicado para arquivos que não são acessados com frequência.

Regra de ciclo de vida que move os arquivos da classe Standard para Intelligent tier. O custo da transição é de US$ 2.000. A partir do quinto mês após a transição, o cliente passa a pagar menos pelo armazenamento.
Armadilhas comuns de custo no S3
Dois problemas comuns podem encarecer o armazenamento de um bucket:
- A maioria das pessoas não sabe que trocar de classe de armazenamento custa dinheiro. A AWS cobra US$ 0,01 a cada 1.000 transições da classe Standard para a classe Infrequent Access.
- Algumas classes de armazenamento do S3 exigem um tamanho mínimo de arquivo. No caso da Infrequent Access, esse mínimo é de 128 KB.


Especificações das classes de armazenamento do S3
Isso pode levar a situações em que um cliente com centenas de milhões de arquivos pequenos em um bucket do S3 acaba tendo que pagar uma taxa única de transição bem alta.
Quantos arquivos eu tenho no meu bucket?
Há duas formas de verificar a quantidade de arquivos e o tamanho do bucket:
- No nível do arquivo — com o S3 Inventory, você gera um relatório diário com a lista de arquivos do bucket, o tamanho de cada um e a classe de armazenamento.
- No nível do bucket — com as métricas do Cloudwatch, você consulta o número de arquivos e o tamanho do bucket. Essas métricas também aparecem no console do S3, em Management —> Metrics.

Tamanho do bucket do S3

Número de arquivos no bucket do S3
Quando vale a pena configurar uma regra de ciclo de vida?
Comece calculando o tamanho médio (não ponderado) dos arquivos: divida o tamanho do bucket do S3 pelo número de arquivos.
Por exemplo, no bucket que usei para tirar os prints deste artigo, o tamanho é de 22,1 TB e há 6,3 milhões de arquivos, o que dá um tamanho médio de 3,42 MB por arquivo.
Migrar para Infrequent Access pode gerar um pagamento único alto sobre os custos de armazenamento.
Calculando o custo da transição e a relação custo-benefício
Se aplicarmos a regra de ciclo de vida para mudar a classe de armazenamento desse bucket de 22,1 TB para Infrequent Access, a transição dos 6,3 milhões de arquivos custará uma taxa única de US$ 63 (6.300.000 arquivos divididos em grupos de 1.000 e multiplicados por US$ 0,01), com um custo de armazenamento de US$ 282,88 por mês.
Pelos cálculos acima, dá para ver que a transição entre classes já gera redução de custos a partir do primeiro mês.
Conclusão
O AWS S3 oferece várias classes de armazenamento que, usadas da forma certa, geram eficiência e economia.