使用 cloudformation-validate 验证模板
该开源 cloudformation-validate 项目
该工具包括所需的规则和 CloudFormation 资源定义,因此安装后无需网络访问或 Amazon 凭证即可运行。
选择验证方法
-
命令行:运行
cfn-validate以从终端或自动构建检查一个模板或目录中的每个模板。 -
库:向 Rust、Node.js、Python、Go 或 JVM 应用程序添加验证器,然后在代码中处理结果。
-
Amazon CDK:在 CDK 合成模板后自动验证模板。
-
自定义规则:添加以 CEL、Rego 或 Guard 规则语言编写的检查。有关支持的规则格式和示例,请参阅 GitHub 上的 Custom Rules Reference
。有关 Guard 规则语法,请参阅本指南中的使用 Guard 验证模板。
安装命令行工具
在 GitHub 上打开最新的 cfn-validate 版本cfn-validate 文件。按照 GitHub 上的安装指南cfn-validate,将其添加到您的 PATH,然后验证下载的文件。
运行验证
该命令使用以下语法:
cfn-validateTEMPLATE_OR_DIRECTORY[OPTIONS]
检查一个模板:
cfn-validate template.yaml
传递一个目录,以递归方式检查每个 .yaml、.yml 和 .json 文件:
cfn-validate ./templates/
该命令将结构化的 JSON 验证报告写入标准输出。使用 --format standard 可获得精简输出,使用 --format detailed 可获得默认详细报告。
该命令在未发现错误或致命诊断时会返回 0,在发现错误或致命诊断时会返回 1,在出现使用或初始化错误(例如无效选项或文件不存在)时会返回 2。
有关所有引擎、筛选条件、输出格式和参数,请参阅 GitHub 上的 cfn-validate CLI 参考
添加自定义规则
使用 --rule-source 加载自定义 Rego 或 CEL 规则文件。使用 --guard-rule-source 加载 Guard 规则文件或目录。您可以重复任一选项以加载多个规则源:
cfn-validate template.yaml --rule-source ./rules/my-rule.rego cfn-validate template.yaml --guard-rule-source ./guard-rules/
有关规则格式和示例,请参阅 GitHub 上的 Custom Rules Reference
嵌入验证库
安装适用于所用编程语言的已发布程序包,以便从您的应用程序运行相同的离线检查。创建一次验证引擎,将其重复用于多个模板,然后处理针对每个模板返回的结构化诊断。您还可以通过库 API 配置自定义 CEL、Rego 或 Guard 规则。
| 语言 | 发布的程序包 | API 和示例 |
|---|---|---|
| Rust | crates.io 上的 cloudformation-validate |
Rust API 和示例 |
| Node.js | npm 上的 @aws/cloudformation-validate |
Node.js API 和示例 |
| Python | PyPI 上的 cloudformation-validate |
Python API 和示例 |
| Go | CloudFormation Validate Go 模块 |
Go API 和示例 |
| JVM(Java 或 Kotlin) | Maven Central 上的 software.amazon.cloudformation:cloudformation-validate |
JVM API 和示例 |
有关安装说明和支持的平台,请参阅语言绑定安装指南
如需查看各种语言的完整示例以及各 API 指南的链接,请参阅 GitHub 上项目文档中的作为库嵌入
将 与 结合使用Amazon CDK
如果您使用 Amazon CDK,则无需单独安装验证器。Amazon CDK 构造库包含一个默认 CloudFormationValidatePlugin,其会在合成 CloudFormation 模板后自动运行相同的检查。
cdk synth
CDK 会在其验证结果中报告可能的部署失败和最佳实践调查发现。当您想要添加自定义 Rego 或 Guard 规则时,可以显式配置 CloudFormationValidatePlugin。
有关插件配置、确认和验证报告,请参阅《Amazon CDK API 参考》中的 Template and Policy Validation。
了解验证范围
有关本地验证的限制以及部署前需采取的步骤,请参阅了解验证范围。