需要关于如何在S3上查找现有对象的建议。

0

【以下的问题经过翻译处理】 您好,我们每天都有来自外部的文件,并将它们上传到S3。这些文件可能是之前某一天的复制品,因此我们需要在上传之前检查它们是否已经存在。

我们旧的方法是在上传新文件后将文件名保存到SDB中,因此我们可以使用SDB查询查找现有文件。

最近,我们想改用S3 HEAD Object API来检查文件的存在性。

我们需要建议:

(1)除了SDB和S3 HEAD API以外,是否有更好的方法?有没有批量检查存在性的新的S3 API?

(3)对于我们的用例,S3 HEAD API是否足够好(我们需要在每小时的白天查找约200个文件名)?

提前感谢!

profile picture
专家
已提问 5 个月前87 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

虽然我使用S3非常多,但我并不是亚马逊的员工,所以请自行判断。

每小时的 HEAD 请求量完全没有问题,应该不会严重影响服务。

检查随机键是否存在并没有更好的办法。但是,如果你一次有很多个键,并且这些键共享路径结构,你可以执行一次关于共同前缀的列表请求并检查内容,效率会更高。

请记住,S3可能不是立即一致的。要完全理解对你的特定用例的影响,请阅读文档,但有几个问题需要注意:

1.如果在上传之前执行GET / HEAD,然后PUT,然后再执行GET / HEAD-该响应最终将不保证返回对象存在。 2.LIST请求最终一致。

考虑到这些和你对要检查的对象数量的期望值,我建议保持简单,并只执行HEAD-可能需要一些基于时间的重试以解决最终一致性问题。如果做出错误决策,可以重新上传一个重复的对象,这并不会造成数据丢失,只会增加你的成本,所以如果偶尔发生这种情况,不会太大的影响。

希望这能帮到你!

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则