定期轮询具有大量文件的 AWS S3 存储桶中的新文件?
Posted
技术标签:
【中文标题】定期轮询具有大量文件的 AWS S3 存储桶中的新文件?【英文标题】:Poll periodically for new files in AWS S3 buckets having a lot of file? 【发布时间】:2016-07-05 08:12:59 【问题描述】:我遇到需要轮询 AWS S3 存储桶以获取新文件的情况。 此外,它不仅仅是一个桶。大约有 1000 多个存储桶,这些存储桶可能有很多文件。 这种用例的常用策略/设计是什么。我需要在每次民意调查中使用新文件。我无法从存储桶中删除文件。
【问题讨论】:
您能否提供有关您的用例的更多信息?也就是说,为什么需要这样做?可能有更好的替代方法来实现您的目标。 【参考方案1】:您应该订阅 S3 事件通知,而不是轮询:http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
这些可以传送到 SNS 主题、SQS 队列或触发 Lambda 函数。
【讨论】:
【参考方案2】:嗯,为了最好地回答这个问题,我们需要知道什么样的应用程序/架构正在执行轮询和消费,但是“AWS”的方法是让 S3 在创建时发送 S3 通知每个文件的。 S3 通知包含对 S3 文件的引用,可以发送到 SNS 或 SQS 甚至更好的 Lambda,然后触发应用程序启动、使用文件然后关闭。
现在,如果您要拥有大量文件,所有这些 SNS/SQS 通知可能会变得昂贵,有些人可能会开始考虑使用 S3 SDK/CLI 持续轮询 S3,但是您需要保持请注意,还有与轮询相关的成本,您应该寻找减少文件数量的方法。例如,如果您使用 Kinesis Firehose 转储到 S3,请查看批处理。或者您可以批量处理 SQS。尽量坚持使用事件通知,它更有弹性。
【讨论】:
以上是关于定期轮询具有大量文件的 AWS S3 存储桶中的新文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何强制删除 S3 存储桶中的所有对象版本,然后最终使用 aws-sdk-go 删除整个存储桶?
如何让 AWS S3 存储桶中的 Angular 应用程序对 AWS Elastic Beanstalk 中的服务进行 API 调用