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

如何使用AWS SAM为每个Lambda函数生成仅含对应依赖的单独ZIP包?

完全可以通过SAM原生配置实现每个Lambda函数单独打包、仅包含自身所需依赖,同时解决你提到的两个问题,具体操作如下:

1. 调整项目目录结构

将每个Lambda函数的代码和依赖声明单独拆分到独立目录,参考目录结构:

项目根目录
├── template.yaml
├── common  # 公共通用代码(可选,后续可抽为公共层)
└── functions
    ├── function1
    │   ├── app.py  # 函数1业务代码
    │   └── requirements.txt  # 仅函数1用到的依赖声明
    ├── function2
    │   ├── app.py  # 函数2业务代码
    │   └── requirements.txt  # 仅函数2用到的依赖声明
    └── 其余8个函数的独立目录

2. 修改SAM模板函数配置

每个AWS::Serverless::Function资源的CodeUri字段指定到对应函数的独立目录,而非项目根目录,示例配置:

Resources:
  Function1:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: functions/function1/
      Handler: app.lambda_handler
      Runtime: python3.9
  Function2:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: functions/function2/
      Handler: app.lambda_handler
      Runtime: python3.9
  # 其余函数按相同规则配置即可

3. 执行构建部署命令

执行build命令时可添加--parallel参数并行构建所有函数,进一步提升构建速度:
sam build --parallel && sam package && sam deploy

完成以上配置后,SAM会为每个函数单独构建打包,仅将对应函数目录下的代码、以及该目录依赖声明中的包打入对应ZIP包,不会包含其他函数的无关内容。
如果多个函数存在共用依赖,也可以抽为Lambda公共层,SAM支持公共层的本地构建配置,配置后公共依赖仅会上传一次,可进一步压缩单个函数的包体积,也不会再出现重复上传相同文件的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:27:05