Letzte Woche habe ich eine Infrastruktur als Code per Terraform geschrieben. In meinem Fall muss ich den Traffic von der offentlichen Schnittstelle des AWS Application Load Balancers an zwei verschiedene Target Groups weiterleiten. Die Hashicorp-Sprache (HCL) ist keine schwierige Sprache, aber der Dokumentation fehlen viele Themen und es gibt auch einige undokumentierte Punkte in Terraform.

Ich habe vorher gegoogelt, um sicherzugehen, aber ich habe gesehen, dass es viele Fragen und Issues zum Thema "Verwendung von mehr als einer Target Group auf AWS mit Terraform" gibt.

Ich habe die vorgeschlagenen Losungen gelesen, aber sie helfen mir nicht. Danach habe ich mich entschieden, "aws_lb_listener" als Ressource zu verwenden. Schliesslich habe ich selbst eine Losung fur meinen Fall gefunden. Du kannst die Details unten sehen:

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

} }


Ich hoffe, dieser Trick hilft dir.

Bearbeitung am 28. Juni 2022: Ich habe diesen Codeblock verwendet auf https://github.com/flightlesstux/antmedia/tree/master/aws-cluster Du kannst es uberprufen und verstehen, wie es funktioniert...