Semana passada, escrevi uma infraestrutura como codigo via Terraform. No meu caso, preciso encaminhar o trafego da interface publica do AWS Application Load Balancer para dois target groups diferentes. A linguagem hashicorp (HCL) nao e uma linguagem dificil, mas a documentacao esta faltando em muitos assuntos e tambem ha alguns pontos no terraform que nao estao documentados.

Pesquisei no Google antes para ter certeza, mas vi que ha muitas perguntas e issues sobre o assunto "Usar mais de um target group na AWS com terraform".

Li as solucoes sugeridas, mas elas nao me ajudam. Depois disso, decidi usar "aws_lb_listener" como recurso. Finalmente, encontrei uma solucao para o meu caso por conta propria. Voce pode ver os detalhes abaixo:

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

} }


Espero que este truque seja util para voce.

Edicao em 28 de junho de 2022: Usei este bloco de codigo em https://github.com/flightlesstux/antmedia/tree/master/aws-cluster Voce pode verificar e entender como funciona...