python - 首先获取最新的 S3 key

标签 python amazon-s3 boto

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

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

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

最佳答案

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

你需要使用boto的

bucket.get_all_versions( prefix='yourkeynamehere' )

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

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

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

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

关于python - 首先获取最新的 S3 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399612/

相关文章:

python - MongoDB:如何从 API 获取 db.stats()

python - 如何对同一模型使用两个不同的模型序列化程序?

python - 力扣 : Problem 23 - Merge K Sorted Lists

c# - 如何关闭 `AmazonS3`对象中的自动代理检测?

python-2.7 - 如何使用 python 的 boto 库仅从 Amazon S3 中删除对象而不删除包含该对象的子文件夹

python - 在 pandas.dataframe 中搜索优化选择

amazon-web-services - AWS CloudTrail Create API for Go SDK 抛出错误消息 "InsufficientS3BucketPolicyException: Incorrect S3 bucket policy is detected for bucket: "

amazon-web-services - 将 WordPress 迁移到 Amazon Web Services

python - 如何使用 boto 以编程方式检查 Amazon S3 权限?

python - IAM角色的bo​​to问题