#amazon-web-services #terraform #amazon-route53
#amazon-веб-службы #terraform #amazon-route53
Вопрос:
Я создаю кучу правил распознавания маршрутов 53 в каждом регионе, и это отлично работает с циклом for_each:
resource "aws_route53_resolver_rule" "resolver-rule" {
for_each = var.resolver-rules
domain_name = each.value.domain-name
name = format("core-%s", each.value.domain-label)
rule_type = "FORWARD"
resolver_endpoint_id = aws_route53_resolver_endpoint.outbound-endpoint.id
target_ip {
ip = each.value.forwarder1
}
target_ip {
ip = each.value.forwarder2
}
tags = merge(var.tags, map("Name", format("core-%s-%s-%s", var.team_name, var.environment, each.value.domain-label)))
}
Мой var выглядит следующим образом:
variable "resolver-rules" {
description = "A map of parameters needed for each resolver rule"
type = map(object({
domain-name = string
domain-label = string
forwarder1 = string
forwarder2 = string
}))
}
resolver-rules = {
"resolver-rule1" = {
domain-name = "10.in-addr.arpa."
domain-label = "10-in-addr-arpa"
forwarder1 = "10.10.1.100"
forwarder2 = "10.10.2.100"
}
"resolver-rule2" = {
domain-name = "mycompany.com."
domain-label = "mycompany-com"
forwarder1 = "10.10.1.100"
forwarder2 = "10.10.2.100"
}
}
Теперь мне нужно связать эти правила с общим ресурсом (не публикуя здесь):
resource "aws_ram_resource_association" "rule-association" {
for_each = var.resolver-rules
resource_arn = aws_route53_resolver_rule.resolver-rule.arn
resource_share_arn = aws_ram_resource_share.rte53-resolver-share.arn
}
Вопрос: как мне изменить (перечислить) мою часть ассоциации ресурсов, чтобы каждая ассоциация создавалась для каждого правила, которое я определяю (это должна быть ассоциация 1 к 1). Я просто не могу обмозговать это 🙂
Ответ №1:
У вас aws_route53_resolver_rule.resolver-rule
будет карта с ключами от resolver-rule1
и resolver-rule2
.
Поэтому, чтобы получить доступ к нему arn
в вашем rule-association
, вы могли бы сделать следующее:
resource "aws_ram_resource_association" "rule-association" {
for_each = var.resolver-rules
resource_arn = aws_route53_resolver_rule.resolver-rule[each.key].arn
resource_share_arn = aws_ram_resource_share.rte53-resolver-share.arn
}
В вашем вопросе aws_ram_resource_share.rte53-resolver-share.arn
не показано, поэтому я не знаю, требуются ли вам какие-либо изменения в нем или нет.