首页 > 解决方案 > 如何解决找不到匹配的 Route53Zone?

问题描述

我正在为 terraform > 0.12 版本的 terraform AWS 认证管理器创建一个模块。我注意到当var.domain_name=["x.public.com","y.private.dev"]同时具有公共和私有域时,我收到一个错误no matching Route53Zone found

我确实手动运行aws route53 list-hosted-zones-by-name,我能够获得公共和私有区域 id,它也可以工作var.domain_name=["x.public.com"] or var.domain_name=["y.private.dev"],即只有全部公共或全部私有。

我不确定是什么问题?我尝试删除private_zone,也尝试使用private_zone = trimprefix(each.value,".") == "dev" ? "true" : "false",在这两种情况下都得到了同样的错误。

有人可以指出我错在哪里。谢谢!

代码:

resource "aws_acm_certificate" "certificate" {
  for_each                  = toset(var.domain_name)
  domain_name               = each.value
  subject_alternative_names = ["*.${each.value}"]
  validation_method         = "DNS"

  tags = {
    Name  = each.value
    owner = "foo"
  }

  lifecycle {
    create_before_destroy = true
  }
}

data "aws_route53_zone" "selected" {

  for_each     = toset(var.domain_name)
  name         = each.value
  private_zone = false
}

resource "aws_route53_record" "record" {
  for_each = toset(var.domain_name)
  zone_id = data.aws_route53_zone[each.key].selected.zone_id 
  name    = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_name
  type    = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_type
  ttl     = "300"
  records = [aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_value]
}


Error: no matching Route53Zone found

  on ../tf_module_acm/main.tf line 1, in data "aws_route53_zone" "selected":
   34: data "aws_route53_zone" "selected" {


Error: no matching Route53Zone found

  on ../tf_module_acm/main.tf line 1, in data "aws_route53_zone" "selected":
   34: data "aws_route53_zone" "selected" {

标签: amazon-web-servicesterraformamazon-route53

解决方案


推荐阅读