Я пытаюсь понять, как читать из дополнительных значений в Terraform, используя for / for_each, используя Terraform 0.12.26
dns.tfvars
mx = {
"mywebsite.org." = {
ttl = "3600"
records = [
"home.mywebsite.org.",
"faq.mywebsite.org."
]
}
"myotherwebsite.org." = {
ttl = "3600"
records = [
"home.myotherwebsite.org."
]
}
}
variables.tf
variable "mx" {
type = map(object({
ttl = string
records = set(string)
}))
}
mx.tf
locals {
mx_records = flatten([
for mx_key, mx in var.mx : [
for record in mx.records : {
mx_key = mx_key
record = record
ttl = mx.ttl
}]
])
}
resource "aws_route53_record" "mx_records" {
for_each = { for mx in local.mx_records : mx.mx_key => mx... }
zone_id = aws_route53_zone.zone.zone_id
name = each.key
type = "MX"
ttl = each.value.ttl
records = [
each.value.record
]
}
В mx.tf я могу закомментировать второе значение, faq .mywebsite.org, и код работает отлично. Я не могу понять, как настроить мой для l oop и для каждого оператора, чтобы получить его на «l oop» через второе значение. Первая полученная мной ошибка указана ниже:
Error: Duplicate object key
on mx.tf line 13, in resource "aws_route53_record" "mx_records":
13: for_each = { for mx in local.mx_records : mx.mx_key => mx }
|----------------
| mx.mx_key is "mywebsite.org."
Two different items produced the key "mywebsite.org." in this 'for'
expression. If duplicates are expected, use the ellipsis (...) after the value
expression to enable grouping by key.
Насколько я понимаю, у меня нет двух повторяющихся значений, помогающих формировать ключ, поэтому мне не нужно использовать многоточие, но я попытался использовать многоточие в любом случае, чтобы увидеть, будет ли это применяться должным образом. После добавления многоточия после выражения значения я получил следующую ошибку:
Error: Unsupported attribute
on mx.tf line 20, in resource "aws_route53_record" "mx_records":
20: each.value.record
|----------------
| each.value is tuple with 2 elements
This value does not have any attributes.
Мы будем благодарны за любые советы по этому вопросу.
ОБНОВЛЕНИЕ
Error: [ERR]: Error building changeset: InvalidChangeBatch: [Tried to create resource record set [name='mywebsiteorg.', type='MX'] but it already exists]
status code: 400, request id: dadd6490-efac-47ac-be5d-ab8dad0f4a6c
Он пытается создать запись, но она уже создана из-за первой записи в списке.