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

如何在AWS CloudFormation中配置共享模块的Serverless Lambda函数

最优解决方案

方案一:用Lambda Layer托管公共模块(推荐)

把共享的module做成Lambda Layer,两个Lambda函数可以共享这个Layer,既避免代码重复,也不会把无关代码打包进函数部署包。

实现步骤:

  1. 保持你现有文件夹结构不变:
src/
    lambda1/
    lambda2/
    module/
  1. 在CloudFormation(SAM)模板中定义Lambda Layer及关联的函数:
Resources:
  SharedModuleLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: SharedModuleLayer
      ContentUri: ./src/module/
      CompatibleRuntimes:
        - python3.9 # 替换为你实际使用的运行时
      RetentionPolicy: Retain

  LambdaFunction1:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: Lambda1
      CodeUri: ./src/lambda1/
      Handler: lambda_function.lambda_handler
      Runtime: python3.9
      Layers:
        - !Ref SharedModuleLayer # 引用共享Layer

  LambdaFunction2:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: Lambda2
      CodeUri: ./src/lambda2/
      Handler: lambda_function.lambda_handler
      Runtime: python3.9
      Layers:
        - !Ref SharedModuleLayer
  1. 部署时SAM会自动把module打包成Layer,Lambda函数运行时可以直接按本地方式import该模块。

方案二:自定义构建脚本打包(适合不想用Layer的场景)

借助SAM的自定义构建能力,在打包每个Lambda函数时自动将module复制到对应函数目录,再生成部署包。

实现步骤:

  1. 在项目根目录创建Makefile:
build-LambdaFunction1:
    cp -r src/module src/lambda1/
    sam build -t template.yml --build-dir .aws-sam/build/LambdaFunction1 LambdaFunction1

build-LambdaFunction2:
    cp -r src/module src/lambda2/
    sam build -t template.yml --build-dir .aws-sam/build/LambdaFunction2 LambdaFunction2
  1. 在CloudFormation模板中指定BuildMethod为makefile:
Resources:
  LambdaFunction1:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: Lambda1
      CodeUri: ./src/lambda1/
      Handler: lambda_function.lambda_handler
      Runtime: python3.9
    Metadata:
      BuildMethod: makefile

  LambdaFunction2:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: Lambda2
      CodeUri: ./src/lambda2/
      Handler: lambda_function.lambda_handler
      Runtime: python3.9
    Metadata:
      BuildMethod: makefile
  1. 运行sam build时,会自动执行Makefile中的复制逻辑,把公共模块加入对应Lambda的部署包,同时不会混入另一个Lambda的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:54:29