为了账号安全,请及时绑定邮箱和手机立即绑定

如何停止/控制 AWS S3 在对象上传时触发的事件以调用 AWS Lambda?

如何停止/控制 AWS S3 在对象上传时触发的事件以调用 AWS Lambda?

沧海一幻觉 2022-04-28 15:57:44
我目前正在将一个大小为 250 MB 和 100 万条记录的文件上传到 AWS S3 Bucket(B1) 中。这会触发一个 Lambda(L1 - 1.5GB,3 分钟),它会读取此文件并使用某些标准对记录进行分组,并在不同的存储桶(B2)上再次将大约 25K 文件写入 S3。现在,在 Bucket (B2) 上配置的通知事件会生成 25K 事件(请求)到不同的 Lambda(L2 - 512MB,2Mins,Concurrency-2)。这个 Lambda 调用一个基于 Java 的微服务,它在处理后进入数据库,每次调用大约需要 1-2 秒。这里的问题是,一旦触发了 2nd Lambda (L2),就无法阻止它。它运行了几个小时并且在完全处理所有事件之前没有接收到同一个 lambda 的任何其他事件并且我无法控制已经触发的 S3 事件。有人可以解释一下在 Amazon S3 上处理文件上传(架构)时如何在 S3 上触发事件以及如何对触发的 S3 事件进行细粒度控制吗?我可以在 AWS Lambda 端做些什么来阻止已经触发的 S3 事件吗?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

B2当您一次编写 25K 个对象时,我不认为设置通知事件是最佳选择。我认为可以简化流程。

  • Lambda L1写入 25K 对象B2可以创建一个正在写入的对象键数组并将其放入B2. 确保将其写入单独的文件夹,并在该文件夹中设置通知事件,而不是在写入 25K 文件的位置。

  • L2当您编写包含 25K 个对象的键的文件时将触发,它可以传递给您的microservice.

使用 SNS 的另一种选择

  • Lambda L1写入 25K 对象B2可以创建正在写入的对象键数组并将其发布到 SNS 主题。SNS 消息大小为 256 KB,足以满足您的用例

  • mircoservice可以订阅 SNS 主题以接收对象键并在数据库中进行条目


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信