如何使用boto获取所有版本的S3密钥并取消删除?

I Z*_*I Z 6 versioning amazon-s3 boto undelete

我有一段时间的S3存储桶,但现在才开始版本控制.尝试用它来试图找出我只是通过版本控制得到什么样的检测保护,而不激活"MFA删除"选项.

我上传了一个测试文件,然后将其删除,然后重新上传两次.现在,使用S3浏览器工具,我看到该文件的4个版本:#1,#2(删除),#3和#4(当前).如果我boto用来获取最新版本,我可以提取它version_id:

import boto
c=boto.connect_s3()
b=c.get_bucket('my-bucket')
k = b.get_key('test2/dw.txt')
print k.version_id
Run Code Online (Sandbox Code Playgroud)

但是如何获得给定密钥的version_id的完整列表?如果我想要检索密钥的第1版(已删除),我是否需要先使用版本#2 id来"取消删除"它?

最后,此删除保护(创建删除标记)是否与打开版本控制之前上载的旧文件一起使用?

谢谢

gar*_*aat 5

您可以使用list_versionsbucket对象的方法获取所有可用版本的列表。

import boto
c = boto.connect_s3()
bucket = c.get_bucket('my-bucket')
for version in bucket.list_versions():
    print(version)
Run Code Online (Sandbox Code Playgroud)

这将返回与它们Key有特定version_ids关联的对象列表。您可以检索任何版本,但可以使用Key对象上的常规方法。如果要将旧版本设为当前版本,则必须重新上传它或将其复制到服务器上。

在存储桶上启用版本控制后,此时间点之后对存储桶中任何对象的所有删除操作将导致将删除标记写入存储桶,而不是实际删除对象。

  • 不,list_versions方法采用一个称为prefix的参数,该参数可用于限制返回的结果。如果您感兴趣的键称为foobar,则list_versions(prefix =“ foobar”)会将结果限制为该键的版本。 (2认同)