【发布时间】:2023-03-24 10:50:01
【问题描述】:
有没有办法从另一个资源部分的 for_each 中选择特定值?
通过以下内容,我可以毫无问题地创建多个目标组。
resource "aws_lb_target_group" "target_group" {
for_each = var.target_group
name = format("%s%s-%s","TG-",var.name, each.value.incoming_port)
port = each.value.incoming_port
protocol = each.value.incoming_protocol
proxy_protocol_v2 = false
vpc_id = data.aws_vpc.vpc.id
target_type = "instance"
}
这里我的要求是只创建一个带有转发的监听器。所以我想选择 1 个目标组 arn(可以是第一个或任何其他)来创建下面的侦听器资源。使用 for_each 我可以使用所有 target_group 开始一个循环,但这不是必需的。用不同的方法尝试了很多次,但还没有成功。
resource "aws_lb_listener" "forward_443" {
#for_each = aws_lb_target_group.target_group
default_action {
target_group_arn = aws_lb_target_group.target_group[each.value].id == "TG-EX-DEV-7776" ? aws_lb_target_group.target_group[each.value].arn : ""
#target_group_arn = each.value.port == 7776 ? each.value.arn : ""
#target_group_arn = element(aws_lb_target_group.target_group[each.key].arn, count.index)
#target_group_arn = local.value
type = "forward"
}
load_balancer_arn = aws_lb.lb.arn
port = 443
protocol = "HTTPS"
ssl_policy = "ELBSecurityPolicy-FS-1-2-Res-2020-10"
certificate_arn = aws_acm_certificate.cert.arn
}
简单来说,我想创建 3 个 target_group 并将一个转发规则附加到其中一个。 terraform 不应该寻找其他 target_group 的
【问题讨论】:
-
"用不同的方法尝试了很多次,但还没有成功" - 这是什么意思?你到底尝试了什么?你得到什么错误?
-
虽然在没有 [each.key] 的情况下尝试过,但它要求使用它,但在使用时,它说,我不能在 default_action 子部分中使用它
-
您能否在更新后的问题中提供准确的错误消息。
-
简单来说,我只想从使用“aws_lb_target_group”创建的资源列表中获取一个值
-
target_group_arn = element(concat(aws_lb_target_group.target_group.arn.*, list("")), 0)你能试试吗?同时删除aws_lb_listener的for_each。
标签: amazon-web-services terraform terraform-provider-aws