boto计算特定对象的版本号

时间:2013-10-08 23:44:21

标签: boto

我有一个带有版本的s3存储桶和一个带有许多版本的密钥。我想知道是否有一种有效的方法来查找存储桶中特定密钥的版本数量。

这是我所知道的唯一方式

version_count = list(bucket.list_versions().__iter__())

此信息是否在其他任何地方?

如果我能通过删除版本但在搜索中找不到任何内容来获取此信息,那将是非常好的。

1 个答案:

答案 0 :(得分:3)

查找对象的所有版本的唯一方法是列出版本。但是,在列出版本时需要小心,因为返回的对象列表也可能包含不应计算的DeleteMarkers。

我发现这很有效:

import boto
from boto.s3.key import Key

c = boto.connect_s3()
bucket = c.lookup('mybucket')
versions = [v for v in bucket.list_versions('myversionedobject') if isinstance(v, Key)]

变量versions现在将包含实际版本的列表,显然,在该列表上执行len()将为您提供版本数量。如果有更简单的方法,我就不知道了。