Skip to main content
 首页 » 编程设计

python之首先获取最新的 S3 key

2025年05月04日8webabcd

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

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

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

请您参考如下方法:

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

你需要使用boto的

bucket.get_all_versions( prefix='yourkeynamehere' ) 

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

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

如果这些对象真的不是“同一个”对象,那也没关系,因为 s3 不存储差异——它每次都存储整个对象。如果您有多个“类型”的对象,您可以有多个版本集,您可以从中提取最新的版本集。

我一直在使用版本控制,我对它非常满意。