S3上传大文件(如65MB)时Lambda未触发问题求助
我之前也碰到过一模一样的问题!大概率是S3大文件上传的事件类型配置没覆盖到,给你梳理几个排查和解决的关键点:
排查与解决方法
1. 确认S3事件通知的触发类型
当文件大小超过S3的分段上传阈值(默认100MB,部分工具会提前启用),S3会自动用分段上传完成文件上传。而普通的s3:ObjectCreated:Put事件只会触发在单块上传的场景,分段上传完成后需要对应的s3:ObjectCreated:CompleteMultipartUpload事件才能触发Lambda。
你可以按这个步骤检查:
- 打开S3控制台,找到你的目标源存储桶
- 切换到「属性」标签页,找到「事件通知」模块
- 找到绑定Lambda的那条规则,检查事件类型是否同时勾选了
Put和CompleteMultipartUpload - 如果缺了
CompleteMultipartUpload,勾选它并保存配置
2. 检查Lambda的触发日志(CloudWatch)
有时候看似“没触发”,其实是Lambda执行后报错了,只是你没看到日志。去CloudWatch控制台:
- 找到对应Lambda函数的日志组
- 查看最近的日志条目,如果能看到分段上传相关的请求日志,说明事件已经触发,问题出在你的转换代码(比如内存不足、大文件处理逻辑有bug)
- 如果完全找不到对应时间的日志,那就是事件根本没传到Lambda,回到第一步确认事件配置
3. 验证Lambda的基础配置
虽然小文件能正常触发,但还是确认下这两个点:
- 并发限制:Lambda默认并发是1000,如果你手动调整过,确保没有设为0或者过低的数值导致无法处理新请求
- 超时时间:大文件转换需要更长时间,把Lambda的超时时间设置得足够(最大可以设为15分钟),避免因为超时被终止而误以为没触发
4. 排除存储桶的前缀/后缀过滤规则
如果你在S3事件通知里设置了前缀或后缀过滤,确认大文件的路径和后缀符合过滤规则,不然事件也不会触发Lambda。
内容的提问来源于stack exchange,提问作者umdev
相关产品推荐
相关产品推荐

