Την περασμένη εβδομάδα, έγραψα ένα infrastructure as a code μέσω Terraform. Στην περίπτωσή μου, χρειάζεται να προωθήσω την κίνηση από τη δημόσια διεπαφή του AWS Application Load Balancer σε δύο διαφορετικά target groups. Η hashicorp language (HCL) δεν είναι δύσκολη γλώσσα, αλλά το έγγραφο λείπει πολλά θέματα και επίσης υπάρχουν κάποια σημεία στο terraform που είναι ατεκμηρίωτα.

Το έψαξα στο Google πριν βεβαιωθώ, αλλά είδα ότι υπάρχουν πολλές ερωτήσεις και issues σχετικά με το θέμα "Use more than one target group on AWS with terraform".

Διάβασα τις προτεινόμενες λύσεις αλλά δεν με βοήθησαν. Μετά από αυτό, αποφάσισα να χρησιμοποιήσω το "aws_lb_listener" ως resource. Τελικά, βρήκα μια λύση για την περίπτωσή μου μόνος μου. Μπορείς να δεις λεπτομέρειες παρακάτω:

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


Ελπίζω αυτό το κόλπο να σου είναι χρήσιμο.

Επεξεργασία στις 28 Ιουνίου 2022: Χρησιμοποίησα αυτό το block κώδικα στο https://github.com/flightlesstux/antmedia/tree/master/aws-cluster Μπορείς να ελέγξεις και να κατανοήσεις πώς λειτουργεί...