本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 回滚中执行手动恢复
-
通过审核 Amazon CloudFormation 堆栈事件和 Route 53 托管区记录来识别失败的 DNS 记录
-
通过 Route 53 控制台或 API 手动创建或更新缺少的 CLI 记录。有关创建记录的信息,请参阅 使用记录。
-
还原 DNS 后,更新您的 Amazon CloudFormation 模板以匹配当前状态
-
部署更正后的模板以将 Amazon CloudFormation 恢复为与实际资源同步
要防止回滚失败:
-
避免在高流量期间进行可能触发 DNS 记录替换的更改
-
实施运行状况检查和监控以快速检测 DNS 问题。有关运行状况检查的信息,请参阅 创建和更新运行状况检查。
-
考虑对关键 DNS 更改使用蓝绿部署策略。有关部署最佳实践的更多信息,请参阅 Amazon Route 53 的最佳实践。
-
记录手动 DNS 恢复的紧急程序
了解有关 Amazon CloudFormation 的更多信息
要了解有关 Amazon CloudFormation 的更多信息,请参阅以下资源: