Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Por que meus custos do S3 aumentaram?

By Greg WiedemanMay 9, 202410 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Se seus custos do S3 subiram e você está tentando entender o motivo, é possível que o recurso de Versionamento do bucket S3 tenha sido ativado. Mas pode ficar tranquilo — dá para gerenciar isso e assumir o controle total do seu bucket S3 e dos custos de versionamento. Este artigo traz informações úteis sobre os custos de um bucket S3 versionado e como administrá-los de forma eficaz. Com isso em mãos, você consegue otimizar o bucket e garantir que paga só pelo armazenamento que realmente precisa.

O Versionamento do S3 é um recurso bastante útil que permite manter várias versões do mesmo objeto em um único bucket. Assim, você sempre tem acesso a versões anteriores de objetos excluídos ou sobrescritos por engano. Com o Versionamento do S3, dá para armazenar várias versões de um objeto em um mesmo bucket e restaurar qualquer uma delas quando precisar.

Por exemplo, se o Versionamento do S3 estiver habilitado em um bucket, qualquer objeto excluído não será removido em definitivo. Em vez disso, o Amazon S3 insere um marcador de exclusão, que passa a ser a versão atual do objeto. Depois, é só restaurar a versão anterior quando precisar.

Da mesma forma, se você sobrescrever um objeto, o Amazon S3 adiciona uma nova versão dele ao bucket. A versão anterior continua no bucket e passa a ser uma versão não atual. Você pode restaurá-la a qualquer momento. Para saber mais, leia sobre como excluir versões de objetos em um bucket com versionamento habilitado.

Excluindo versões de objetos de um bucket com versionamento habilitado \ \ Exclua um objeto em um bucket com versionamento habilitado informando o ID de versão específico do objeto.\ \ docs.aws.amazon.com

O Versionamento pode ser habilitado no bucket S3 por vários motivos, mas é importante saber que, depois de ativado, ele não pode mais ser desativado. O que dá para fazer é suspendê-lo e encontrar uma forma sustentável de gerenciar o Versionamento do bucket. Não deixe que custos imprevistos do S3 te atrapalhem. Você consegue retomar o controle do bucket S3 e administrar os custos de versionamento com mais eficiência.

Se você tem vários buckets com milhões de objetos, é normal se sentir perdido sem saber o que já está armazenado. A AWS oferece o Storage Lens, que mostra quais buckets têm objetos versionados, quantos são e qual a porcentagem de objetos não atuais. Ele também indica em qual classe de armazenamento esses objetos não atuais estão. Para mais detalhes, confira o artigo a seguir sobre como usar o AWS Storage Lens.

Avaliando a atividade e o uso do seu armazenamento com o Amazon S3 Storage Lens \ \ Use o Amazon S3 Storage Lens para avaliar seu armazenamento Amazon S3, obter insights, ganhar eficiência de custos e…\ \ docs.aws.amazon.com

Esses dados ajudam a entender rapidamente seus custos de versionamento e a decidir como gerenciar melhor o armazenamento, observando o volume das versões não atuais e suas classes. O preço é o mesmo da cópia versionada atual. O exemplo a seguir mostra como as versões não atuais podem se acumular rapidamente e elevar o custo.

Imagine um objeto de 4 GiB que é atualizado cinco vezes por dia. Isso significaria cinco versões não atuais por dia, mais uma versão atual, totalizando seis. Multiplicando as cinco alterações diárias por uma média de 30 dias, temos: 5 alterações por dia x 30 dias (média mensal) = 150 cópias de versões não atuais. A conta sobe rápido e, seja qual for a classe de armazenamento dos objetos não versionados, esse será o preço cobrado.

Outro exemplo: se você tem um arquivo de 1 MB e 200 cópias (versões não atuais), você paga por 200 MB de armazenamento.

Depois de identificar quais buckets têm Versionamento habilitado e quais objetos já têm versões não atuais, vale a pena refletir sobre a real utilidade dessas cópias. Pergunte-se: "Eu preciso ou quero ter cópias deste objeto?" Se a resposta for sim, a próxima pergunta é por quanto tempo manter cada cópia e quantas cópias são necessárias. Essas respostas vão definir o custo de manutenção e a automação necessária para gerenciar as transições do objeto. Então pense com calma no que faz mais sentido para o seu caso. Nem todo bucket é igual.

Se você não precisa de versionamento em um bucket, siga o processo abaixo para suspender o Versionamento, remover cópias não atuais e marcadores de exclusão desnecessários. Isso reduz custos e deixa o bucket versionado em um estado pseudodesabilitado.

OBSERVAÇÃO: Antes de seguir com o procedimento abaixo, lembre-se: ao excluir os arquivos não atuais, todas as cópias não atuais do objeto somem para sempre, sem possibilidade de recuperação. Por isso, confirme que você está no bucket S3 correto e avalie se realmente não precisa das versões não atuais antes de excluir qualquer coisa. Você pode testar antes em um bucket de teste.

  1. No Console do AWS S3, localize o bucket no qual quer suspender o Versionamento e selecione-o.
  2. Acesse a aba Properties (Propriedades).
  3. Na aba Properties, encontre a seção de Versionamento e clique em Edit (Editar).

Propriedades do bucket S3

4. Selecione o botão de opção Suspend (Suspender).

5. Marque a caixa I acknowledge the outcomes of suspending Bucket Versioning (Reconheço as consequências de suspender o Versionamento do Bucket).

6. Clique em Save changes (Salvar alterações).

7. Pronto, o Versionamento do bucket está suspenso.

  • Suspender o Versionamento impede que novas versões dos objetos sejam criadas.
  • Suspender o Versionamento não afeta os objetos que já existem no bucket.

Suspender ou Habilitar o Versionamento do Bucket

O próximo passo é remover as versões não atuais e os marcadores de exclusão expirados. Uma das formas mais comuns, principalmente quando há milhões de arquivos, é usar a Lifecycle Configuration (Configuração de Ciclo de Vida). Vamos usá-la no nosso exemplo, conforme recomendação da AWS, mas existem outras alternativas. Veja as opções a seguir.

Opções para excluir milhões de objetos de um bucket AWS S3 com versionamento habilitado \ \ Quer excluir ou limpar um bucket S3 com versionamento habilitado? Mesmo parecendo vazio, o S3 não permite que você…\ \ aws.plainenglish.io

Ainda no bucket S3, abra a aba Management (Gerenciamento).

Na janela Management, há uma seção chamada Lifecycle Rules (Regras de Ciclo de Vida). Clique em Create lifecycle rule (Criar regra de ciclo de vida).

Regras de Ciclo de Vida no Management do S3

  1. Em Create lifecycle rule, preencha as seguintes seções

Lifecycle rule name (Nome da regra de ciclo de vida): use um nome que descreva o que a regra faz.

Por exemplo, DeleteNV-1days-DeleteMarker-IMU-7days. O nome indica que a regra exclui cópias não versionadas após um dia, e DeleteMarkers e uploads multipartes incompletos após sete dias. 2. Em Choose a rule scope (Escolher um escopo de regra), selecione o botão de opção "Apply to all objects in the bucket" (Aplicar a todos os objetos no bucket). Vai aparecer uma caixa com um aviso. Leia com atenção e marque "I acknowledge that this rule will apply to all objects in the bucket" (Reconheço que esta regra será aplicada a todos os objetos no bucket). Mais adiante neste artigo, falamos sobre a opção Limit the scope of this rule using one or more filters (Limitar o escopo desta regra usando um ou mais filtros). 3. Em Lifecycle rule actions (Ações da regra de ciclo de vida), marque as caixas Permanently delete noncurrent versions of objects (Excluir permanentemente versões não atuais de objetos) e Delete expired object delete markers or incomplete multipart uploads (Excluir marcadores de exclusão de objetos expirados ou uploads multipartes incompletos). 4. Duas novas seções aparecerão abaixo: Permanently delete noncurrent versions of objects e Delete expired object delete markers or incomplete multipart upload. 5. Em Permanently delete noncurrent versions of objects, na caixa de texto Days after objects become noncurrent (Dias após os objetos se tornarem não atuais), digite 1. O número precisa ser maior que zero. Essa é uma das decisões já comentadas: por quanto tempo manter os objetos não atuais. Na caixa de texto à direita, Number of newer version to retain — Optional (Número de versões mais recentes a reter — Opcional), deixe em branco. Lembra da pergunta "Quantas versões eu preciso reter?". É aqui que você define esse número. O sistema vai sempre manter essa quantidade de cópias ou versões não atuais. 6. Em seguida, vêm as seções Delete expired object delete marker e Delete incomplete multipart uploads. Marque as caixas Delete expired object delete markers e Delete incomplete multipart uploads. Vai aparecer uma nova opção chamada Number of days (Número de dias). Na caixa de texto, digite 7. Esse é o número de dias antes de excluir qualquer upload multiparte incompleto. Esse prazo dá tempo para que um upload multiparte incompleto seja concluído, caso precise ser retomado.

Configuração da regra de ciclo de vida

Ações da Regra de Ciclo de Vida

Você pode estar se perguntando por que escolhemos a opção de excluir uploads multipartes incompletos. É uma forma simples e eficaz de reduzir custos, que dá para configurar automaticamente na regra de Ciclo de Vida do seu bucket S3. Lembre-se: você é cobrado por qualquer parte de upload multiparte incompleta com base na classe de armazenamento definida no momento do upload. Aqui, mais uma vez, dá para usar o S3 Storage Lens para analisar uploads multipartes incompletos. Para saber mais sobre uploads multipartes incompletos e como analisá-los com o Storage Lens, confira o artigo a seguir.

Descobrindo e excluindo uploads multipartes incompletos para reduzir os custos do Amazon S3 | Amazon Web… \ \ Esta postagem do blog é uma contribuição de Steven Dolan, Senior Enterprise Support TAM. O recurso de upload multiparte do Amazon S3…\ \ aws.amazon.com

A seguir, mais informações da AWS sobre a exclusão de versões não atuais de objetos.

Um bucket com versionamento habilitado tem uma versão atual e zero ou mais versões não atuais para cada objeto. Ao excluir um objeto, observe o seguinte:

Se você não especificar um ID de versão na solicitação de exclusão, o Amazon S3 adiciona um marcador de exclusão em vez de excluir o objeto. A versão atual do objeto se torna não atual, e o marcador de exclusão passa a ser a versão atual.

Se você especificar um ID de versão na solicitação de exclusão, o Amazon S3 exclui aquela versão do objeto de forma permanente (e não cria um marcador de exclusão).

Um marcador de exclusão com zero versões não atuais é chamado de marcador de exclusão de objeto expirado. (fonte).

Parabéns! Você assumiu o controle de um bucket S3 versionado com sucesso. Dependendo da configuração de ciclo de vida que escolheu para o caso de uso, deve ver uma queda nos custos depois de uma semana. Vale lembrar que as Regras de Ciclo de Vida rodam de forma assíncrona, então a remoção dos objetos de versão não atual pode demorar um pouco. Mas fique tranquilo: a AWS não vai cobrar pelos dias adicionais que o processo levar para concluir.

Agora você pode habilitar o versionamento de novo, já que uma regra de Lifecycle Management vai cuidar das versões não atuais automaticamente. Se preferir, dá para manter o versionamento suspenso caso não queira ter versões dos objetos. Lembre-se: quaisquer novos objetos colocados no bucket S3 enquanto o versionamento estiver suspenso terão um marcador de ID nulo e não serão elegíveis para versionamento.

Em alguns casos, você precisa do versionamento habilitado em um bucket S3, mas só quer aplicar o Lifecycle Management em objetos específicos. O Lifecycle Management permite aplicar a regra a prefixos específicos. Essa opção se chama "Limit the scope of this rule using one or more filters" (Limitar o escopo desta regra usando um ou mais filtros). Com filtros, você decide quais objetos não atuais ficam sujeitos à exclusão. Também dá para usar o filtro para criar regras de Ciclo de Vida diferentes para outros objetos.

É possível filtrar pelo local onde os objetos estão armazenados. Por exemplo, se você tem arquivos em uma pasta logs, pode definir o filtro como logs/. A regra de Ciclo de Vida vai se aplicar a logs/log.txt, logs/temp3.txt e logs/test1.txt. Ela não se aplica a um objeto na raiz chamado example.jpg. Também dá para filtrar por extensões de arquivo, tags e tamanho dos objetos. Veja o artigo a seguir para mais informações sobre filtragem e diversos exemplos.

Elementos de configuração do Ciclo de Vida \ \ Explica os elementos da configuração do Ciclo de Vida do Amazon S3.\ \ docs.aws.amazon.com

Agora você tem o conhecimento necessário para controlar os custos do S3 com base nas versões não atuais de objetos. Vale sempre testar as alterações em um ambiente de teste ou desenvolvimento antes de aplicá-las em produção.

Recursos: