Я пытаюсь выполнить настройку контейнера aws с помощью terraform, которая направляет трафик c от моего ALB к целевым группам на основе указанных портов c с использованием параметра terraforms for_each. У меня есть настройка for_each, которая создает правила слушателя, которые я ожидаю, основываясь на моей переменной
variable "tenant_data" {
type = "map"
default = {
tenant1 = {
port = 32768
listener_priority = 986
tenantName = "tenant1"
}
tenant2 = {
port = 32769
listener_priority = 987
tenantName = "tenant2"
}
tenant3 = {
port = 32770
listener_priority = 988
tenantName = "tenant3"
}
}
}
Я не уверен, возможно ли заставить ресурс for_each использовать уникальный target_group_arn
в слушателе Правило, которое будет создано аналогичной настройкой for_each целевой группы, которую я использую. Я также не уверен, является ли это лучшим способом для достижения этой цели. Я мог бы создать каждый ресурс, но в итоге я посмотрю около 30 отдельных слушателей и целевых групп, так что я вижу, могу ли я найти способ использовать одну переменную, которая обрабатывает создание ресурса.
resource "aws_alb_listener_rule" "java_dev" {
for_each = var.tenant_data
listener_arn = data.terraform_remote_state.alb.outputs.alb_https_listener_arn
priority = each.value.listener_priority
action {
type = "forward"
target_group_arn = each.value.target_group_arn - what I'm trying to set
}
condition {
field = "host-header"
values = ["${each.value.tenantName}.my-site.com"]
}
condition {
field = "path-pattern"
values = ["/some-value/*"]
}
}
Изначально я думал, что могу попробовать использовать выходные значения из целевой группы и добавить их в свои переменные, но это кажется невозможным. Кроме того, я все еще пытаюсь придумать, как это могло бы работать.
Я потратил полдня на поиски работы, но не нашел ничего полезного. Если у кого-то есть какие-либо ресурсы или идеи, они будут очень полезны.
Редактировать: без for_each каждый слушатель и цель будут выглядеть так:
resource "aws_alb_listener_rule" "alpha3" {
listener_arn = listener_arn
priority = 987
action {
type = "forward"
target_group_arn = aws_alb_target_group.group.arn
}
condition {
field = "host-header"
values = ["one.my-site.com"]
}
condition {
field = "path-pattern"
values = ["/path/*"]
}
}
# Target Group
resource "aws_alb_target_group" "group" {
name = "ct-tgt-grp"
port = 32769
protocol = "HTTP"
vpc_id = vpc_id
target_type = "instance"
health_check {
interval = 30
port = 5000
protocol = "HTTP"
timeout = 10
healthy_threshold = 3
unhealthy_threshold = 5
path = "/health"
matcher = 200
}
}