11locals {
2- aws_ecs_container_port = [for n in split (" ," , var. aws_ecs_container_port ) : tonumber (n)]
2+ aws_ecs_container_port = var . aws_ecs_container_port != " " ? [for n in split (" ," , var. aws_ecs_container_port ) : tonumber (n)] : var . aws_ecs_task_ignore_definition ? [ 80 ] : [ ]
33 aws_ecs_sg_container_port = distinct (local. aws_ecs_container_port )
44 aws_ecs_lb_port = var. aws_ecs_lb_port != " " ? [for n in split (" ," , var. aws_ecs_lb_port ) : tonumber (n)] : local. aws_ecs_container_port
55 aws_ecs_sg_lb_port = distinct (local. aws_ecs_lb_port )
@@ -36,6 +36,7 @@ resource "aws_security_group_rule" "incoming_alb" {
3636# ## ALB --- Make this optional -- Using ALB name intentionally. (To make clear is an A LB)
3737
3838resource "aws_alb" "ecs_lb" {
39+ count = length (local. aws_ecs_sg_container_port ) > 1 ? 1 : 0
3940 name = var. aws_resource_identifier_supershort
4041 subnets = var. aws_selected_subnets
4142 security_groups = [aws_security_group . ecs_lb_sg . id ]
@@ -46,8 +47,9 @@ resource "aws_alb" "ecs_lb" {
4647}
4748
4849data "aws_alb" "selected_lb" {
49- name = var. aws_resource_identifier_supershort
50- depends_on = [ aws_alb . ecs_lb ]
50+ count = length (local. aws_ecs_sg_container_port )
51+ name = var. aws_resource_identifier_supershort
52+ depends_on = [aws_alb . ecs_lb ]
5153}
5254
5355resource "aws_alb_target_group" "lb_targets" {
@@ -74,7 +76,7 @@ resource "null_resource" "http_redirect_dep" {
7476
7577resource "aws_alb_listener" "lb_listener_ssl" {
7678 count = var. aws_certificate_enabled ? length (local. aws_ecs_lb_port ) : 0
77- load_balancer_arn = aws_alb. ecs_lb . id
79+ load_balancer_arn = aws_alb. ecs_lb [ 0 ] . id
7880 port = local. aws_ecs_lb_port [count . index ]
7981 # https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html
8082 ssl_policy = var. aws_ecs_lb_ssl_policy
@@ -92,7 +94,7 @@ resource "aws_alb_listener" "lb_listener_ssl" {
9294
9395resource "aws_alb_listener" "lb_listener" {
9496 count = var. aws_certificate_enabled ? 0 : length (local. aws_ecs_lb_port )
95- load_balancer_arn = aws_alb. ecs_lb . id
97+ load_balancer_arn = aws_alb. ecs_lb [ 0 ] . id
9698 port = local. aws_ecs_lb_port [count . index ]
9799 protocol = " HTTP"
98100 default_action {
@@ -123,7 +125,7 @@ resource "aws_alb_listener_rule" "redirect_based_on_path" {
123125
124126resource "aws_alb_listener" "http_redirect" {
125127 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,80 ) ? 1 : 0
126- load_balancer_arn = aws_alb. ecs_lb . id
128+ load_balancer_arn = aws_alb. ecs_lb [ 0 ] . id
127129 port = " 80"
128130 protocol = " HTTP"
129131
@@ -161,7 +163,7 @@ resource "aws_alb_listener" "https_redirect" {
161163 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,443 ) && var. aws_certificate_enabled ? 1 : 0
162164 # count = var.aws_ecs_lb_redirect_enable && !contains(local.aws_ecs_lb_port,443) ? var.aws_certificates_selected_arn != "" ? 1 : 0 : 0
163165 # count = var.aws_ecs_lb_redirect_enable && var.aws_certificates_selected_arn != "" && !contains(local.aws_ecs_lb_port,443) ? 1 : 0
164- load_balancer_arn = " ${ aws_alb . ecs_lb . id } "
166+ load_balancer_arn = " ${ aws_alb . ecs_lb [ 0 ] . id } "
165167 port = " 443"
166168 protocol = " HTTPS"
167169 certificate_arn = var. aws_certificates_selected_arn
@@ -226,30 +228,30 @@ resource "aws_security_group_rule" "incoming_ecs_lb_ports" {
226228}
227229
228230output "load_balancer_dns" {
229- value = aws_alb. ecs_lb . dns_name
231+ value = length (local . aws_ecs_sg_container_port ) > 1 ? aws_alb. ecs_lb [ 0 ] . dns_name : " "
230232}
231233
232234output "load_balancer_port" {
233- value = var. aws_certificate_enabled ? aws_alb_listener. lb_listener_ssl [0 ]. port : aws_alb_listener. lb_listener [0 ]. port
235+ value = length (local . aws_ecs_sg_container_port ) > 1 ? ( var. aws_certificate_enabled ? aws_alb_listener. lb_listener_ssl [0 ]. port : aws_alb_listener. lb_listener [0 ]. port ) : " "
234236}
235237
236238output "load_balancer_protocol" {
237- value = var. aws_certificate_enabled ? aws_alb_listener. lb_listener_ssl [0 ]. protocol : aws_alb_listener. lb_listener [0 ]. protocol
239+ value = length (local . aws_ecs_sg_container_port ) > 1 ? ( var. aws_certificate_enabled ? aws_alb_listener. lb_listener_ssl [0 ]. protocol : aws_alb_listener. lb_listener [0 ]. protocol ) : " "
238240}
239241
240242output "load_balancer_zone_id" {
241- # value = aws_alb.ecs_lb.zone_id
242- value = data. aws_alb . selected_lb . zone_id
243+ # value = aws_alb.ecs_lb[0] .zone_id
244+ value = length (local . aws_ecs_sg_container_port ) > 1 ? data. aws_alb . selected_lb [ 0 ] . zone_id : " "
243245}
244246
245247output "load_balancer_arn" {
246- value = aws_alb. ecs_lb . arn
248+ value = length (local . aws_ecs_sg_container_port ) > 1 ? aws_alb. ecs_lb [ 0 ] . arn : " "
247249}
248250
249251output "ecs_sg_id" {
250252 value = aws_security_group. ecs_sg . id
251253}
252254
253255output "ecs_lb_sg_id" {
254- value = aws_security_group. ecs_lb_sg . id
256+ value = length (local . aws_ecs_sg_container_port ) > 1 ? aws_security_group. ecs_lb_sg . id : " "
255257}
0 commit comments