首页 > 解决方案 > aws_alb_listener 的 Terraform 如何在 type="forward" 的默认操作中添加多个 target_group_arn

问题描述

我的方法:我必须创建一个 "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}/*"]
        }
    }
} 

我还提到了 Listener 规则。

使用 terraform apply 命令显示错误,如下所示:

对于“forward”类型的操作,您必须指定“forward”块或“target_group_arn”

要解决此错误需要进行哪些更改?

标签: terraformterraform-provider-awsinfrastructure-as-code

解决方案


我认为您可以使用动态块来实现这一点。例如:

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"]
                }
            }
        }
    }
}

以上仅为示例,可能仍需要进行一些调整才能使其按预期工作。


推荐阅读