我们如何"aws_alb_target_group.tenant[each.key].arn"在地形中声明输出值?


resource "aws_alb_target_group" "test" {
for_each = var.microservices
name        = "${each.key}-tg"
port        = each.value
protocol    = "HTTP"
vpc_id      = var.vpc_id
target_type = "ip"
health_check {
healthy_threshold   = "3"
interval            = "30"
protocol            = "HTTP"
matcher             = "200"
timeout             = "3"
path                = "/"
unhealthy_threshold = "2"
}
tags = {
Name        = "${each.key}-tg"
}
}

resource "aws_alb_listener" "test" {
for_each = var.microservices
load_balancer_arn = aws_lb.main.arn
port              = "80"
protocol          = "HTTP"
default_action {
target_group_arn = aws_alb_target_group.test[each.key].arn
type             = "forward"
}
}

我已经为多个微服务使用for_each创建了多个目标组,但在输出中,如何将这些目标组都学习?

output "new_target_group" {
value = aws_alb_target_group.main[each.key].arn
}

我想在我的输出中学习所有目标群体请帮助我。

您可以使用for表达式来遍历导出资源的对象,并构建一个包含所有目标组及其相关ARN:的映射

output "new_target_groups" {
value = { for target_group in aws_alb_target_group.main : target_group.name => target_group.arn }
}

结果将显示为:

new_target_groups = { "${each.key}-tg" = <target_group_arn> }

每个目标组具有一个键值对。

如果您的目标是获得一个包含所有ARN的列表,您可以使用values函数和splat运算符,例如:

output "new_target_group" {
value = values(aws_alb_target_group.test)[*].arn
}

最新更新