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

使用AWS SAM CLI构建Lambda时如何避免每次执行pip install

优化SAM CLI构建Lambda时的依赖安装耗时问题

你提出的方案可行性与注意事项

将sam build生成的镜像作为后续构建的基础镜像并移除pip install步骤是可行的,但需要注意以下几点避免后续问题:

  • 依赖变更必须同步更新基础镜像:只要requirements.txt内容有修改,必须重新执行一次完整的sam build生成新的基础镜像,否则会导致运行时依赖缺失或版本不符的错误。
  • 做好镜像版本管理:建议给基础镜像打上包含依赖特征的标签(比如基于requirements.txt的哈希值或版本号),例如docker tag sam-generated-image:latest lambda-base:reqs-hash-xxxxxx,防止后续构建误用到旧版本的依赖镜像。
  • 适配Lambda运行时更新:当Lambda官方运行时镜像(比如Python版本升级)更新时,必须重新生成基础镜像,否则可能出现运行环境不兼容的问题。

其他更常用的优化方案

1. 利用SAM内置缓存机制

SAM默认会基于文件哈希缓存构建结果,只要requirements.txt和Dockerfile没有改动,sam build会自动跳过依赖安装步骤。如果你的构建每次都重复执行pip install,可以检查:

  • 是否在命令中添加了--no-cached参数,禁用了缓存
  • 项目结构是否导致requirements.txt的哈希值频繁变动(比如放在了被频繁修改的目录下)
  • 可以在samconfig.toml中明确配置cached = true确保缓存开启

2. 自定义分层Dockerfile

手动编写Dockerfile,将依赖安装和代码复制拆分为独立的分层,利用Docker的分层缓存特性加速构建:

FROM public.ecr.aws/lambda/python:3.8

# 先复制依赖文件,安装依赖(这层会被Docker缓存,仅当requirements.txt变更时重新构建)
COPY requirements.txt .
RUN python3.8 -m pip install -r requirements.txt -t .

# 再复制业务代码(仅代码变动时重新构建这一层)
COPY app.py .

CMD ["app.lambda_handler"]

在template.yaml的Function资源中指定自定义Dockerfile路径:

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
    Metadata:
      Dockerfile: Dockerfile

3. 使用Lambda层托管依赖

将依赖打包为Lambda层,与业务代码分离,这样每次构建仅需处理代码部分:

  • 安装依赖到指定目录:mkdir -p python && pip install -r requirements.txt -t python/
  • 打包为层压缩包:zip -r dependencies-layer.zip python/
  • 在template.yaml中定义层并关联到Lambda函数:
Resources:
  DependenciesLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      ContentUri: ./dependencies-layer.zip
      CompatibleRuntimes:
        - python3.8
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.8
      Handler: app.lambda_handler
      CodeUri: ./app/
      Layers:
        - !Ref DependenciesLayer

4. 使用SAM Accelerate快速同步

使用sam sync命令替代sam build && sam deploy,该命令会增量检测代码/配置变更,仅同步修改的部分,无需全量构建,大幅提升开发迭代速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:15:38