Tus*_*ras 8 python python-2.7 boto3
我正在考虑删除然后重新创建存储桶(我后来意识到的错误选项).
那么如何从桶中删除所有对象?
我试过这个:http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.delete_objects
但它删除了多个对象并非全部.
你能建议什么是空桶的最佳方法吗?
moo*_*oot 25
只需使用aws cli.
aws s3 rm s3://mybucket --recursive
Run Code Online (Sandbox Code Playgroud)
好吧,如果你坚持使用boto3,可以获得更长的答案.这将向s3发送删除标记.无需文件夹处理.bucket.Object.all将创建一个不限制为1K的迭代器.
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
# suggested by Jordon Philips
bucket.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)
Gon*_*ard 17
根据之前的响应,并添加启用版本控制的检查,您可以清空存储桶,启用或不启用版本:
s3 = boto3.resource('s3')
s3_bucket = s3.Bucket(bucket_name)
bucket_versioning = s3.BucketVersioning(bucket_name)
if bucket_versioning.status == 'Enabled':
s3_bucket.object_versions.delete()
else:
s3_bucket.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)
kgu*_*win 16
如果启用了版本控制,则会调用其他答案以删除所有对象版本:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket-name')
bucket.object_versions.delete()
Run Code Online (Sandbox Code Playgroud)