我正在尝试使用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)