"не найден соответствующий Route53Zone": источник данных Terraform Route53 не распознает имя размещенной зоны


Предположим, что у меня есть публичные размещенные имена зон example.com.. Я использую следующий фрагмент кода Terraform для динамического извлечения идентификатора размещенной зоны на основе имени согласноdocs .

data "aws_route53_zone" "main" {
  name = "example.com." # Notice the dot!!!
  private_zone = false
}

Во время terraform plan он приходит с этой ошибкой:

Error refreshing state: 1 error(s) occurred:

* data.aws_route53_zone.main: no matching Route53Zone found

Есть ли ошибка, о которой я должен сообщить, или я что-то упустил?

2 2

2 ответа:

aws_route53_zone источник данных перечислит все размещенные зоны в учетной записи, на просмотр которых у Terraform есть разрешения.

Если вы пытаетесь ссылаться на зону в другой учетной записи, то вы можете сделать это, создав роль/пользователя в учетной записи с зоной, которая имеет разрешения на список всех зон (route53:ListHostedZones*,route53:GetHostedZone*), а затем имея второй "поставщик", используемый для этого источника данных.

Таким образом, у вас может быть что-то вроде этого:

provider "aws" {
    # ... access keys etc/assume role block
}

# DNS account
provider "aws" {
    alias = "dns_zones"
    # ... access keys etc/assume role block
}

data "aws_route53_zone" "main" {
  provider = "aws.dns_zones"
  name = "example.com." # Notice the dot!!!
  private_zone = false
}

resource "aws_route53_record" "www" {
  zone_id = "${data.aws_route53_zone.main.zone_id}"
  name = "www.${data.aws_route53_zone.main.name}"
  ...
}

Использование zone_id вместо name сделало это за меня.

data "aws_route53_zone" "api2" {
  # name = "example.com."
  zone_id = "REPLACEWITHYOURID"
  vpc_id = "${var.vpc_id}"
}