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



我正在尝试使用boto3 library

删除S3存储桶
import boto3
s3 = boto3.client('s3')
bucket = s3.Bucket('my-bucket')
response = bucket.delete()

我有以下错误:

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

我看不到怎么了...谢谢

尝试以下:

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

我认为这样做更强大。由于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()
    
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)

您可以阅读详细信息

这是因为客户端接口( boto3.client(没有 .Bucket(),只有 boto3.resource,所以这将有效:

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

引用文档:

资源代表亚马逊Web服务(AWS(的面向对象的接口。它们提供的是与服务客户端进行的原始低级呼叫相比,他们提供的抽象更高。

一般来说,如果您使用的是boto3,资源可能大部分时间都可能是您首选的接口。

错误消息包含Capital S的" S3"。我怀疑在这里没有粘贴的错字,因为您的代码显示了's3''s3'

就个人而言,我只是这样做:

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

相关内容

最新更新