You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda多S3Event触发异常及同步执行需求咨询

问题分析与解决方案

一、额外数据产生的原因

1. S3事件批量交付引发的重复处理

AWS S3事件通知默认会将短时间内的多个ObjectCreated:Put事件打包成批量请求发送给Lambda,而非每个文件单独触发一次调用。你在CloudWatch日志中看到的多组Records,就是S3合并多个文件上传事件的结果。

结合数据超额的情况,更可能是Lambda自动重试机制导致:当Lambda执行超时、报错时,AWS会自动重试该事件(默认最多3次),如果代码未做幂等校验,同一文件的数据会被重复同步,最终产生额外数据。

2. 上传脚本的重复上传问题

尽管设置了10秒上传间隔,若上传脚本因网络波动、异常重启等问题重复上传了同一个文件,S3会再次触发事件通知,导致Lambda重复处理该文件的数据。

二、调试与解决办法

1. 改为单事件触发(方便调试)

你可以修改S3事件通知配置,强制每个事件单独触发Lambda:

  • 进入S3控制台,打开目标存储桶的「事件通知」页面
  • 编辑关联Lambda的触发规则,找到「事件批量配置」
  • 将「最大事件数」设为1,「最大等待时间」设为0秒
    这样S3会立即将每个文件上传事件单独发送给Lambda,不会批量合并,便于调试单文件处理逻辑。

2. 修复Lambda代码

  • 遍历所有事件:确保代码循环处理event.Records数组中的每一条记录,不遗漏任何文件
  • 添加幂等校验:处理前用S3对象的key或eTag作为唯一标识,将已处理的记录存入DynamoDB,避免重复同步
  • 调整重试策略:在Lambda配置中降低重试次数(甚至设为0),或配置死信队列(DLQ)接收处理失败的事件,防止自动重试引发重复处理

3. 排查上传脚本

检查上传脚本的运行日志,确认是否存在重复上传同一文件的情况,比如脚本是否因网络重试逻辑导致多次执行Put操作。

内容的提问来源于stack exchange,提问作者user16778385

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:19