resource "aws_lb" "app_lb" { name = "${local.global_prefix}-load-balancer" internal = true load_balancer_type = "application" security_groups = [aws_security_group.lb_sg.id] subnets = data.aws_subnets.subnets.ids # Referencing the subnet ID from the data source enable_deletion_protection = false } # TARGET GROUP FOR ALL PORTS resource "aws_lb_target_group" "app_tg_8500" { name = "app-target-group-8500" port = 8500 protocol = "HTTP" vpc_id = var.vpc_id health_check { path = "/" interval = 30 timeout = 5 healthy_threshold = 5 unhealthy_threshold = 2 matcher = "200" port = 8500 } } resource "aws_lb_target_group" "app_tg_8501" { name = "app-target-group-8501" port = 8501 protocol = "HTTP" vpc_id = var.vpc_id health_check { path = "/" interval = 30 timeout = 5 healthy_threshold = 5 unhealthy_threshold = 2 matcher = "200" port = 8501 } } resource "aws_lb_target_group" "app_tg_8502" { name = "app-target-group-8502" port = 8502 protocol = "HTTP" vpc_id = var.vpc_id health_check { path = "/" interval = 30 timeout = 5 healthy_threshold = 5 unhealthy_threshold = 2 matcher = "200" port = 8502 } } resource "aws_lb_target_group" "app_tg_8503" { name = "app-target-group-8503" port = 8503 protocol = "HTTP" vpc_id = var.vpc_id health_check { path = "/" interval = 30 timeout = 5 healthy_threshold = 5 unhealthy_threshold = 2 matcher = "200" port = 8503 } } resource "aws_lb_target_group" "app_tg_8505" { name = "app-target-group-8505" port = 8505 protocol = "HTTP" vpc_id = var.vpc_id health_check { path = "/" interval = 30 timeout = 5 healthy_threshold = 5 unhealthy_threshold = 2 matcher = "200" port = 8505 } } # Attach the target group to the listener resource "aws_lb_target_group_attachment" "app_instance_8500" { target_group_arn = aws_lb_target_group.app_tg_8500.arn target_id = aws_instance.streamlit_server.id port = 8500 } resource "aws_lb_target_group_attachment" "app_instance_8501" { target_group_arn = aws_lb_target_group.app_tg_8501.arn target_id = aws_instance.streamlit_server.id port = 8501 } resource "aws_lb_target_group_attachment" "app_instance_8502" { target_group_arn = aws_lb_target_group.app_tg_8502.arn target_id = aws_instance.streamlit_server.id port = 8502 } resource "aws_lb_target_group_attachment" "app_instance_8503" { target_group_arn = aws_lb_target_group.app_tg_8503.arn target_id = aws_instance.streamlit_server.id port = 8503 } resource "aws_lb_target_group_attachment" "app_instance_8505" { target_group_arn = aws_lb_target_group.app_tg_8505.arn target_id = aws_instance.streamlit_server.id port = 8505 } # Update listener rules resource "aws_lb_listener" "https_8500" { load_balancer_arn = aws_lb.app_lb.arn port = "8500" protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-2016-08" # Using variable for ARN certificate_arn = lookup(var.acm_arns, var.environment) default_action { type = "forward" target_group_arn = aws_lb_target_group.app_tg_8500.arn } } resource "aws_lb_listener" "https_8501" { load_balancer_arn = aws_lb.app_lb.arn port = "8501" protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-2016-08" certificate_arn = lookup(var.acm_arns, var.environment) default_action { type = "forward" target_group_arn = aws_lb_target_group.app_tg_8501.arn } } resource "aws_lb_listener" "https_8502" { load_balancer_arn = aws_lb.app_lb.arn port = "8502" protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-2016-08" certificate_arn = lookup(var.acm_arns, var.environment) default_action { type = "forward" target_group_arn = aws_lb_target_group.app_tg_8502.arn } } resource "aws_lb_listener" "https_8503" { load_balancer_arn = aws_lb.app_lb.arn port = "8503" protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-2016-08" certificate_arn = lookup(var.acm_arns, var.environment) default_action { type = "forward" target_group_arn = aws_lb_target_group.app_tg_8503.arn } } resource "aws_lb_listener" "https_8505" { load_balancer_arn = aws_lb.app_lb.arn port = "8505" protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-2016-08" certificate_arn = lookup(var.acm_arns, var.environment) default_action { type = "forward" target_group_arn = aws_lb_target_group.app_tg_8505.arn } }