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
Autentica na conta AWS.
Lista todos os buckets via
list_buckets.Aplica filtros de tag (inclusão/exclusão), se configurados.
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.
Consolida:
Quantidade total de uploads incompletos.
Volume total ocupado (KB, MB, GB, TB).
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
Initiatedfor superior a 1 dia.Existirem partes armazenadas (
Parts).O somatório do tamanho das partes for maior que zero.
Campos analisados
Bucket:
NameCreationDateTagSet
Multipart Upload:
KeyUploadIdInitiated
Partes do upload:
Size
Parâmetros considerados na busca
APIs utilizadas:
s3:ListBucketss3:ListMultipartUploadss3:ListPartss3: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