Com as ferramentas de linha de comando aws-cli python mais recentes , para excluir recursivamente todos os arquivos em uma pasta em um intervalo é apenas:
aws s3 rm --recursive s3://your_bucket_name/foo/
Ou exclua tudo sob o balde:
aws s3 rm --recursive s3://your_bucket_name
Se o que você deseja é realmente excluir o intervalo, há um atalho de uma etapa:
aws s3 rb --force s3://your_bucket_name
que removerá o conteúdo desse intervalo recursivamente e, em seguida, excluirá o intervalo.
Observação: o s3://
prefixo do protocolo é necessário para que esses comandos funcionem
rm
apenas excluirá arquivos, masrb --force
excluirá os arquivos e o balde.--recursive
exclui a pasta também.Isso costumava exigir uma chamada de API dedicada por chave (arquivo), mas foi muito simplificado devido à introdução do Amazon S3 - Multi-Object Delete em dezembro de 2011:
Veja minha resposta à pergunta relacionada delete from S3 using api php using wildcard para obter mais informações sobre este e respectivos exemplos em PHP (o SDK da AWS para PHP suporta isso desde a versão 1.4.8 ).
A maioria das bibliotecas cliente da AWS, entretanto, introduziu suporte dedicado para esta funcionalidade de uma forma ou de outra, por exemplo:
Pitão
Você pode conseguir isso com a excelente interface boto Python para AWS mais ou menos da seguinte maneira (não testado, do topo da minha cabeça):
import boto s3 = boto.connect_s3() bucket = s3.get_bucket("bucketname") bucketListResultSet = bucket.list(prefix="foo/bar") result = bucket.delete_keys([key.name for key in bucketListResultSet])
Rubi
Isso está disponível desde a versão 1.24 do SDK da AWS para Ruby e as notas de versão também fornecem um exemplo:
bucket = AWS::S3.new.buckets['mybucket'] # delete a list of objects by keys, objects are deleted in batches of 1k per # request. Accepts strings, AWS::S3::S3Object, AWS::S3::ObectVersion and # hashes with :key and :version_id bucket.objects.delete('key1', 'key2', 'key3', ...) # delete all of the objects in a bucket (optionally with a common prefix as shown) bucket.objects.with_prefix('2009/').delete_all # conditional delete, loads and deletes objects in batches of 1k, only # deleting those that return true from the block bucket.objects.delete_if{|object| object.key =~ /\.pdf$/ } # empty the bucket and then delete the bucket, objects are deleted in batches of 1k bucket.delete!
Ou:
fonte
aws cli
resposta como @ number5 abaixo docs.aws.amazon.com/cli/latest/reference/s3/rm.htmlVocê também pode considerar o uso do Amazon S3 Lifecycle para criar uma expiração para arquivos com o prefixo
foo/bar1
.Abra o console do navegador S3 e clique em um balde. Em seguida, clique em Propriedades e depois em Ciclo de vida.
Crie uma regra de expiração para todos os arquivos com o prefixo
foo/bar1
e defina a data como 1 dia desde a criação do arquivo.Salve e todos os arquivos correspondentes desaparecerão em 24 horas.
Só não se esqueça de remover a regra depois de terminar!
Sem chamadas de API, sem bibliotecas, aplicativos ou scripts de terceiros.
Acabei de deletar vários milhões de arquivos dessa forma.
Uma captura de tela mostrando a janela da Regra do Ciclo de Vida (observe nesta foto que o Prefixo foi deixado em branco, afetando todas as chaves no intervalo):
fonte
Com o
s3cmd
pacote instalado em uma máquina Linux, você pode fazer issos3cmd rm s3://foo/bar --recursive
fonte
s3cmd del s3://BUCKET/OBJECT
ou exclusão de todo o intervalos3cmd rb s3://BUCKET
. Não hás3cmd rm
, pelo menos de acordo coms3cmd --help
.s3cmd rm
está na ajuda a partir de 2019 (como um apelido para del), esta é uma excelente resposta. Asaws
ferramentas cli funcionam apenas com um/
prefixo de terminação, mas não com uma pasta e um prefixo de nome de arquivo parcial, enquanto s3cmd funciona em ambos os casos. Esta resposta precisa de muito mais votos positivos, tive que rolar muito para encontrar a solução certa.No caso, se você deseja remover todos os objetos com o prefixo "foo /" usando Java AWS SDK 2.0
fonte
No caso de usar AWS-SKD para ruby V2.
atenção, todos os "foo / *" no balde serão excluídos.
fonte
Acabei de remover todos os arquivos do meu intervalo usando o PowerShell:
fonte
Acabei de ver que a Amazon adicionou uma opção "How to Empty a Bucket" ao menu do console da AWS:
http://docs.aws.amazon.com/AmazonS3/latest/UG/DeletingaBucket.html
fonte
A resposta votada está faltando uma etapa.
Por ajuda do aws s3:
fonte
A melhor maneira é usar a regra de ciclo de vida para excluir todo o conteúdo do balde. Programaticamente, você pode usar o seguinte código (PHP) para PUT regra de ciclo de vida.
No caso acima, todos os objetos serão excluídos. Data de início - "Hoje à meia-noite GMT".
Você também pode especificar os dias da seguinte forma. Mas com o Dias, ele aguardará pelo menos 24 horas (no mínimo 1 dia) para começar a excluir o conteúdo do balde.
fonte
Eu precisava fazer o seguinte ...
fonte