2011-06-18 43 views
2

我正在编写一个应用程序,该应用程序可以在S3存储区中存储(可能是数百万个)对象。我的应用程序将采用最近的对象(大致),处理它,并将它写回到同一个存储桶中。我需要一种访问键和命名新对象的方式,以便应用程序可以轻松地访问最新的对象。首先获取最新的S3密钥

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

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

回答

1

s3版本确实有帮助。如果这些东西真的是相同的“东西”,您可以为您启用版本控制桶,从您的密钥获取数据,修改它并将其存储回同一个密钥。

你需要使用博托是

bucket.get_all_versions(prefix='yourkeynamehere') 

你的版本了,最近的第一,因此这个功能不处理分页,你可以得到的第一个索引和你有最新版本。

如果你想回到更远的地方并且需要分页,boto还提供了一个list_versions()函数,该函数也需要一个前缀,并且会给你一个结果集来遍历所有的版本,而不需要担心它。

如果这些对象真的不是“相同”的对象,那真的没关系,因为S3不存储差异 - 它每次都存储整个事物。如果你有多个'类型'的对象,你可以有多个版本集,你可以把它们拉到最近。

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