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

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

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

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

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

53 号公路、53 号公路 Resolver 和模板 AWS CloudFormation

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

Route 53 支持在中创建以下资源类型 AWS 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 资源类型参考

Route 53 Resolver 支持在中 AWS 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 模板示例),请参阅 AWS CloudFormation 用户指南中的 Amazon Route 53 Resolver 资源类型参考

53 号公路的最佳实践和 AWS CloudFormation

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

了解最终一致性

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

重要

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

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

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

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

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

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

DNS 记录的顺序和逻辑 IDs

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

警告

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

DNS 记录管理的最佳实践:

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

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

  • AWS::Route53::RecordSetGroup对@@ 相关记录进行分组-考虑使用一起管理相关记录。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的AWS::Route53::RecordSet群组

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

处理回滚失败

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

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

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

  3. 恢复 DNS 后,更新您的 AWS CloudFormation 模板以匹配当前状态

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

要防止回滚失败,请执行以下操作:

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

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

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

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

了解更多关于 AWS CloudFormation

要了解更多信息 AWS CloudFormation,请参阅以下资源: