使用 Amazon CloudFormation 创建 Amazon Route 53 和 Amazon Route 53 Resolver 资源 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon CloudFormation 创建 Amazon Route 53 和 Amazon Route 53 Resolver 资源

Amazon Route 53 和 Amazon Route 53 Resolver 均与 Amazon CloudFormation 集成,后者是一项服务,可帮助您对 Amazon 资源进行建模和设置,这样您只需花较少的时间来创建和管理资源与基础设施。您可以创建一个描述所需的全部 Amazon 资源的模板,Amazon CloudFormation 将为您预置和配置这些资源。

在您使用 Amazon CloudFormation 时,可重复使用您的模板来不断地重复设置您的 Route 53 和 Route 53 Resolver 资源。描述您的资源一次,然后在多个 Amazon Web Services 账户和区域中反复预置相同的资源。

Route 53、Route 53 Resolver 和 Amazon CloudFormation 模板

要为 Route 53、Route 53 Resolver 和相关服务预置和配置资源,您必须了解 Amazon CloudFormation 模板。模板是 JSON 或 YAML 格式的文本文件。这些模板可描述您要在 Amazon CloudFormation 堆栈中预置的资源。如果您不熟悉 JSON 或 YAML,可以在 Amazon CloudFormation Designer 的帮助下开始使用 Amazon CloudFormation 模板。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的什么是 Amazon CloudFormation Designer?

Route 53 支持在 Amazon CloudFormation 中创建以下资源类型:

  • AWS::Route53::DNSSEC

  • AWS::Route53::HealthCheck

  • AWS::Route53::HostedZone

  • AWS::Route53::KeySigningKey

  • AWS::Route53::RecordSet

  • AWS::Route53::RecordSetGroup

有关更多信息(包括 Route 53 资源的 JSON 和 YAML 模板示例),请参阅 Amazon CloudFormation 用户指南中的 Amazon Route 53 资源类型参考

Route 53 Resolver 支持在 Amazon 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

有关更多信息(包括 Route 53 Resolver 资源的 JSON 和 YAML 模板示例),请参阅 Amazon CloudFormation 用户指南中的 Amazon Route 53 Resolver 资源类型参考

Route 53 和 Amazon CloudFormation 的最佳实践

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

了解最终一致性

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

重要

当 Amazon CloudFormation 尝试回滚 DNS 记录更改时,由于 Route 53 采用最终一致性模型,回滚可能会失败。如果 Amazon CloudFormation 尝试重新创建最近删除但由于最终一致性而似乎仍然存在的记录,则您可能会遇到 InvalidChangeBatch 错误,这些错误会使您的 DNS 处于断开状态。

为最大限度地减少与最终一致性有关的问题:

  • 谨慎计划更改 - 避免对相同的 DNS 记录进行快速连续更改

  • 首先在非生产环境中测试 - 在将其应用于生产环境之前,请务必在开发环境中测试 DNS 更改

  • 监控部署 - 在 DNS 相关部署期间密切关注 Amazon CloudFormation 堆栈事件。有关监控指南,请参阅 监控 Amazon Route 53

  • 妥善准备回滚程序 - 准备手动恢复程序,以防自动回滚失败

DNS 记录排序和逻辑 ID

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

警告

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

DNS 记录管理的最佳实践:

  • 使用显式逻辑 ID - 始终为 DNS 记录分配显式、有意义的逻辑 ID,而不是依赖数组索引。有关 Amazon CloudFormation 逻辑 ID 的更多信息,请参阅 Amazon CloudFormation 用户指南中的“资源”部分结构

  • 附加新记录 - 向现有列表添加新的 DNS 记录时,请将其附加到列表末尾,而不是将其插入列表中间

  • 分组相关记录 - 考虑使用 AWS::Route53::RecordSetGroup 将相关记录放在一起进行管理。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的 AWS::Route53::RecordSetGroup

  • 审核更改集 - 请务必在部署之前审核 Amazon CloudFormation 更改集,以识别意外的记录替换。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的使用更改集更新堆栈

处理回滚失败

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

从失败的 DNS 回滚中执行手动恢复
  1. 通过审核 Amazon CloudFormation 堆栈事件和 Route 53 托管区记录来识别失败的 DNS 记录

  2. 通过 Route 53 控制台或 API 手动创建或更新缺少的 CLI 记录。有关创建记录的信息,请参阅 使用记录

  3. 还原 DNS 后,更新您的 Amazon CloudFormation 模板以匹配当前状态

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

要防止回滚失败:

  • 避免在高流量期间进行可能触发 DNS 记录替换的更改

  • 实施运行状况检查和监控以快速检测 DNS 问题。有关运行状况检查的信息,请参阅 创建和更新运行状况检查

  • 考虑对关键 DNS 更改使用蓝绿部署策略。有关部署最佳实践的更多信息,请参阅 Amazon Route 53 的最佳实践

  • 记录手动 DNS 恢复的紧急程序

了解有关 Amazon CloudFormation 的更多信息

要了解有关 Amazon CloudFormation 的更多信息,请参阅以下资源: