上传视频文件时S3触发的Lambda function未调用问题求助
排查S3上传视频未触发Lambda函数的问题
1. 核对S3触发器的事件过滤规则
查看你提供的触发器配置截图,重点检查是否设置了后缀/前缀过滤规则:
- 如果触发器仅指定了非视频格式的后缀(比如
.txt、.png),视频文件(.mp4、.mov等)会被排除,导致无法触发。 - 解决:要么移除后缀过滤规则,要么添加视频对应的格式后缀;同时确认事件类型勾选了
s3:ObjectCreated:*,覆盖所有文件创建场景。
2. 检查Lambda并发配额与执行限制
视频文件体积通常较大,可能触发更高的并发请求:
- 如果Lambda的并发数达到账户配额上限,新的触发请求会被直接丢弃,不会生成CloudWatch日志。
- 验证:在Lambda控制台的「监控」页查看并发指标,若接近配额,可申请提高配额;同时优化函数逻辑,减少单请求执行时间。
3. 确认S3事件通知的有效性
S3事件通知可能因配置或权限问题无法传递到Lambda:
- 检查S3桶的「事件通知」页面,确认触发器状态为「启用」;若已开启S3访问日志,可查看日志中是否有事件发送失败的记录(比如权限错误)。
4. 验证Lambda执行角色的权限
结合IAM角色权限截图,确认以下两点:
- 角色信任策略允许
s3.amazonaws.com调用Lambda(即主体包含s3.amazonaws.com)。 - 角色拥有
lambda:InvokeFunction权限(S3需要此权限触发Lambda),以及函数处理视频所需的S3权限(比如s3:GetObject)。
5. 检查分段上传的事件配置
如果视频是通过分段上传完成的,S3默认仅在分段上传完成时触发ObjectCreated:CompleteMultipartUpload事件:
- 若你的触发器只勾选了
ObjectCreated:Put,会漏掉这类事件。解决:勾选s3:ObjectCreated:*或明确添加CompleteMultipartUpload事件类型。
6. 测试小体积视频文件
先上传几MB的小视频测试:
- 若小视频能正常触发,说明大视频可能因Lambda超时、内存不足导致执行失败(但通常会生成日志,若仍无日志则大概率是并发或触发阶段问题)。
- 调整Lambda的内存配置(提高内存会同步提升CPU性能)和超时时间,再测试大体积视频。
内容的提问来源于stack exchange,提问作者Sukomal
相关产品推荐
相关产品推荐

