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

部署Serverless应用时如何排除特定Lambda函数?

如何在Serverless部署时排除特定Lambda函数

Serverless Framework本身没有提供直接的exclude参数来跳过特定Lambda函数部署,但可以通过以下几种方式实现需求:

方法1:自定义参数+条件配置

利用Serverless的内置条件语法,结合部署时传入的参数,动态控制函数是否被包含在部署中。

示例serverless.yml配置:

custom:
  # 接收部署时传入的排除函数列表,默认空字符串
  excludeFunctions: ${opt:exclude-functions, ''}

functions:
  commonFuncA:
    handler: handlers/commonFuncA.handler
    # 共用函数,始终部署

  devOnlyFunc:
    handler: handlers/devOnlyFunc.handler
    # 只有当排除列表不包含当前函数名时,才加载该函数的配置
    ${if:not(contains(self:custom.excludeFunctions, 'devOnlyFunc')):}
      timeout: 10
      memorySize: 256

  prodOnlyFunc:
    handler: handlers/prodOnlyFunc.handler
    ${if:not(contains(self:custom.excludeFunctions, 'prodOnlyFunc')):}
      timeout: 30
      memorySize: 512

部署时排除prodOnlyFunc:

sls deploy --exclude-functions "prodOnlyFunc"

如果要排除多个函数,用逗号分隔:

sls deploy --exclude-functions "prodOnlyFunc,anotherFunc"

方法2:使用serverless-plugin-select插件

这个插件可以按部署环境(stage)或自定义标签来筛选要部署的函数,配置更直观。

  1. 安装插件:
npm install serverless-plugin-select --save-dev
  1. 在serverless.yml中配置插件和函数的部署规则:
plugins:
  - serverless-plugin-select

functions:
  commonFuncA:
    handler: handlers/commonFuncA.handler
    # 该函数在dev和prod环境都部署
    select:
      - dev
      - prod

  devOnlyFunc:
    handler: handlers/devOnlyFunc.handler
    # 只在dev环境部署
    select:
      - dev

  prodOnlyFunc:
    handler: handlers/prodOnlyFunc.handler
    # 只在prod环境部署
    select:
      - prod

部署dev环境时,只会部署commonFuncA和devOnlyFunc:

sls deploy --stage dev

方法3:拆分配置文件

将共用函数和环境专属函数拆分到不同配置文件,通过extends字段复用基础配置,避免单个文件过于臃肿。

  • 创建serverless-shared.yml:存放所有环境共用的函数、provider配置等
service: my-service

provider:
  name: aws
  runtime: nodejs18.x
  # 其他共用provider配置...

functions:
  commonFuncA:
    handler: handlers/commonFuncA.handler
  • 创建serverless-dev.yml:引用共用配置,添加开发环境专属函数
extends: serverless-shared.yml

functions:
  devOnlyFunc:
    handler: handlers/devOnlyFunc.handler
    # 开发环境专属配置
  • 创建serverless-prod.yml:同理添加生产环境专属函数
extends: serverless-shared.yml

functions:
  prodOnlyFunc:
    handler: handlers/prodOnlyFunc.handler
    # 生产环境专属配置

部署开发环境时,指定对应配置文件:

sls deploy --config serverless-dev.yml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:37