Chi*_*Fur 11 python versions amazon-s3 boto
当我尝试使用以下行删除存储桶时:
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
print conn.delete_Bucket('BucketNameHere').message
Run Code Online (Sandbox Code Playgroud)
它告诉我我试图删除的桶不是空的.
水桶没有钥匙.但它确实有版本.
如何删除版本?
我可以看到使用bucket.list_versions()的版本列表
Java在其s3连接上有一个deleteVersion方法.我在这里找到了代码:
http://bytecoded.blogspot.com/2011/01/recursive-delete-utility-for-version.html
他这行删除版本:
s3.deleteVersion(new DeleteVersionRequest(bucketName, keyName, versionId));
Run Code Online (Sandbox Code Playgroud)
在博托有什么可比性的吗?
sec*_*ike 20
Boto确实支持版本1.9c之后的版本化存储桶.以下是它的工作原理:
import boto
s3 = boto.connect_s3()
#Create a versioned bucket
bucket = s3.create_bucket("versioned.example.com")
bucket.configure_versioning(True)
#Create a new key and make a few versions
key = bucket.new_key("versioned_object")
key.set_contents_from_string("Version 1")
key.set_contents_from_string("Version 2")
#Try to delete bucket
bucket.delete() ## FAILS with 409 Conflict
#Delete our key then try to delete our bucket again
bucket.delete_key("versioned_object")
bucket.delete() ## STILL FAILS with 409 Conflict
#Let's see what's in there
list(bucket.list()) ## Returns empty list []
#What's in there including versions?
list(bucket.list_versions()) ## Returns list of keys and delete markers
#This time delete all versions including delete markers
for version in bucket.list_versions():
#NOTE we're still using bucket.delete, we're just adding the version_id parameter
bucket.delete_key(version.name, version_id = version.version_id)
#Now what's in there
list(bucket.list_versions()) ## Returns empty list []
#Ok, now delete the bucket
bucket.delete() ## SUCCESS!!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |