La semaine derniere, j'ai ecrit une infrastructure as code via Terraform. Dans mon cas, je dois transmettre le trafic de l'interface publique de l'Application Load Balancer AWS vers deux groupes cibles differents. Le langage Hashicorp (HCL) n'est pas un langage difficile mais la documentation manque de nombreux sujets et il y a aussi des points non documentes dans terraform.

J'ai cherche sur Google avant de m'assurer mais j'ai vu qu'il y a beaucoup de questions et de problemes sur le sujet "Utiliser plus d'un groupe cible sur AWS avec terraform".

J'ai lu les solutions suggerees mais elles ne m'ont pas aide. Apres cela, j'ai decide d'utiliser "aws_lb_listener" comme ressource. Finalement, j'ai trouve une solution a mon cas par moi-meme. Vous pouvez voir les details ci-dessous :

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

J'espere que cette astuce vous sera utile.

Edition du 28 juin 2022 : J'ai utilise ce bloc de code sur https://github.com/flightlesstux/antmedia/tree/master/aws-cluster