2012-12-14 55 views
2

所以我使用S3作为图像存储,图像不断上传到各种软件的存储桶。轮询新S3对象的最佳方法是什么?

我还在构建一个rails应用程序,可以让用户在S3上浏览图片库,但对于性能问题,我需要保留有关本地数据库中图片信息的副本,所以我不必连接到S3的API,只要有人看到一个画廊。

现在什么是最好的方法来获得S3上的新对象的通知,我没有关于我的数据库的信息?

我想让一个工作人员不断提取所有S3对象的列表并注册我们没有的对象,但S3对每个API请求有1000个对象的限制,并且我无法在API docs上找到方法指定下一个请求的偏移量,直到获取所有对象。

任何人有一个想法?

P.S.我使用this gem连接到S3

回答

2

this answer here陈述,并在S3 documentation,S3不允许上传新文件到S3后通知。通过轮询,您迟早会达到一些限制。

我会尝试一种不同的方法。转到您的上传软件并在那里添加通知。例如,您可以向SNS发送通知,说明正在进行新的上传。您可以订阅此SNS队列,然后在您的服务器上执行后台任务,并在数据库中填写必要的信息。

但是,如果您想要使用轮询方式,请查看链接文档页面中结果对象中的Marker属性。每个请求都会返回一个标记,并且如果您将此标记提供给下一个请求,您将获得第一个查询中不可用的下一个对象。

+0

谢谢,但'marker'返回'nil',我们得到了成千上万的对象,返回的对象列表大小为1000,这意味着有更多的结果,但标记为零。奇怪的。 – Ryan

相关问题