首先获取最新的S3密钥

时间:2011-06-18 23:46:29

标签: python amazon-s3 boto

我正在编写一个应用程序,可以在S3存储桶中存储(可能有数百万个)对象。我的应用程序将采用最新的对象(粗略地),处理它,然后将其写回到同一个存储桶中。我需要一种访问键和命名新对象的方法,以便应用程序可以轻松访问最新的对象。

我知道我可以通过在SimpleDB中放置元数据来正确地做到这一点,但我不需要硬性一致性。如果应用程序抓取一个不是最新的对象,这没关系。我只需要该应用程序倾向于抓住新的密钥而不是旧密钥。所以我试图通过单独使用S3来保持简单。

有没有办法访问和排序S3元数据?或者可能有一个方案来命名可以得到我需要的对象(因为我知道S3按字典顺序列出键并且boto可以处理分页)。

1 个答案:

答案 0 :(得分:1)

s3版本确实在这里有所帮助。如果它们真的是相同的“东西”你可以打开你的版本控制,从你的密钥获取数据,修改它并将其存储回相同的密钥。

你需要使用boto的

bucket.get_all_versions( prefix='yourkeynamehere' )

你得到版本,最近的版本,所以虽然这个函数不处理分页,你可以得到第一个索引,你已经有了最新的版本。

如果你想进一步返回并需要分页,boto还提供了一个list_versions()函数,该函数也带有一个前缀,并为你提供一个结果集,它将遍历所有版本而不需要担心它。

如果这些对象确实不是“相同”的对象,那真的无关紧要,因为s3不存储差异 - 它每次都存储整个事物。如果您有多个“类型”的对象,则可以拥有多个版本集,您可以将它们拉到最近。

我一直在使用版本控制,我很满意。