Last week, I wrote an infrastructure as a code via Terraform. In my case, I need to forward the traffic from AWS Application Load Balancer public interface to two different target groups. The hashicorp language (HCL) not a hard language but the document is missing a lot of subjects and also there are some points in terraform are undocumented.

I've Google it before the make sure but I've seen there is a lot of questions and issues about the "Use more than one target group on AWS with terraform" subject.

I read the suggested solutions but they do not help me. After that, I decided to use "aws_lb_listener" as a resource. Finally, I found a solution to my case for my own. You can see details below:

resource "aws_lb" "awsalb" {
  name                       = "my-aws-loadbalancer"
  internal                   = false
  load_balancer_type         = "application"
  security_groups            = [aws_security_group.lb.id]
  subnets                    = data.aws_subnet_ids.subnets.ids
  enable_deletion_protection = false

tags = { Name = “My AWS ALB Load Balancer” } }

resource “aws_lb_target_group” “origin” { name = “Origin-Group” port = 5080 protocol = “HTTP” vpc_id = data.aws_vpc.default.id

stickiness { type = “lb_cookie” } }

resource “aws_lb_target_group” “edge” { name = “Edge-Group” port = 5080 protocol = “HTTP” vpc_id = data.aws_vpc.default.id

stickiness { type = “lb_cookie” } }

resource “aws_lb_listener” “http” { load_balancer_arn = aws_lb.awsalb.arn port = “80” protocol = “HTTP”

default_action { type = “forward” forward { target_group { arn = aws_lb_target_group.origin.arn }

  target_group {
    arn = aws_lb_target_group.edge.arn
  }

  stickiness {
    enabled  = true
    duration = 28800
  }
}

} }


I hope, this trick is helpful to you.

Edit on June 28, 2022: I used this code block on https://github.com/flightlesstux/antmedia/tree/master/aws-cluster You can check and understand how's working...