如何在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里添加:
这样Serverless就不会生成provider: apiGateway: disableDefaultEndpoint: trueServiceEndpoint这个输出项了。 - 关闭部署桶的输出:不过
ServerlessDeploymentBucketName是Serverless部署必需的资源,没法直接禁用它的输出,但通过方法1的exclude可以轻松过滤掉它。
需要注意的是,Serverless的部分默认输出(比如函数的ARN)是CloudFormation层面自动生成的,没法完全禁止Serverless生成它们,但用方法1的过滤可以确保这些项不会出现在你的输出文件里。
内容的提问来源于stack exchange,提问作者sigmaxf
相关产品推荐
相关产品推荐

