

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 模板验证
<a name="cfn-ingest-validate"></a>

您可以先对 CloudFormation 模板进行自我验证，然后再将其提交给 AMS。

提交给 AMS CloudFormation ingest 的模板经过验证，以确保可以安全地部署在 AMS 账户中。验证过程会检查以下内容：
+ **支持的资源**-仅使用 AMS CloudFormation 摄取支持的资源。有关更多信息，请参阅 [支持的资源](cfn-ingest-supp-services.md)。
+ **支持 AMIs ** — 模板中的 AMI 是 AMS 支持的 AMI。有关 AMS 的信息 AMIs，请参阅[AMS Amazon 机器映像 (AMIs)](ams-amis.md)。
+ **AMS 共享服务子网** — 模板不尝试将资源启动到 AMS 共享服务子网。
+ **资源策略** — 没有过于宽松的资源策略，例如公开可读或可写的 S3 存储桶策略。AMS 不允许公开读取或可写入的 S3 存储桶。 AWS 账户

## 使用 CloudFormation Linter 进行验证
<a name="cfn-ingest-validate-linter"></a>

在将 CloudFormation 模板提交给 AMS 之前，您可以使用 CloudFormation Linter 工具对其进行自我验证。

 CloudFormation Linter 工具是验证 CloudFormation 模板的最佳方式，因为它可以验证 resource/property 名称、数据类型和函数。有关更多信息，请参阅 [aws-cfn-python-lint](https://github.com/aws-cloudformation/cfn-python-lint) cloudformation/。

前面显示的模板的 CloudFormation Linter 输出如下所示：

```
$ cfn-lint -t ./testtmpl.json
E3002 Invalid Property Resources/SNSTopic/Properties/Name
./testtmpl.json:6:9
```

为了协助 CloudFormation 模板的离线验证，AMS 为 CloudFormation Linter 工具开发了一套可插拔的自定义验证规则。它们位于 AMS 控制台的**开发者资源**页面上。

请按照以下步骤使用 CloudFormation 摄取前验证脚本：

1. 安装 CloudFormation Linter 工具。有关安装说明，请参阅 [aws-cloudformation/cfn-lint。](https://github.com/aws-cloudformation/cfn-python-lint)

1. 下载包含验证脚本的.zip 文件：

    [CFN Lint 自定义规则](https://github.com/awslabs/aws-managed-services/tree/main/cfn-lint-custom-rules)。

1. 将附加的规则解压缩到您选择的目录中。

1. 通过运行以下命令来验证您的 CloudFormation 模板：

   ```
   cfn-lint --template {{{TEMPLATE_FILE}}} --append-rules {{{DIRECTORY_WITH_CUSTOM_RULES}}}
   ```