Uczę się Terraform wymyślając pewne przypadki użycia i bardzo szybko odbiłem się od ściany, a sytuacja wydaje się typowa i nie dotyczy bezpośrednio Route 53 i Cloudflare.

Co chcę zrobić:

  1. utworzyć strefę w Route 53 dla subdomeny
  2. utworzyć rekordy NS po stronie Cloudflare

To co mam:

resource "aws_route53_zone" "main" {
  name = "aws.saalin.pl"
}

resource "cloudflare_record" "example" {
  for_each = aws_route53_zone.main.name_servers
  zone_id = "zoneId"
  name    = "aws"
  value   = each.value
  type    = "NS"
  ttl     = 3600
  depends_on = [
    aws_route53_zone.main
  ]
}

ale próba aplikacji kończy się błędem:

The "for_each" map includes keys derived from resource attributes that cannot be determined until apply, and so Terraform cannot determine the full set of keys that will identify the instances of this resource.

I faktycznie, wszystkie tutoriale używania for_each odnoszą się do statycznie zadeklarowanych tablic czy słowników. Jak w takim razie ogrywa się takie przypadki?