我的任务是创建一个脚本,以删除所有当前的S3存储桶并创建一些新的存储桶。这是他们希望持续进行的工作。到目前为止,我已经有了所有的预备知识:
import boto
from boto.s3.key import Key
import boto.s3.connection
from __future__ import print_function
conn = boto.s3.connect_to_region('us-east-1',
aws_access_key_id='my_access_key', aws_secret_access_key='my_secret_key')
ls = conn.get_all_buckets()
print(*ls,sep='\n')
这为我提供了所有当前存储桶的列表。现在,如果我要删除存储桶,我的理解是必须先使用以下方法将它们清空:
db = conn.get_bucket('bucket_name')
for key in db.list():
key.delete()
然后我可以做:
conn.delete_bucket('bucket_name')
我想进行设置,以使其从“ ls”中提取每个存储桶名称,但是我不确定该如何处理。我尝试了这个:
for i in ls:
db = conn.get_bucket('i')
for key in db.list():
key.delete()
但是我收到一个错误“ S3ResponseError:400错误的请求”。我偷偷怀疑它没有从列表中拉出单独的元素。是否可能需要涉及数据帧?据我所知,boto没有选择直接对所有文件夹进行核对。
最佳答案
我建议使用boto3
尽管未经测试(但我不想删除我的所有存储桶:),但以下方法可以解决问题
import boto3
client = session.client('s3')
s3 = boto3.resource('s3')
buckets = client.list_buckets()
for bucket in buckets['Buckets']:
s3_bucket = s3.Bucket(bucket['Name'])
s3_bucket.objects.all().delete()
s3_bucket.delete()
关于python-3.x - 使用Boto删除所有存储桶,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48649523/