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

如何在Serverless CloudFormation YAML中抑制默认输出项?

如何禁用Serverless/CloudFormation的默认输出项

我刚好遇到过类似的问题,用serverless-stack-output插件的时候确实会被那些自动生成的默认输出烦到,这里有两个实用的解决办法:

方法1:利用serverless-stack-output插件的过滤功能(推荐)

这个插件本身就支持通过include或exclude来筛选要写入文件的输出项,完全不用额外装其他插件。

方式A:只保留你的自定义输出

在serverless.yml的custom配置里,用filter指定只包含你定义的输出项:

custom:
  output:
    file: outputs.json # 你的输出文件路径
    filter:
      - MyCustomDatabaseUrl # 你的自定义输出1
      - MyCustomS3BucketName # 你的自定义输出2

这样插件只会把你列出来的自定义输出写入文件,所有默认生成的项都会被忽略。

方式B:排除默认输出项

如果你不想一个个列出自定义项,也可以直接排除那些默认的输出:

custom:
  output:
    file: outputs.json
    exclude:
      - "*FunctionQualifiedArn" # 排除所有函数的QualifiedArn(支持通配符)
      - ServiceEndpoint # 排除API网关的端点输出
      - ServerlessDeploymentBucketName # 排除部署桶的名称输出

注:插件支持glob模式的通配符,所以*FunctionQualifiedArn可以匹配所有函数对应的默认输出项(比如MyApiFunctionQualifiedArn、MyWorkerFunctionQualifiedArn这类)。

方法2:从Serverless层面减少默认输出的生成

有些默认输出是Serverless自动为内置资源添加的,你可以通过配置关闭部分资源的自动输出:

  • 关闭API网关的默认端点输出:如果你的服务不需要API网关,或者不需要输出它的端点,可以在serverless.yml里添加:
    provider:
      apiGateway:
        disableDefaultEndpoint: true
    
    这样Serverless就不会生成ServiceEndpoint这个输出项了。
  • 关闭部署桶的输出:不过ServerlessDeploymentBucketName是Serverless部署必需的资源,没法直接禁用它的输出,但通过方法1的exclude可以轻松过滤掉它。

需要注意的是,Serverless的部分默认输出(比如函数的ARN)是CloudFormation层面自动生成的,没法完全禁止Serverless生成它们,但用方法1的过滤可以确保这些项不会出现在你的输出文件里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:19:13