La scorsa settimana, ho scritto un'infrastruttura come codice via Terraform. Nel mio caso, dovevo inoltrare il traffico dall'interfaccia pubblica dell'AWS Application Load Balancer a due diversi target group. Il linguaggio Hashicorp (HCL) non è un linguaggio difficile ma la documentazione è carente su molti argomenti e ci sono alcuni punti in terraform che non sono documentati.

Ho cercato su Google prima di assicurarmi ma ho visto che ci sono molte domande e problemi sull'argomento "Usare più di un target group su AWS con terraform".

Ho letto le soluzioni suggerite ma non mi hanno aiutato. Dopo di che, ho deciso di usare "aws_lb_listener" come risorsa. Alla fine, ho trovato una soluzione al mio caso per conto mio. Puoi vedere i dettagli qui sotto:

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

} }


Spero che questo trucco ti sia utile.

Modifica del 28 giugno 2022: Ho usato questo blocco di codice su https://github.com/flightlesstux/antmedia/tree/master/aws-cluster Puoi controllare e capire come funziona...