S3: Upload multipart do S3 incompleto

Esta regra identifica uploads multipart incompletos em buckets Amazon S3 que:

  • Foram iniciados há mais de 1 dia.

  • Permanecem abertos sem conclusão.

  • Possuem partes já enviadas que continuam ocupando armazenamento.

O objetivo é detectar consumo de storage gerado por uploads abandonados que continuam gerando custo recorrente.


Contexto da regra e impacto no negócio

O recurso de Multipart Upload do S3 permite que arquivos grandes sejam enviados em partes.

Quando um upload não é finalizado:

  • As partes já enviadas permanecem armazenadas.

  • O bucket continua sendo cobrado pelo armazenamento dessas partes.

  • Não existe objeto final utilizável.

  • Não há valor de negócio associado ao custo gerado.

Cenários comuns:

  • Interrupções de rede.

  • Falhas de aplicação.

  • Cancelamento de processos de upload.

  • Deploys mal sucedidos.

Impactos financeiros:

  • Crescimento silencioso do custo de armazenamento.

  • Aumento desnecessário do volume total armazenado.

  • Complexidade de governança de dados.

Sem política de lifecycle adequada, esses uploads podem permanecer indefinidamente.


Detalhamento técnico da regra

A regra executa análise global da conta AWS (S3 é serviço global).


Como a regra é executada

  1. Autentica na conta AWS.

  2. Lista todos os buckets via list_buckets.

  3. Aplica filtros de tag (inclusão/exclusão), se configurados.

  4. Para cada bucket:

    • Executa list_multipart_uploads.

    • Identifica uploads iniciados há mais de 1 dia.

    • Para cada upload elegível:

      • Executa list_parts.

      • Soma o tamanho de cada parte enviada.

  5. Consolida:

    • Quantidade total de uploads incompletos.

    • Volume total ocupado (KB, MB, GB, TB).

  6. Caso exista volume armazenado, o bucket é sinalizado.

Limite técnico:

  • Máximo de 25.000 uploads analisados por bucket.

  • Processamento paralelo com até 10 threads.


Lógica aplicada

Um bucket será sinalizado quando:

  • Existirem uploads multipart.

  • O campo Initiated for superior a 1 dia.

  • Existirem partes armazenadas (Parts).

  • O somatório do tamanho das partes for maior que zero.


Campos analisados

Bucket:

  • Name

  • CreationDate

  • TagSet

Multipart Upload:

  • Key

  • UploadId

  • Initiated

Partes do upload:

  • Size


Parâmetros considerados na busca

APIs utilizadas:

  • s3:ListBuckets

  • s3:ListMultipartUploads

  • s3:ListParts

  • s3:GetBucketTagging

Condições técnicas:

  • Upload iniciado há mais de 1 dia.

  • Existência de partes armazenadas.

  • Volume acumulado maior que zero.


Período Avaliado (Filtro Temporal)

Período Avaliado (Filtro Temporal): A regra avalia o campo Initiated dos uploads multipart. São considerados uploads iniciados há mais de 15 dia em relação ao momento da execução.

Exemplo: Se um upload foi iniciado ontem e não foi finalizado, ele será analisado na próxima execução caso ultrapasse o limite mínimo de 15 dia.

O intervalo é fixo em 15 dia nesta implementação.


Intervalo de Análise

Execução padrão: a cada 8 horas.


Cálculo de Savings

O savings é baseado na eliminação do armazenamento das partes associadas a uploads incompletos.


Fórmula Conceitual

Onde:

  • Volume Total = soma de todas as partes armazenadas.

  • Preço por GB = valor do S3 Standard (ou classe correspondente).


Campo de custo utilizado

No Billing AWS:

  • Service: AmazonS3

  • Usage Type:

    • TimedStorage-ByteHrs

    • StorageClass (Standard, IA, etc.)

  • Line Item Type: Usage

  • Campo financeiro considerado:

    • Unblended Cost

    • Ou Amortized Cost


Elementos considerados

  • Volume total em GB.

  • Classe de armazenamento do bucket.

  • Região do bucket.

  • Não há projeção futura automática; trata-se de economia recorrente após abortar os uploads.


Exemplo aplicado ao Billing

Cenário:

Bucket com:

  • 120 uploads incompletos.

  • Volume total acumulado: 500 GB.

  • Preço médio S3 Standard: $0.023 por GB.

Cálculo:

Savings anual:


Dicas de uso e boas práticas para o usuário

  • Configurar regra de Lifecycle para abortar multipart uploads automaticamente.

  • Monitorar buckets com alta taxa de ingestão.

  • Investigar aplicações que estejam interrompendo uploads.

  • Priorizar buckets com grande volume acumulado.

  • Implementar controle de falhas em pipelines de ingestão.

Possíveis falsos positivos:

  • Uploads legítimos em processamento muito longo.

  • Transferências de arquivos extremamente grandes ainda em andamento.

Recomenda-se validar se o upload está realmente abandonado antes de abortá-lo.

Last updated