使用boto3删除AWS S3存储桶 - AttributeError

4
我正在尝试使用boto3库删除S3存储桶。
import boto3

s3 = boto3.client('s3')
bucket = s3.Bucket('my-bucket')
response = bucket.delete()

I get the following error:

"errorType": "AttributeError",
"errorMessage": "'S3' object has no attribute 'Bucket'"

我看不出有什么问题...谢谢

5个回答

6

试试这个:

import boto3    
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
bucket.delete()

你正在使用最新版本的boto3吗?还是你在使用哪个版本? - UXDart
我正在Lambda上运行我的脚本,它的版本是1.4.4。 - Rambo
你确定s3 = ...这一行没有错误吗?如果在出现你所描述的错误之前检查lambda日志了吗? - UXDart
刚刚检查过,在 bucket = s3.Bucket('my-bucket') 之前没有错误。 - Rambo
你能执行 print boto3.__version__ 吗?我认为 Lambda 没有最新版本... - UXDart

1
我认为这种方法更加健壮。因为API不允许删除非空存储桶。
import boto3





BUCKET_NAMES = [
    "buckets",
    "to",
    "remove"
]

for bucket_name in BUCKET_NAMES:
    s3 = boto3.resource("s3")
    bucket = s3.Bucket(bucket_name)
    bucket_versioning = s3.BucketVersioning(bucket_name)
    if bucket_versioning.status == 'Enabled':
        bucket.object_versions.delete()
    else:
        bucket.objects.all().delete()
    response = bucket.delete()
    

0
import boto3
s3resource = boto3.client('s3')
s3bucketlists = s3resource.list_buckets()
for bucket in s3bucketlists["Buckets"]:
    print(f' {bucket["Name"]}')
    abc = {bucket["Name"]}
    for i in abc:
        print(i)
        s3resource.delete_bucket(Bucket=i)


你可以阅读详情

请记住,Stack Overflow 不仅仅是为了解决当前的问题,还要帮助未来的读者找到类似问题的解决方案,这需要理解底层代码。对于我们社区中的初学者来说,这尤为重要,他们可能对语法不太熟悉。鉴于此,请问您能否编辑您的答案,包括对您所做的操作的解释以及为什么您认为这是最佳方法? - undefined

-1
这是因为客户端接口 (boto3.client) 没有 .Bucket(),只有 boto3.resource 才有,所以这样可以工作:

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
response = bucket.delete()

引用自文档

资源代表Amazon Web Services(AWS)的面向对象接口。它们提供比服务客户端所做的原始低级调用更高级别的抽象。

一般来说,如果您正在使用boto3,则大多数情况下应该优先选择资源作为您的接口。


-2
错误信息中包含大写字母S的'S3'。我怀疑这是一个打字错误,因为你的代码显示小写字母s的's3'。

个人而言,我会这样做:

import boto3

s3 = boto3.client('s3')
bucket = 'my_bucket'
response = s3.delete_bucket(Bucket=bucket)

1
你的错别字声明是错误的,boto3或Python因某种原因返回'S3'。您可以在此处测试此代码片段并比较我得到的输出:https://pastebin.com/raw/XCm59Gvv - Ian Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接