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 )
66 aws_ecs_lb_container_path = var. aws_ecs_lb_container_path != " " ? [for n in split (" ," , var. aws_ecs_lb_container_path ) : n ] : []
7- aws_ecs_lb_container_path_redirect = length (aws_lb_listener . https_redirect ) > 0 || length (aws_lb_listener . http_redirect ) > 0 ? local. aws_ecs_lb_container_path : []
7+ aws_ecs_lb_container_path_redirect = length (aws_alb_listener . https_redirect ) > 0 || length (aws_alb_listener . http_redirect ) > 0 ? local. aws_ecs_lb_container_path : []
88}
99
1010# Network part
@@ -35,7 +35,7 @@ resource "aws_security_group_rule" "incoming_alb" {
3535
3636# ## ALB --- Make this optional -- Using ALB name intentionally. (To make clear is an A LB)
3737
38- resource "aws_lb " "ecs_lb" {
38+ resource "aws_alb " "ecs_lb" {
3939 count = length (local. aws_ecs_sg_container_port ) > 0 ? 1 : 0
4040 name = var. aws_resource_identifier_supershort
4141 subnets = var. aws_selected_subnets
@@ -46,13 +46,13 @@ resource "aws_lb" "ecs_lb" {
4646 }
4747}
4848
49- data "aws_lb " "selected_lb" {
49+ data "aws_alb " "selected_lb" {
5050 count = length (local. aws_ecs_sg_container_port )
5151 name = var. aws_resource_identifier_supershort
52- depends_on = [aws_lb . ecs_lb ]
52+ depends_on = [aws_alb . ecs_lb ]
5353}
5454
55- resource "aws_lb_target_group " "lb_targets" {
55+ resource "aws_alb_target_group " "lb_targets" {
5656 count = length (local. aws_ecs_container_port )
5757 name = " ${ var . aws_resource_identifier_supershort } ${ count . index } "
5858 port = local. aws_ecs_container_port [count . index ]
@@ -69,51 +69,51 @@ resource "aws_lb_target_group" "lb_targets" {
6969resource "null_resource" "http_redirect_dep" {
7070 triggers = {
7171 id = (
72- length (aws_lb_listener . http_redirect ) > 0
73- ) ? aws_lb_listener .http_redirect[0 ].id : " none"
72+ length (aws_alb_listener . http_redirect ) > 0
73+ ) ? aws_alb_listener .http_redirect[0 ].id : " none"
7474 }
7575}
7676
77- resource "aws_lb_listener " "lb_listener_ssl" {
77+ resource "aws_alb_listener " "lb_listener_ssl" {
7878 count = var. aws_certificate_enabled ? length (local. aws_ecs_lb_port ) : 0
79- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
79+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
8080 port = local. aws_ecs_lb_port [count . index ]
8181 # https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html
8282 ssl_policy = var. aws_ecs_lb_ssl_policy
8383 protocol = " HTTPS"
8484 certificate_arn = var. aws_certificates_selected_arn
8585 default_action {
86- target_group_arn = aws_lb_target_group . lb_targets [count . index ]. id
86+ target_group_arn = aws_alb_target_group . lb_targets [count . index ]. id
8787 type = " forward"
8888 }
8989 lifecycle {
9090 replace_triggered_by = [null_resource. http_redirect_dep . id ]
9191 }
92- depends_on = [ aws_lb_listener . http_redirect ]
92+ depends_on = [ aws_alb_listener . http_redirect ]
9393}
9494
95- resource "aws_lb_listener " "lb_listener" {
95+ resource "aws_alb_listener " "lb_listener" {
9696 count = var. aws_certificate_enabled ? 0 : length (local. aws_ecs_lb_port )
97- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
97+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
9898 port = local. aws_ecs_lb_port [count . index ]
9999 protocol = " HTTP"
100100 default_action {
101- target_group_arn = aws_lb_target_group . lb_targets [count . index ]. id
101+ target_group_arn = aws_alb_target_group . lb_targets [count . index ]. id
102102 type = " forward"
103103 }
104104 lifecycle {
105105 replace_triggered_by = [null_resource. http_redirect_dep . id ]
106106 }
107- depends_on = [ aws_lb_listener . http_redirect ]
107+ depends_on = [ aws_alb_listener . http_redirect ]
108108}
109109
110- resource "aws_lb_listener_rule " "redirect_based_on_path" {
110+ resource "aws_alb_listener_rule " "redirect_based_on_path" {
111111 for_each = { for idx , path in local . aws_ecs_lb_container_path : idx => path if length (path) > 0 }
112- listener_arn = var. aws_certificate_enabled ? aws_lb_listener . lb_listener_ssl [0 ]. arn : aws_lb_listener . lb_listener [0 ]. arn
112+ listener_arn = var. aws_certificate_enabled ? aws_alb_listener . lb_listener_ssl [0 ]. arn : aws_alb_listener . lb_listener [0 ]. arn
113113
114114 action {
115115 type = " forward"
116- target_group_arn = aws_lb_target_group . lb_targets [each . key + 1 ]. arn
116+ target_group_arn = aws_alb_target_group . lb_targets [each . key + 1 ]. arn
117117 }
118118
119119 condition {
@@ -123,9 +123,9 @@ resource "aws_lb_listener_rule" "redirect_based_on_path" {
123123 }
124124}
125125
126- resource "aws_lb_listener " "http_redirect" {
126+ resource "aws_alb_listener " "http_redirect" {
127127 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,80 ) && var. aws_certificate_enabled ? 1 : 0
128- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
128+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
129129 port = " 80"
130130 protocol = " HTTP"
131131
@@ -139,29 +139,29 @@ resource "aws_lb_listener" "http_redirect" {
139139 }
140140 }
141141 depends_on = [
142- aws_lb . ecs_lb ,
143- aws_lb_target_group . lb_targets
142+ aws_alb . ecs_lb ,
143+ aws_alb_target_group . lb_targets
144144 ]
145145}
146146
147- resource "aws_lb_listener " "http_forward" {
147+ resource "aws_alb_listener " "http_forward" {
148148 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,80 ) && ! var. aws_certificate_enabled && ! var. aws_ecs_lb_www_to_apex_redirect ? 1 : 0
149- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
149+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
150150 port = " 80"
151151 protocol = " HTTP"
152152
153153 default_action {
154154 type = " forward"
155- target_group_arn = aws_lb_target_group . lb_targets [0 ]. id
155+ target_group_arn = aws_alb_target_group . lb_targets [0 ]. id
156156 }
157157 depends_on = [
158- aws_lb . ecs_lb ,
159- aws_lb_target_group . lb_targets
158+ aws_alb . ecs_lb ,
159+ aws_alb_target_group . lb_targets
160160 ]
161161}
162162
163163resource "aws_security_group_rule" "incoming_alb_http" {
164- count = length (aws_lb_listener . http_redirect ) + length (aws_lb_listener . http_forward ) + length (aws_lb_listener . http_www_redirect )
164+ count = length (aws_alb_listener . http_redirect ) + length (aws_alb_listener . http_forward ) + length (aws_alb_listener . http_www_redirect )
165165 type = " ingress"
166166 from_port = 80
167167 to_port = 80
@@ -170,33 +170,33 @@ resource "aws_security_group_rule" "incoming_alb_http" {
170170 security_group_id = aws_security_group. ecs_lb_sg . id
171171}
172172
173- resource "aws_lb_listener " "https_redirect" {
173+ resource "aws_alb_listener " "https_redirect" {
174174 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,443 ) && var. aws_certificate_enabled ? 1 : 0
175175 # count = var.aws_ecs_lb_redirect_enable && !contains(local.aws_ecs_lb_port,443) ? var.aws_certificates_selected_arn != "" ? 1 : 0 : 0
176176 # count = var.aws_ecs_lb_redirect_enable && var.aws_certificates_selected_arn != "" && !contains(local.aws_ecs_lb_port,443) ? 1 : 0
177- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
177+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
178178 port = " 443"
179179 protocol = " HTTPS"
180180 certificate_arn = var. aws_certificates_selected_arn
181181 ssl_policy = var. aws_certificates_selected_arn != " " ? var. aws_ecs_lb_ssl_policy : " " # https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html
182182
183183 default_action {
184- target_group_arn = aws_lb_target_group . lb_targets [0 ]. id
184+ target_group_arn = aws_alb_target_group . lb_targets [0 ]. id
185185 type = " forward"
186186 }
187187}
188188
189- resource "aws_lb_listener_rule " "redirect_based_on_path_for_http" {
189+ resource "aws_alb_listener_rule " "redirect_based_on_path_for_http" {
190190 for_each = { for idx , path in local . aws_ecs_lb_container_path_redirect : idx => path if length (path) > 0 }
191- # listener_arn = var.aws_certificates_selected_arn != "" ? aws_lb_listener .https_redirect[0].arn : aws_lb_listener .http_redirect[0].arn
192- listener_arn = var. aws_certificate_enabled ? aws_lb_listener . https_redirect [0 ]. arn : (
193- length (aws_lb_listener . http_redirect ) > 0 ? aws_lb_listener . http_redirect [0 ]. arn : (
194- length (aws_lb_listener . http_forward ) > 0 ? aws_lb_listener . http_forward [0 ]. arn : aws_lb_listener . http_www_redirect [0 ]. arn
191+ # listener_arn = var.aws_certificates_selected_arn != "" ? aws_alb_listener .https_redirect[0].arn : aws_alb_listener .http_redirect[0].arn
192+ listener_arn = var. aws_certificate_enabled ? aws_alb_listener . https_redirect [0 ]. arn : (
193+ length (aws_alb_listener . http_redirect ) > 0 ? aws_alb_listener . http_redirect [0 ]. arn : (
194+ length (aws_alb_listener . http_forward ) > 0 ? aws_alb_listener . http_forward [0 ]. arn : aws_alb_listener . http_www_redirect [0 ]. arn
195195 )
196196 )
197197 action {
198198 type = " forward"
199- target_group_arn = aws_lb_target_group . lb_targets [each . key + 1 ]. arn
199+ target_group_arn = aws_alb_target_group . lb_targets [each . key + 1 ]. arn
200200 }
201201
202202 condition {
@@ -206,9 +206,9 @@ resource "aws_lb_listener_rule" "redirect_based_on_path_for_http" {
206206 }
207207}
208208
209- resource "aws_lb_listener " "http_www_redirect" {
209+ resource "aws_alb_listener " "http_www_redirect" {
210210 count = var. aws_ecs_lb_redirect_enable && ! contains (local. aws_ecs_lb_port ,80 ) && ! var. aws_certificate_enabled && var. aws_ecs_lb_www_to_apex_redirect ? 1 : 0
211- load_balancer_arn = aws_lb . ecs_lb [0 ]. id
211+ load_balancer_arn = aws_alb . ecs_lb [0 ]. id
212212 port = " 80"
213213 protocol = " HTTP"
214214
@@ -222,14 +222,14 @@ resource "aws_lb_listener" "http_www_redirect" {
222222 }
223223 }
224224 depends_on = [
225- aws_lb . ecs_lb ,
226- aws_lb_target_group . lb_targets
225+ aws_alb . ecs_lb ,
226+ aws_alb_target_group . lb_targets
227227 ]
228228}
229229
230230resource "aws_lb_listener_rule" "http_forward_apex" {
231231 count = var. aws_ecs_lb_www_to_apex_redirect && var. aws_r53_domain_name != " " && ! var. aws_certificate_enabled ? 1 : 0
232- listener_arn = aws_lb_listener . http_www_redirect [0 ]. arn
232+ listener_arn = aws_alb_listener . http_www_redirect [0 ]. arn
233233 priority = 20
234234
235235 condition {
@@ -240,13 +240,13 @@ resource "aws_lb_listener_rule" "http_forward_apex" {
240240
241241 action {
242242 type = " forward"
243- target_group_arn = aws_lb_target_group . lb_targets [0 ]. id
243+ target_group_arn = aws_alb_target_group . lb_targets [0 ]. id
244244 }
245245}
246246
247247resource "aws_lb_listener_rule" "redirect_www_to_apex" {
248248 count = var. aws_ecs_lb_www_to_apex_redirect && var. aws_r53_domain_name != " " ? 1 : 0
249- listener_arn = var. aws_certificate_enabled ? aws_lb_listener . https_redirect [0 ]. arn : aws_lb_listener . http_www_redirect [0 ]. arn
249+ listener_arn = var. aws_certificate_enabled ? aws_alb_listener . https_redirect [0 ]. arn : aws_alb_listener . http_www_redirect [0 ]. arn
250250 priority = 10
251251
252252 condition {
@@ -270,7 +270,7 @@ resource "aws_lb_listener_rule" "redirect_www_to_apex" {
270270}
271271
272272resource "aws_security_group_rule" "incoming_alb_https" {
273- count = length (aws_lb_listener . https_redirect )
273+ count = length (aws_alb_listener . https_redirect )
274274 type = " ingress"
275275 from_port = 443
276276 to_port = 443
@@ -306,24 +306,24 @@ resource "aws_security_group_rule" "incoming_ecs_lb_ports" {
306306}
307307
308308output "load_balancer_dns" {
309- value = length (local. aws_ecs_sg_container_port ) > 0 ? aws_lb . ecs_lb [0 ]. dns_name : " "
309+ value = length (local. aws_ecs_sg_container_port ) > 0 ? aws_alb . ecs_lb [0 ]. dns_name : " "
310310}
311311
312312output "load_balancer_port" {
313- value = length (local. aws_ecs_sg_container_port ) > 0 ? (var. aws_certificate_enabled ? aws_lb_listener . lb_listener_ssl [0 ]. port : aws_lb_listener . lb_listener [0 ]. port ) : " "
313+ value = length (local. aws_ecs_sg_container_port ) > 0 ? (var. aws_certificate_enabled ? aws_alb_listener . lb_listener_ssl [0 ]. port : aws_alb_listener . lb_listener [0 ]. port ) : " "
314314}
315315
316316output "load_balancer_protocol" {
317- value = length (local. aws_ecs_sg_container_port ) > 0 ? (var. aws_certificate_enabled ? aws_lb_listener . lb_listener_ssl [0 ]. protocol : aws_lb_listener . lb_listener [0 ]. protocol ) : " "
317+ value = length (local. aws_ecs_sg_container_port ) > 0 ? (var. aws_certificate_enabled ? aws_alb_listener . lb_listener_ssl [0 ]. protocol : aws_alb_listener . lb_listener [0 ]. protocol ) : " "
318318}
319319
320320output "load_balancer_zone_id" {
321- # value = aws_lb .ecs_lb[0].zone_id
322- value = length (local. aws_ecs_sg_container_port ) > 0 ? data. aws_lb . selected_lb [0 ]. zone_id : " "
321+ # value = aws_alb .ecs_lb[0].zone_id
322+ value = length (local. aws_ecs_sg_container_port ) > 0 ? data. aws_alb . selected_lb [0 ]. zone_id : " "
323323}
324324
325325output "load_balancer_arn" {
326- value = length (local. aws_ecs_sg_container_port ) > 0 ? aws_lb . ecs_lb [0 ]. arn : " "
326+ value = length (local. aws_ecs_sg_container_port ) > 0 ? aws_alb . ecs_lb [0 ]. arn : " "
327327}
328328
329329output "ecs_sg_id" {
0 commit comments