Dzięki najnowszym narzędziom wiersza poleceń aws-cli python rekurencyjne usuwanie wszystkich plików w folderze w wiadrze jest po prostu:
aws s3 rm --recursive s3://your_bucket_name/foo/
Lub usuń wszystko, co znajduje się pod wiadrem:
aws s3 rm --recursive s3://your_bucket_name
Jeśli chcesz faktycznie usunąć zasobnik, istnieje jednoetapowy skrót:
aws s3 rb --force s3://your_bucket_name
co spowoduje rekurencyjne usunięcie zawartości tego zasobnika, a następnie usunie zasobnik.
Uwaga: s3://
do działania tych poleceń wymagany jest przedrostek protokołu
rm
usunie tylko pliki, alerb --force
usunie pliki i zasobnik.--recursive
powoduje również usunięcie folderu.Kiedyś wymagało to dedykowanego wywołania API dla każdego klucza (pliku), ale zostało znacznie uproszczone ze względu na wprowadzenie Amazon S3 - Multi-Object Delete w grudniu 2011:
Zobacz moją odpowiedź na powiązane pytanie, usuń z S3 używając api php z użyciem symboli wieloznacznych, aby uzyskać więcej informacji na temat tego i odpowiednich przykładów w PHP ( AWS SDK dla PHP obsługuje to od wersji 1.4.8 ).
Większość bibliotek klienta AWS w międzyczasie wprowadziła dedykowane wsparcie dla tej funkcji w taki czy inny sposób, np .:
Pyton
Możesz to osiągnąć dzięki doskonałemu interfejsowi Boto Python do AWS z grubsza w następujący sposób (nieprzetestowane, od samego początku):
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])
Rubin
Funkcja ta jest dostępna od wersji 1.24 z AWS SDK dla Ruby i release notes podać przykład także:
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!
Lub:
źródło
aws cli
like @ number5 poniżej docs.aws.amazon.com/cli/latest/reference/s3/rm.htmlMożesz również rozważyć użycie cyklu życia usługi Amazon S3, aby utworzyć datę wygaśnięcia dla plików z prefiksem
foo/bar1
.Otwórz konsolę przeglądarki S3 i kliknij zasobnik. Następnie kliknij Właściwości, a następnie Cykl życia.
Utwórz regułę wygasania dla wszystkich plików z prefiksem
foo/bar1
i ustaw datę na 1 dzień od utworzenia pliku.Zapisz, a wszystkie pasujące pliki znikną w ciągu 24 godzin.
Po prostu nie zapomnij usunąć reguły po zakończeniu!
Żadnych wywołań API, żadnych bibliotek, aplikacji ani skryptów stron trzecich.
Właśnie usunąłem w ten sposób kilka milionów plików.
Zrzut ekranu przedstawiający okno Reguły cyklu życia (zauważ, że na tym ujęciu prefiks został pozostawiony pusty, wpływając na wszystkie klucze w zasobniku):
źródło
Po
s3cmd
zainstalowaniu pakietu na komputerze z systemem Linux możesz to zrobićs3cmd rm s3://foo/bar --recursive
źródło
s3cmd del s3://BUCKET/OBJECT
lub usuwanie całego zasobnikas3cmd rb s3://BUCKET
. Nie mas3cmd rm
, przynajmniej wedługs3cmd --help
.s3cmd rm
jest w pomocy od 2019 r. (jako alias dla del), to doskonała odpowiedź. Waws
CLI tylko narzędzia robocze przed/
prefiksem kończącej, ale nie folder i częściowe prefiks nazwy pliku, natomiast s3cmd prac w obu przypadkach. Ta odpowiedź wymaga dużo więcej głosów, musiałem przewinąć o wiele za daleko, aby znaleźć właściwe rozwiązanie.W przypadku, gdy chcesz usunąć wszystkie obiekty z prefiksem „foo /” za pomocą Java AWS SDK 2.0
źródło
W przypadku używania AWS-SKD dla ruby V2.
uwaga proszę, wszystkie "foo / *" w zasobniku zostaną usunięte.
źródło
Właśnie usunąłem wszystkie pliki z mojego zasobnika za pomocą PowerShell:
źródło
Właśnie zobaczyłem, że Amazon dodał opcję „Jak opróżnić wiadro” do menu konsoli AWS:
http://docs.aws.amazon.com/AmazonS3/latest/UG/DeletingaBucket.html
źródło
W głosowanej odpowiedzi brakuje kroku.
Pomoc dotycząca programu AWS s3:
źródło
Najlepszym sposobem jest użycie reguły cyklu życia w celu usunięcia całej zawartości zasobnika. Programowo możesz użyć następującego kodu (PHP) do PUT reguły cyklu życia.
W powyższym przypadku wszystkie obiekty zostaną usunięte. Data rozpoczęcia - „Dzisiaj GMT północ”.
Możesz również określić dni w następujący sposób. Ale w przypadku Dni rozpocznie się usuwanie zawartości zasobnika przez co najmniej 24 godziny (minimum 1 dzień).
źródło
Musiałem wykonać następujące czynności ...
źródło
W konsoli zarządzania S3 kliknij znacznik wyboru zasobnika i kliknij pusty przycisk w prawym górnym rogu.
źródło