使用Serverless部署时连续触发AWS Lambda层大小超限错误
解决AWS Lambda Layer发布时的未压缩大小超限问题
可能触发问题的原因
你提到依赖压缩包大小没变化,但连续构建时报错,大概率是这几个情况:
- GitHub Actions工作目录没清干净,每次构建都把之前的残留文件重复打进Layer包
- Serverless Framework的Layer配置没做好,把冗余文件(比如本地缓存、日志、开发依赖)也打包进去了
- 依赖安装环节出问题,比如重复安装导致node_modules体积异常变大
具体解决方法
1. 在GitHub Actions里加个清理步骤
构建前强制清空工作目录,避免残留文件搞事情:
- name: 清理工作目录 run: | rm -rf node_modules rm -rf .serverless git clean -fdx
2. 修正Serverless的Layer打包配置
确保只打包必要的依赖,把没用的都排除。比如在serverless.yml里这么写:
layers: MyDependencies: path: layer # 你的依赖存放目录 package: include: - node_modules/** exclude: - node_modules/**/.bin - node_modules/**/*.log - node_modules/**/test - node_modules/**/docs - node_modules/**/*.map
3. 安装依赖只拿生产环境的
用--production参数跳过开发依赖,减少打包体积:
npm ci --production # 用yarn的话就跑这个 yarn install --production
4. 提前检查Layer未压缩大小
不管是本地还是在GitHub Actions里,加个步骤验证解压后的大小,确认是不是真的超了:
# 解压Layer包并查看大小 unzip -q layer.zip -d temp-layer du -sh temp-layer rm -rf temp-layer
5. 排查是否重复打包依赖
检查你的Serverless配置,别同时在函数代码和Layer里打包相同的依赖。业务代码只放逻辑,依赖全丢Layer里,避免重复计算大小。
额外小技巧
要是上面的方法都没用,可以试试这些:
- 换个国内npm镜像装依赖,避免下载额外缓存文件
- 给依赖瘦身:删掉没用的包,或者用更轻量的替代(比如用lodash-es代替完整lodash)
- 去AWS控制台确认旧Layer版本真的删干净了(虽然删除延迟概率低,但也可以排查下)
内容的提问来源于stack exchange,提问作者Ananya Dasgupta
相关产品推荐
相关产品推荐

