Terraform으로 AWS Load Balancer에 두 개의 다른 Target Group 설정하기
Terraform으로 AWS 서비스에서 Elastic Load Balancer 뒤에 여러 Target Group을 사용하는 방법을 배우게 된다.

지난주 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 }
}
}
}
이 트릭이 도움이 되길 바란다.
Ercan의 다른 글
같은 저자, 다른 영역의 사이트 두 개.