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

我目前正在将一个大小为 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 事件吗?


沧海一幻觉
浏览 121回答 1
1回答

DIEA

B2当您一次编写 25K 个对象时,我不认为设置通知事件是最佳选择。我认为可以简化流程。Lambda L1写入 25K 对象B2可以创建一个正在写入的对象键数组并将其放入B2. 确保将其写入单独的文件夹,并在该文件夹中设置通知事件,而不是在写入 25K 文件的位置。L2当您编写包含 25K 个对象的键的文件时将触发,它可以传递给您的microservice.使用 SNS 的另一种选择Lambda L1写入 25K 对象B2可以创建正在写入的对象键数组并将其发布到 SNS 主题。SNS 消息大小为 256 KB,足以满足您的用例您mircoservice可以订阅 SNS 主题以接收对象键并在数据库中进行条目
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java