python-3.x - 使用 boto 删除所有桶

标签 python-3.x amazon-web-services amazon-s3 boto

我的任务是创建一个脚本来删除所有当前的 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/

相关文章:

python - 如何根据其他列的条件在数据框中创建新列?

python - 是否可以求解欠定线性方程组? (最好使用 SymPy)

python-3.x - 从 .txt 文件读取到 pandas 数据框,并以换行符作为分隔符

amazon-web-services - AWS - ELB 可用区 + VPC 最佳实践?

amazon-s3 - AWS Lambda无服务器框架部署错误

Python获取完整程序 "self"

java - 用于 ssm 的 aws java sdk 给出 java.lang.NoSuchFieldError : SIGNING_REGION

python - 如何使用 Python 请求发送 AWS 凭证?

amazon-web-services - 将 S3 静态 Web 托管内容设为私有(private)

c# - 亚马逊 S3.NET : Upload base64 image data?