如何使用预定义的 NS 创建 route53 区域,或更新注册域的 NS?

Posted

技术标签:

【中文标题】如何使用预定义的 NS 创建 route53 区域,或更新注册域的 NS?【英文标题】:How to create route53 zone with predefined NS, or update NS of a registered domain? 【发布时间】:2019-09-28 14:19:54 【问题描述】:

我在 Route 53 上注册了一个域。该域指向旧 Route53 路由的一些名称服务器。我现在正在构建我的 Terraform 脚本来创建一个新的 Route53 区域。创建时是否可以设置名称服务器?我尝试了以下方法,但没有奏效:

resource "aws_route53_record" "dev-ns" 
  zone_id = "$aws_route53_zone.main.zone_id"
  name    = "dev.example.com"
  type    = "NS"
  ttl     = "30"

  records = [
    "ns1.aws",
    "ns2.aws",
    "ns3.aws",
    "ns4.aws",
  ]

我可以想象这是不可能的,因为 NS 似乎是随机分配的。如果确实如此,是否有 Terraform 命令来更改我注册域的 NS?我在 Github 上找到了这个帖子,所以我认为没有任何 Terraform 命令可以解决这个问题:https://github.com/terraform-providers/terraform-provider-aws/issues/88

还有其他选择吗?

【问题讨论】:

【参考方案1】:

您可以通过委托集https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-concepts.html#route-53-concepts-reusable-delegation-set转义动态ns记录

默认情况下,Route 53 将随机选择的名称服务器分配给每个新的托管区域。为了更轻松地将大量域的 DNS 服务迁移到 Route 53,您可以创建可重用委托集,然后将可重用委托集与新托管区域相关联。

resource "aws_route53_delegation_set" "main" 
  reference_name = "DynDNS"


resource "aws_route53_zone" "primary" 
  name              = "hashicorp.com"
  delegation_set_id = "$aws_route53_delegation_set.main.id"


resource "aws_route53_zone" "secondary" 
  name              = "terraform.io"
  delegation_set_id = "$aws_route53_delegation_set.main.id"

来自https://www.terraform.io/docs/providers/aws/r/route53_delegation_set.html的示例

【讨论】:

这会更新我注册域上的名称服务器吗?问题不在于我的区域设置,这很好用。目前我需要在注册域页面上手动更新 NS。我正在寻找一种解决方法,以便可以使用 Terraform 设置整个环境。 不,这不会让你这样做。不幸的是,在注册域下同步名称服务器”仍然是一个手动过程。这是功能请求github.com/terraform-providers/terraform-provider-aws/issues/88【参考方案2】:

在您的情况下,您最好将现有的 Route53 区域 importing 放入您的状态文件中,以便 Terraform 可以开始管理它,而不是创建一个使用相同名称服务器的新区域。

您可以使用以下命令import the zone:

terraform import aws_route53_zone.myzone Z1D633PJN98FT9

其中import aws_route53_zone.myzone 指资源名称,Z1D633PJN98FT9 指区域 ID。

【讨论】:

但它还不是一个区域,对吧?我说的是注册域名。我认为需要发生的是将注册域的名称服务器更新为区域中定义的名称。 当您注册域时,它通常会询问您是否要同时为其创建一个区域。如果你这样做了,那么你已经有了一个区域,所以最简单的方法就是导入它。 这是有道理的,在接受答案之前再问一个问题...如何将其放入 Terrafrom 文件中?我需要输入完全相同的句子吗? 什么意思? terraform import 行?这是将资源导入您所在州的一次性命令。如果这对您来说是新的,您应该阅读有关导入状态的链接文档。 是的,多亏了您的指导,它才能工作。谢谢!

以上是关于如何使用预定义的 NS 创建 route53 区域,或更新注册域的 NS?的主要内容,如果未能解决你的问题,请参考以下文章

route53 裸域未到达亚马逊弹性负载均衡器

Amazon Route 53 别名记录/区域文件不起作用 - 外部域注册商

我可以在不同的托管区域中拥有一个 route53 子域吗?

Amazon Web服务Route 53忽略域名

AWS Route 53 别名记录导致 301

Route53 映射到区域自定义域不起作用