![](/img/trans.png)
[英]"no matching Route53Zone found": Terraform's Route53 data source is not recognizing the hosted zone name
[英]Cross-account subdomain/hosted zone delegation in Route 53 with Terraform
我有两个环境和两个 AWS 账户:dev 和 prod。 因此,我有两个托管区域:
为了成功地将流量路由到我的 dev.example.com 子域,我需要使用我的 TLD 托管区域中的名称服务器记录委托给我的顶级域 (TLD)。 例如,
dev.example.com NS Simple [ns-1960.awsdns-22.co.uk. ns-188.awsdns-20.com. ns-208.awsdns-37.net. ns-1089.awsdns-01.org.]
在 Terraform 代码中,我会这样定义两个托管区域:
resource "aws_route53_zone" "top_level_domain" {
count = var.env == "prod" ? 1 : 0
name = "example.com"
tags = {
name = "Hosted Zone for top-level domain in production"
env = var.env
}
}
resource "aws_route53_zone" "subdomain" {
count = var.env == "prod" ? 0 : 1
name = "dev.example.com"
tags = {
name = "Hosted Zone for ${var.env} environment"
env = var.env
}
}
为了让一切都编码化,我希望能够在 Terraform 配置中定义我的委托记录。 例如,
resource "aws_route53_record" "subdomain_delegation" {
count = var.env == "prod" ? 1 : 0
zone_id = aws_route53_zone.top_level_domain.zone_id
name = "dev.example.com"
type = "NS"
ttl = 300
records = [
aws_route53_zone.subdomain.name_servers
]
}
问题在于aws_route53_zone.subdomain
资源不存在于我的生产环境的 Terraform 状态中(因此aws_route53_zone.subdomain.name_servers
)。
有没有一种优雅的方法来解决这个问题? 或者,如果选择使用 AWS 账户进行物理环境分离,这只是生活中的一个事实吗?
我的 Terraform 配置的文件夹结构大致类似于:
dns/ (Terraform module)
dev/ (makes use of module)
prod/ (makes use of module)
我目前使用的方法是有两个 providers 。
我有一个主 IAM 用户,可以在子账户中担任角色。
这样 - 在一个 terraform 脚本中 - 我可以将一些操作定位到根帐户别名,然后其他操作可以定位到子帐户别名。
因此,这允许在一个 Terraform 模块内的多个帐户之间共享一些状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.