我目前正在将一个大小为 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条经验 获得超3个赞
B2当您一次编写 25K 个对象时,我不认为设置通知事件是最佳选择。我认为可以简化流程。
Lambda L1写入 25K 对象B2可以创建一个正在写入的对象键数组并将其放入B2. 确保将其写入单独的文件夹,并在该文件夹中设置通知事件,而不是在写入 25K 文件的位置。L2当您编写包含 25K 个对象的键的文件时将触发,它可以传递给您的microservice.
使用 SNS 的另一种选择
Lambda L1写入 25K 对象B2可以创建正在写入的对象键数组并将其发布到 SNS 主题。SNS 消息大小为 256 KB,足以满足您的用例您
mircoservice可以订阅 SNS 主题以接收对象键并在数据库中进行条目
添加回答
举报
0/150
提交
取消
