如何使用Terraform直接更新AWS Route53已注册域名的Nameservers?
解决方案
完全可以不借助外部脚本或provisioner实现需求,Terraform AWS Provider提供了原生资源aws_route53domains_registered_domain,用于管理在AWS Route53域名服务中注册的域名的基础配置,底层直接调用UpdateDomainNameservers接口更新域名的NS记录。
配置示例
你可以直接在现有配置基础上添加该资源,关联已创建的Route53托管区的名称服务器即可:
resource "aws_route53_zone" "redrebelgames" { name = "redrebelgames.com" } resource "aws_route53domains_registered_domain" "redrebelgames" { domain_name = "redrebelgames.com" # 直接引用托管区返回的名称服务器,动态生成配置适配不同数量的返回结果 dynamic "name_server" { for_each = aws_route53_zone.redrebelgames.nameservers content { name = name_server.value } } # 可选配置,不填则保留域名原有配置 auto_renew = true registrant_privacy = true }
注意事项
- 该资源仅适用于在AWS注册的域名,如果你的域名是从第三方注册商购买的,需要使用对应注册商的Terraform Provider或到注册商控制台手动修改NS配置。
- 如果该域名已经在你的AWS账号下存在,需要先执行导入命令将资源纳入Terraform状态管理,避免异常操作:
terraform import aws_route53domains_registered_domain.redrebelgames redrebelgames.com - NS配置更新后需要等待全球DNS节点同步,通常生效时间为几小时到48小时不等。
内容的提问来源于stack exchange,提问作者Ryan Glenn
相关产品推荐
相关产品推荐

