Dies erforderte früher einen dedizierten API-Aufruf pro Schlüssel (Datei), wurde jedoch durch die Einführung von Amazon S3 - Multi-Object Delete im Dezember 2011 erheblich vereinfacht :
Mit dem neuen Multi-Object Delete von Amazon S3 können Sie mit einer einzigen Anforderung bis zu 1000 Objekte aus einem S3-Bucket löschen.
Weitere Informationen zu diesem und den entsprechenden Beispielen in PHP finden Sie in meiner Antwort auf die entsprechende Frage zum Löschen aus S3 mithilfe von API PHP mithilfe von Platzhaltern (das AWS SDK für PHP unterstützt dies seit Version 1.4.8 ).
Die meisten AWS-Client-Bibliotheken haben inzwischen auf die eine oder andere Weise eine spezielle Unterstützung für diese Funktionalität eingeführt, z.
Python
Sie können dies mit der hervorragenden Boto- Python-Schnittstelle zu AWS ungefähr wie folgt erreichen (ungetestet, von oben):
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
Dies ist seit Version 1.24 des AWS SDK für Ruby verfügbar. Die Versionshinweise enthalten ebenfalls ein Beispiel:
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!
Oder:
AWS::S3::Bucket.delete('your_bucket', :force => true)