使用boto3删除AWS S3桶 - AttributeError的

问题描述:

我试图删除的S3存储使用boto3库使用boto3删除AWS S3桶 - AttributeError的

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() 
+0

谢谢,但错误仍然存​​在@UXDart – Rambo

+0

您使用的是最新版本的boto3吗?或者您使用的是哪个版本? – UXDart

+0

我正在Lambda上运行我的脚本,它有版本1.4.4 – Rambo

错误消息中包含大写字母“S”。我怀疑由于您的代码以小写字母s显示's3',因此这里没有粘贴错字。

就个人而言,我只是做这种方式:

import boto3 

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

您的错字声明是错误的,boto3或Python出于某种原因返回'S3'。 你可以在这里测试这个代码片段,并比较我得到的输出:https://pastebin.com/raw/XCm59Gvv –

这是因为客户端界面(boto3.client)没有.Bucket(),只有boto3.resource做,所以这会工作:

import boto3 

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

docs引用:

Resources represent an object-oriented interface to Amazon Web Services (AWS). They provide a higher-level abstraction than the raw, low-level calls made by service clients.

一般来说,如果您使用的是boto3,资源可能大部分时间应该是您的首选界面。