【发布时间】:2011-12-20 14:22:43
【问题描述】:
我有一个场景,我们有很多客户端上传到 s3。
- 知道有新文件的最佳方法是什么?
- 让我每隔几秒轮询一次存储桶是否现实/好主意?
【问题讨论】:
我有一个场景,我们有很多客户端上传到 s3。
【问题讨论】:
更新:
自 2014 年 11 月起,S3 支持以下事件通知:
s3:ObjectCreated:Put – HTTP PUT 操作创建了一个对象。s3:ObjectCreated:Post – HTTP POST 操作创建了一个对象。s3:ObjectCreated:Copy – 在 S3 复制操作中创建了一个对象。s3:ObjectCreated:CompleteMultipartUpload – 通过完成 S3 分段上传创建了一个对象。s3:ObjectCreated:* – 对象是由上面列出的事件类型之一或将来添加的类似对象创建事件创建的。s3:ReducedRedundancyObjectLost – 使用 Reduced Redundancy 存储的 S3 对象已丢失。这些通知可以发送给Amazon SNS、SQS 或Lambda。查看Alan's answer 中链接的博文,了解有关这些新通知的更多信息。
原答案:
虽然 Amazon S3 有一个存储桶通知系统,但它不支持除 s3:ReducedRedundancyLostObject 事件之外的任何通知(请参阅其 API 中的 GET Bucket 通知部分)。
目前检查新对象的唯一方法是以预设时间间隔轮询存储桶或在上传客户端中构建您自己的通知逻辑(可能基于 Amazon SNS)。
【讨论】:
推送通知现已内置在 S3 中:
http://aws.amazon.com/blogs/aws/s3-event-notification/
当通过 PUT 或 POST 创建对象或完成分段上传时,您可以向 SQS 或 SNS 发送通知。
【讨论】:
您现在最好的选择是使用 AWS Lambda 服务。您可以使用 node.js javascript、java 或 Python 编写 Lambda(可能会及时添加更多选项)。 lambda 服务允许您编写响应来自 S3 的事件(例如文件上传)的函数。经济高效、可扩展且易于使用。
【讨论】: