首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lambda批量处理s3对象

使用lambda批量处理s3对象
EN

Stack Overflow用户
提问于 2021-02-05 06:48:43
回答 1查看 1.2K关注 0票数 0

用例是,每分钟都会将1000 s非常小的文件上传到s3,所有传入的对象都将使用lambda处理并存储在一个单独的桶中。但是使用S3对象创建作为触发器将使许多lambda调用和并发需要得到处理。我试图每5-10分钟对新创建的对象进行批处理。S3提供批处理操作,但它每天/每周生成报告。有什么服务可以帮助我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 10:12:59

根据AWS文件,S3可以将“新建对象创建的事件”发布到以下目的地:

  • 亚马逊SNS
  • Amazon
  • 拉姆达

就你而言,我会:

  1. 创建SQS。
  2. 配置S3桶将S3新对象事件发布到SQS。
  3. 重新配置现有的Lambda以订阅SQS。
  4. 为输入SQS事件配置批处理。

目前,SQS订阅的最大批大小是1000个事件。但是由于Lambda需要大约2秒来处理单个事件,那么您应该从更小的事件开始,否则Lambda就会超时,因为它无法处理所有事件。

由于这一点,将X项上载到S3将产生X / Y事件,其中Y是SQS的最大批处理大小。对于1000个S3项和100个批处理大小,它将只调用大约10个并发的Lambda执行。

上面提到的AWS文档解释了如何将S3事件发布到SQS。我不会在这里解释它,因为它更多地是关于实现细节。

执行时间

然而,您可能会遇到一个问题,处理太慢,因为Lambda将处理一个循环中一个接一个的事件。

解决方法是使用异步处理和实现,这取决于您为Lambda使用的运行时,对于Node.js,这将非常容易实现。

另外,如果您想以其他方式加速处理,只需减少最大批处理大小并增加Lambda内存配置,那么单次执行将处理较少数量的事件,并且可以访问更多的CPU单元。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66058822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档