我的方法:我必须创建一个“aws_lb_listener”资源,在默认操作中我有 type = "forward"但我没有 target_group_arn 。我有多个 target_group_arn 值。
下面的代码片段显示了前端监听器,但 target_group_arn 应包含多个 arn 值。
resource "aws_alb_listener" "frontend-listener" {
load_balancer_arn = aws_alb.ss_alb.arn
port = "443" #"80"
protocol = "HTTPS"
depends_on = [aws_alb_target_group.aws_alb_target_group]
default_action {
#target_group_arn = aws_alb_target_group.aws_alb_target_group.arn
type = "forward"
}
}
aws_alb_target_group 资源显示正在创建多个目标组。
resource "aws_alb_target_group" "aws_alb_target_group" {
for_each = local.ebapp_name
name = "${each.value.name}-tg"
port = 80
protocol = "HTTP"
vpc_id = var.vpc_id
}
我查看了 terraform 文档,但找不到解决方案。 (https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener)
resource "aws_alb_listener_rule" "aws_alb_listener_rule"{
for_each = local.ebapp_name
listener_arn = aws_alb_listener.frontend-listener.arn
action {
type = "forward"
target_group_arn = aws_alb_target_group.aws_alb_target_group[each.value.name].arn
}
condition {
path_pattern {
values = ["/${each.value.name}/*"]
}
}
}
我还提到了监听器规则。
使用 terraform apply 命令显示错误,如下所示:
对于“forward”类型的操作,您必须指定“forward” block 或“target_group_arn”
需要进行哪些更改才能解决此错误?
最佳答案
我认为你可以使用 dynamic blocks 来实现这一点。例如:
resource "aws_alb_listener" "frontend-listener" {
load_balancer_arn = aws_alb.ss_alb.arn
port = "443" #"80"
protocol = "HTTPS"
depends_on = [aws_alb_target_group.aws_alb_target_group]
default_action {
type = "forward"
forward {
dynamic "target_group" {
for_each = aws_alb_target_group.aws_alb_target_group
content {
arn = target_group.value["arn"]
}
}
}
}
}
以上仅是示例,可能仍需要进行一些调整才能使其按预期工作。
关于Terraform for aws_alb_listener 如何在类型 ="forward"的默认操作中添加多个 target_group_arn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63918512/