

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

# 使用创建 Amazon Route 53 和 Route 53 VPC 解析器资源 AWS CloudFormation
<a name="creating-resources-with-cloudformation"></a>

Amazon Route 53 和 Route 53 VPC Resolver 与 AWS CloudFormation一项服务集成，该服务可帮助您对 AWS 资源进行建模和设置，从而减少创建和管理资源和基础设施所花费的时间。您可以创建一个描述所需所有 AWS 资源的模板，并为您预 CloudFormation 置和配置这些资源。

使用时 CloudFormation，您可以重复使用您的模板来一致且重复地设置 Route 53 和 VPC 解析器资源。只需描述一次您的资源，然后在多个 AWS 账户 区域中一遍又一遍地配置相同的资源。

## Route 53、VPC 解析器和模板 CloudFormation
<a name="working-with-templates"></a>

要为 Route 53、VPC 解析器和相关服务配置和配置资源，您必须了解[CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。模板是 JSON 或 YAML 格式的文本文件。这些模板描述了您要在 CloudFormation 堆栈中配置的资源。如果你不熟悉 JSON 或 YAML，可以使用 D CloudFormation esigner 来帮助你开始使用 CloudFormation 模板。有关更多信息，请参阅[什么是 CloudFormation 设计器？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer.html) 在《*AWS CloudFormation 用户指南》*中。

Route 53 支持在中创建以下资源类型 CloudFormation：
+ `AWS::Route53::DNSSEC`
+ `AWS::Route53::HealthCheck`
+ `AWS::Route53::HostedZone`
+ `AWS::Route53::KeySigningKey`
+ `AWS::Route53::RecordSet`
+ `AWS::Route53::RecordSetGroup`

 有关更多信息（包括 Route 53 资源的 JSON 和 YAML 模板示例），请参阅 *AWS CloudFormation 用户指南*中的 [Amazon Route 53 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53.html)。

VPC 解析器支持在中 CloudFormation创建以下资源类型：
+ `AWS::Route53Resolver::FirewallDomainList`
+ `AWS::Route53Resolver::FirewallDomainList`
+ `AWS::Route53Resolver::FirewallRuleGroupAssociation`
+ `AWS::Route53Resolver::ResolverDNSSECConfig`
+ `AWS::Route53Resolver::ResolverEndpoint`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfig`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation`
+ `AWS::Route53Resolver::ResolverRule`
+ `AWS::Route53Resolver::ResolverRuleAssociation`

 *有关更多信息，包括 VPC 解析器资源的 JSON 和 YAML 模板示例，请参阅用户指南中的 R [oute 53 VPC 解析器资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53Resolver.html)。AWS CloudFormation *

## 53 号公路的最佳实践和 CloudFormation
<a name="cloudformation-route53-best-practices"></a>

使用 CloudFormation 管理 Route 53 资源时，请遵循以下最佳实践，以避免常见问题并确保部署可靠。

### 了解最终一致性
<a name="cloudformation-route53-eventual-consistency"></a>

Route 53 使用最终一致的模型进行 DNS 更改。这可能会影响 CloudFormation 操作，尤其是在回滚和快速连续更改期间。

**重要**  
 CloudFormation 尝试回滚 DNS 记录更改时，由于 Route 53 的最终一致性模型，回滚可能会失败。如果 CloudFormation 尝试重新创建最近删除但由于最终一致性而似乎仍然存在的记录，则可能会遇到`InvalidChangeBatch`错误，使您的 DNS 处于损坏状态。

为最大限度地减少与最终一致性有关的问题：
+ **谨慎计划更改** - 避免对相同的 DNS 记录进行快速连续更改
+ **首先在非生产环境中测试** - 在将其应用于生产环境之前，请务必在开发环境中测试 DNS 更改
+ **监控部署**-在 DNS 相关部署期间密切关注 CloudFormation 堆栈事件。有关监控指南，请参阅 [监控 Amazon Route 53](monitoring-overview.md)。
+ **妥善准备回滚程序** - 准备手动恢复程序，以防自动回滚失败

### DNS 记录的顺序和逻辑 IDs
<a name="cloudformation-route53-record-ordering"></a>

在中创建多个 DNS 记录时 CloudFormation，请注意记录排序和逻辑 ID 分配。

**警告**  
如果您在 CloudFormation 模板中的数组或列表中定义 DNS 记录，则在列表中间插入新记录可能会导致 CloudFormation 将逻辑重新分配 IDs 给现有记录。这会触发记录替换，从而导致服务中断和回滚失败。

DNS 记录管理的最佳实践：
+ **使用显式逻辑 IDs**-始终为 DNS 记录分配显式、有意义的逻辑 IDs ，而不是依赖数组索引。有关 CloudFormation 逻辑的更多信息 IDs，请参阅《*AWS CloudFormation 用户指南》*[中的 “资源” 部分结构](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html)
+ **附加新记录** - 向现有列表添加新的 DNS 记录时，请将其附加到列表末尾，而不是将其插入列表中间
+ **分组相关记录** - 考虑使用 `AWS::Route53::RecordSetGroup` 将相关记录放在一起进行管理。有关更多信息，请参阅《*AWS CloudFormation 用户指南*》中的[AWS::Route53::RecordSet群组](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html)。
+ **审核更改集** - 请务必在部署之前审核 CloudFormation 更改集，以识别意外的记录替换。有关更多信息，请参阅 *AWS CloudFormation 用户指南*中的[使用更改集更新堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html)。

### 处理回滚失败
<a name="cloudformation-route53-rollback-failures"></a>

如果由于 DNS 相关问题导致 CloudFormation 回滚失败，则可能需要执行手动恢复。

**从失败的 DNS 回滚中执行手动恢复**

1. 通过查看 CloudFormation 堆栈事件和 Route 53 托管区域记录来识别失败的 DNS 记录

1. 通过 Route 53 控制台或 API 手动创建或更新缺少的 CLI 记录。有关创建记录的信息，请参阅 [使用记录](rrsets-working-with.md)。

1. 恢复 DNS 后，更新您的 CloudFormation 模板以匹配当前状态

1. 部署更正后的模板以 CloudFormation 恢复与实际资源的同步

要防止回滚失败：
+ 避免在高流量期间进行可能触发 DNS 记录替换的更改
+ 实施运行状况检查和监控以快速检测 DNS 问题。有关运行状况检查的信息，请参阅 [创建和更新运行状况检查](health-checks-creating.md)。
+ 考虑对关键 DNS 更改使用蓝绿部署策略。有关部署最佳实践的更多信息，请参阅 [Amazon Route 53 的最佳实践](best-practices.md)。
+ 记录手动 DNS 恢复的紧急程序

## 了解更多关于 CloudFormation
<a name="learn-more-cloudformation"></a>

要了解更多信息 CloudFormation，请参阅以下资源：
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [AWS CloudFormation 用户指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [CloudFormation API 引用](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html)
+ [AWS CloudFormation 命令行界面用户指南](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html)