지난주 Terraform을 통해 Infrastructure as Code를 작성했다. 내 경우 AWS Application Load Balancer의 퍼블릭 인터페이스에서 두 개의 다른 Target Group으로 트래픽을 전달해야 했다. HCL(HashiCorp Language)은 어려운 언어는 아니지만 문서에 많은 주제가 빠져 있고, Terraform에는 문서화되지 않은 몇 가지 포인트도 있다.

검색해보니 "AWS에서 Terraform으로 여러 Target Group 사용하기" 주제에 대한 많은 질문과 이슈가 있었다.

제안된 해결책들을 읽었지만 도움이 되지 않았다. 그 후 "aws_lb_listener"를 리소스로 사용하기로 결정했다. 마침내 내 경우에 맞는 해결책을 찾았다. 아래에서 세부 사항을 확인할 수 있다:

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

이 트릭이 도움이 되길 바란다.