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

Serverless部署AWS Lambda时是否必须在包中包含${WORKSPACE}目录?

问题解答

1. ${WORKSPACE}目录的作用说明

该目录是Jenkins执行构建任务时的默认工作目录,存放代码检出文件、构建过程临时产物、依赖缓存等内容,完全不涉及Lambda运行时所需的业务逻辑和运行依赖,没有任何实际作用,可以直接从部署包中完全排除。

2. 排除目录、实现部署包瘦身的方案

2.1 直接添加${WORKSPACE}排除规则

在现有serverless.yml的package.patterns排除规则列表中新增一行即可:

package:
 patterns:
  # 原有包含、排除规则全部保留
  # 新增以下规则
  - '!${WORKSPACE}/**'

由于sls deploy是在Jenkins流水线中执行,可直接读取到${WORKSPACE}环境变量的值,自动匹配对应目录完成排除。

2.2 优化打包默认行为

在package配置段新增excludeDevDependencies配置,无需手动列规则即可自动排除所有开发依赖,进一步精简包体积:

package:
  excludeDevDependencies: true # 自动过滤devDependencies下的所有包
  patterns:
    # 原有规则保持不变

2.3 额外优化(满足Lambda控制台行内编辑要求)

Lambda控制台行内编辑要求部署包解压后体积不超过3MB,可通过以下操作进一步瘦身:

  • 替换AWS SDK版本:Lambda Node.js运行时默认内置aws-sdk v2版本,可将当前依赖的@aws-sdk/client-secrets-manager(v3版本,需自行打包)替换为v2版本的对应接口,再将aws-sdk相关依赖移到devDependencies中,打包时不会被引入,直接减少几十MB的体积。
  • 改用serverless-esbuild插件代替tsc构建:esbuild会自动执行Tree Shaking、代码压缩,仅打包实际用到的代码片段,相比普通tsc构建的产物体积更小。
  • 公共依赖拆分到Lambda层:如果有多个函数共用相同依赖,可将依赖单独打包为Lambda层,函数部署包仅保留业务代码,进一步降低单函数包体积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:48:00