

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

# CloudFormation 摄取指南、最佳实践和限制
<a name="cfn-author-templates"></a>

AMS 需要处理您的 CloudFormation 模板，需要遵守一些准则和限制。

## 指南
<a name="cfn-ingest-tips"></a>

要减少执行载 CloudFormation 入时 CloudFormation 出现的错误，请遵循以下准则：
+ **不要在模板中嵌入凭据或其他敏感信息- CloudFormation 模板**在 CloudFormation 控制台中可见，因此您不想在模板中嵌入凭据或敏感数据。模板不能包含敏感信息。只有当您使用 AWS Secrets Manager 作为值时，才允许使用以下资源：
  + `AWS::RDS::DBInstance` - [MasterUserPassword,TdeCredentialPassword]
  + `AWS::RDS::DBCluster` - [MasterUserPassword]
  + `AWS::ElastiCache::ReplicationGroup` - [AuthToken]
**注意**  
有关在资源属性中使用 S AWS ecrets Manager 密钥的信息，请参阅[如何使用 AWS CloudFormation 模板创建和检索在 Secrets Manager 中管理的 AWS 密钥](https://aws.amazon.com/blogs/security/how-to-create-and-retrieve-secrets-managed-in-aws-secrets-manager-using-aws-cloudformation-template/)和[使用动态引用指定模板值](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html)。
+ **使用 Amazon RDS 快照创建 RDS 数据库实例** — 这样您就不必提供 MasterUserPassword。
+ 如果您提交的模板包含 IAM 实例配置文件，则必须以 “客户” 为前缀。例如，使用名为 “example-instance-profile” 的实例配置文件会导致失败。相反，请使用名为 “customer-example-instance-profile” 的实例配置文件。
+ **请勿在 `AWS::EC2::Instance`-[UserData] 中包含任何敏感数据**。 UserData 不应包含密码、API 密钥或任何其他敏感数据。此类数据可以加密并存储在 S3 存储桶中，然后使用下载到实例上 UserData。
+ **支持使用 CloudFormation 模板创建 IAM 策略有一些限制** — IAM 策略必须经过 AMS 的审核和批准 SecOps。目前，我们仅支持使用包含预先批准权限的内联策略部署 IAM 角色。在其他情况下，无法使用 CloudFormation 模板创建 IAM 策略，因为这会覆盖 AMS SecOps 流程。
+ ** KeyPairs 不支持 SSH** — Amazon EC2 实例必须通过 AMS 访问管理系统进行访问。AMS RFC 流程会对您进行身份验证。您不能在 CloudFormation 模板中包含 SSH 密钥对，因为您无权创建 SSH 密钥对和覆盖 AMS 访问管理模型。
+ **安全组的入口规则受到限制** — 您不能将源 CIDR 范围设置为 0.0.0.0/0，也不能将可公开路由的地址空间设置为 80 或 443，TCP 端口不是 80 或 443。
+ **编写 CloudFormation 资源模板时请遵循 CloudFormation 指导方针** — 参阅资源的《*AWS CloudFormation 用户指南》*，确保为该资源使用正确的数据 type/property 名称。例如， AWS::EC2::Instance 资源中 SecurityGroupIds 属性的数据类型是 “字符串值列表”，因此 ["sg-aaaaaaaa"] 没问题（带方括号），但是 “sg-aaaaaaaa” 不是（不带方括号）。

  有关更多信息，请参阅 [AWS 资源和属性类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)。
+ 将@@ **您的自定义 CloudFormation 模板配置为使用 AMS CloudFormation 收录 CT 中定义的参数** — 当您将 CloudFormation 模板配置为使用 AMS 收录 C CloudFormation T 中定义的参数时，您可以使用 “管理 \$1 自定义堆栈 \$1 来自模板的堆栈 \$1 来自 CloudFormation 模板的堆栈 \$1 更新 CT” (ct-361tlo1k7339x) 在 CT 输入中使用更改的参数值来重复使用 CloudFormation 模板来创建类似的堆栈。有关示例，请参阅[CloudFormation 摄取示例：定义资源](cfn-ingest-ex-define-resource.md)。
+ **带有预签名 URL 的 Amazon S3 存储桶终端节点不能过期** — 如果您使用带有预签名 URL 的 Amazon S3 存储桶终端节点，请确认预签名的 Amazon S3 URL 未过期。使用已过期的预签名 Amazon S3 存储桶 URL 提交的提 CloudFormation 取 RFC 被拒绝。
+ **等待条件需要信号逻辑**-等待条件用于协调堆栈资源的创建与堆栈创建外部的配置操作。如果您在模板中使用 CloudFormation Wait Condition 资源，则等待成功信号，如果未发出成功信号的数量，则会将堆栈创建标记为失败。如果您使用等待条件资源，则需要有信号的逻辑。有关更多信息，请参阅在[模板中创建等待条件](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html)。