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

0

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

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

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

我们需要建议:

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

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

提前感谢!

profile picture
EXPERTE
gefragt vor 5 Monaten92 Aufrufe
1 Antwort
0

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

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

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

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

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

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

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

希望这能帮到你!

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen