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

使用AWS SAM部署AWS Lambda函数时,如何配置以忽略requirements.txt仅部署源码?

解决方案:在AWS SAM中忽略requirements.txt仅部署函数源码

当然可行!针对你这种已经把依赖打包到Layer、只想快速部署函数源码的场景,AWS SAM提供了几种直接的实现方式,下面一步步来:

方法1:通过SAM模板的Metadata自定义构建行为

这是最推荐的方式,能精准控制构建过程,跳过依赖安装步骤。

步骤1:修改template.yaml配置

在你的Lambda Function资源中,添加Metadata字段,指定自定义的构建方法(比如用makefile),同时关联好你的依赖Layer:

Resources:
  YourLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./your-function-src/  # 指向你的函数源码目录
      Handler: main.lambda_handler
      Runtime: python3.11
      Layers:
        - !Ref YourDependencyLayer  # 关联已上传的依赖Layer
    Metadata:
      BuildMethod: makefile  # 指定用makefile来处理构建

步骤2:添加自定义Makefile

在你的函数源码目录(比如your-function-src/)下创建一个名为Makefile的文件,内容只负责复制源码到构建目录,完全跳过依赖安装:

build-YourLambdaFunction:
    cp -r ./* $(ARTIFACTS_DIR)/

这里的build-YourLambdaFunction要和你模板里的函数资源名称对应,这样SAM构建时会执行这个命令,只复制源码。

方法2:直接跳过构建步骤(简单但需谨慎)

如果你的源码已经是可以直接部署的状态(不需要任何编译或预处理),可以直接在模板中设置SamBuildPolicy: IgnoreBuild来完全跳过构建过程:

Resources:
  YourLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./your-function-src/
      Handler: main.lambda_handler
      Runtime: python3.11
      Layers:
        - !Ref YourDependencyLayer
    Metadata:
      SamBuildPolicy:
        IgnoreBuild: true

这种方式最简单,但要确保CodeUri目录下的代码已经是符合Lambda运行要求的,没有任何需要构建的内容。

注意事项

  • 确认你的依赖Layer的目录结构正确:对于Python运行时,Layer中的依赖需要放在python/lib/pythonX.X/site-packages/目录下(X.X对应你的Python版本),这样Lambda才能正确加载。
  • 本地测试时,可以用sam local invoke验证函数是否能正常调用Layer中的依赖,避免部署后出现依赖找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:27:39