使用Lambda迁移S3大文件超时问题的处理方案咨询与实践
问题背景
使用EventBridge规则触发Lambda函数,每周将同一S3桶内landing前缀下的文件迁移至hist前缀,Lambda超时时间设置为5分钟。小文件迁移可正常执行,但处理2-3GB的对象时,单个文件的复制+删除操作会耗尽5分钟时长,触发超时异常。曾考虑通过调整Lambda内存优化,寻求正确处理方案。
最终解决方案
结合场景(每周固定迁移7个2-3GB文件),引入队列会增加不必要的成本,因此选择在同一Lambda内优化执行逻辑:
- 原问题核心是代码中
await调用CopyObjectCommand导致串行执行,逐个处理大文件耗时过长 - 改用JavaScript Promise链实现所有文件的异步并行复制,大幅缩短整体复制耗时
- 待所有复制操作完成后,再统一执行
DeleteObjectCommand删除原文件
补充建议
若需处理5GB以上的文件,建议使用S3的分片上传(multipart upload),避免因单个大文件操作超时导致任务失败。
内容的提问来源于stack exchange,提问作者Laura Galera
相关产品推荐
相关产品推荐

