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

如何解决AWS Lambda Application单应用多函数体积耦合问题

你可以直接在同一个AWS Lambda Application内实现多个函数的部署包资源隔离,无需为每个函数单独创建应用。

你当前遇到的部署包体积绑定问题,是因为两个函数的CodeUri参数都配置为了项目根目录./,SAM在打包时会把整个项目目录作为两个函数的部署包,自然会出现体积互相绑定的情况。

解决步骤

  1. 拆分项目目录结构,将不同函数的代码、私有依赖放到独立的子目录中,参考结构如下:
项目根目录
├── template.yml
├── common/ # 存放多函数共用的工具代码、依赖(后续可抽为Lambda Layer)
├── router/
│   ├── package.json # 仅存放router函数需要的私有依赖
│   └── router.js # router函数入口代码
└── slash-commands/
    └── help/
        ├── package.json # 仅存放help命令需要的私有依赖
        └── help.js # help命令函数入口代码
  1. 修改template.yml中每个函数的CodeUri配置,指向对应函数的独立目录,调整Handler路径适配新的目录结构,参考配置如下:
Resources:
  router:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: team-up-application-router
      CodeUri: ./router/
      Handler: router.routerHandler
      Runtime: nodejs14.x
      MemorySize: 128
      Timeout: 60
      Description: 校验请求并路由到对应的斜杠命令Lambda
      Policies:
        - Statement:
            - Sid: LambdaAllowLambda
              Effect: Allow
              Action:
                - lambda:InvokeFunction
                - lambda:InvokeAsync
              Resource: 'arn:aws:lambda:us-east-2:xxxxxxxxxx:function:team-up-application-slash-command-help'
        - AWSLambdaBasicExecutionRole
      Events:
        HttpPost:
          Type: Api
          Properties:
            Path: '/interaction-endpoint-url'
            Method: post

  helpSlashCommand:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: team-up-application-slash-command-help
      CodeUri: ./slash-commands/help/
      Handler: help.slashCommand
      Runtime: nodejs14.x
      MemorySize: 128
      Timeout: 60
      Description: 处理help斜杠命令
      Policies:
        - AWSLambdaBasicExecutionRole
  1. (可选优化)如果有多个函数共用的依赖,可以将公共依赖抽为Lambda Layer,所有函数都绑定该层即可,能够进一步压缩每个函数的部署包体积。

调整完成后重新部署,SAM会为每个函数单独打包对应CodeUri目录下的内容,两个函数的部署包完全隔离,不会互相影响体积,同时还能保留在同一个应用内统一管理、部署的便利性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:03