How about if you need to delete large quantities of files inside a S3 bucket.
In my case it was about 5 millions files.
Using a python script.
p>Here is the code:
# coding: utf-8 # Original by Bruno Mentges import time from boto.s3.connection import S3Connection access_key = 'asd' secret_key = 'asd' #File containing, each line #/path/172737/file13123.jpg; /path/172737/file13123.jpg; /path/172737/file13123.jpg nome_arquivo = "/root/bin/list/list.csv" print "Processing list" objetos_s3 = [] with open(nome_arquivo, "r") as f: for linha in f: objetos_s3.extend(map(lambda x: x.split("http:// /")[-1], linha.split(";"))) print "Numero de urls a apagar: %d" % len(objetos_s3) f = lambda A, n=1000: [A[i:i+n] for i in range(0, len(A), n)] mil_em_mil = f(objetos_s3) print "Tamanho do array teste: %d" % len(mil_em_mil) print "Tamanho do primeiro item do array teste: %d" % len(mil_em_mil[0]) print "Tamanho do ultimo item do array teste: %d" % len(mil_em_mil[-1]) conn = S3Connection(access_key, secret_key) try_bucket = conn.lookup(' ') if try_bucket is None: print "Bucket nao encontrado" else: bucket = conn.get_bucket(' ') resultados = [] print "Iniciando envio dos requests..." counter = 1 for keys_to_delete in mil_em_mil: t0 = time.time() print "Enviando request numero %d. Quantidade de chaves a deletar: %d" % (counter, len(keys_to_delete)) # resultado terao so as keys que deram erro (quiet=True) // mais rapido resultado = bucket.delete_keys(keys_to_delete, quiet=True) resultados.append(resultado) erros = 0 if resultado: erros = len(resultado.errors) t1 = time.time() print "Finalizado o envio numero %d, qtd erros: %d, tempo: %s" % (counter, erros, str(t1-t0)) counter += 1 print "Keys que deram erro, abaixo: " for resultado in resultados: # boto.s3.multidelete.MultiDeleteResult if resultado and len(resultado.errors) > 0: print resultado.errors print "Fim do processamento, sucesso!"