Skip to content

Commit de7b2ed

Browse files
committed
refactor: clean up unneeded configuration
Improve `lookup` function conditional logic to account for edge cases. Extract complex conditional logic to `locals`.
1 parent e697032 commit de7b2ed

File tree

4 files changed

+62
-86
lines changed

4 files changed

+62
-86
lines changed

main.tf

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,30 @@ locals {
55
try(module.acm[0].imported_acm_certificates_arns, {}),
66
try(module.acm[0].private_ca_issued_acm_certificates_arns, {})
77
) : {}
8+
9+
# ALB
10+
alb_target_groups = {
11+
for k, v in try(var.load_balancer.target_groups, {}) :
12+
k => merge(
13+
{
14+
vpc_id = var.vpc_id
15+
},
16+
v
17+
)
18+
}
19+
alb_listeners = {
20+
for k, v in try(var.load_balancer.listeners, {}) :
21+
k => merge(
22+
{
23+
certificate_arn = lookup(
24+
local.acm_certificates_arns,
25+
try(v.certificate, null) != null ? try(v.certificate, "") : "",
26+
null
27+
) != null ? local.acm_certificates_arns[try(v.certificate, null)] : try(v.certificate_arn, null)
28+
},
29+
v
30+
)
31+
}
832
}
933

1034
################################################################################
@@ -38,7 +62,7 @@ resource "aws_ecs_service" "this" {
3862
elb_name = try(load_balancer.value.elb_name, null)
3963
target_group_arn = lookup(
4064
try(module.alb[0].target_groups_arns, {}),
41-
try(load_balancer.value.target_group, ""),
65+
try(load_balancer.value.target_group, null) != null ? try(load_balancer.value.target_group, "") : "",
4266
null
4367
) != null ? try(module.alb[0].target_groups_arns, {})[try(load_balancer.value.target_group, null)] : try(load_balancer.value.target_group_arn, null)
4468
container_name = load_balancer.value.container_name
@@ -69,16 +93,6 @@ resource "aws_ecs_service" "this" {
6993
content {
7094
log_driver = var.service.service_connect_configuration.log_configuration.log_driver
7195
options = try(var.service.service_connect_configuration.log_configuration.options, null)
72-
73-
dynamic "secret_option" {
74-
for_each = try(var.service.service_connect_configuration.log_configuration.secret_option, [])
75-
iterator = secret_option
76-
77-
content {
78-
name = secret_option.value.name
79-
value_from = secret_option.value.value_from
80-
}
81-
}
8296
}
8397
}
8498

@@ -99,28 +113,6 @@ resource "aws_ecs_service" "this" {
99113
dns_name = try(service.client_alias.dns_name, null)
100114
}
101115
}
102-
103-
dynamic "timeout" {
104-
for_each = length(try(service.value.timeout, {})) > 0 ? [1] : []
105-
106-
content {
107-
idle_timeout_seconds = try(service.value.timeout.idle_timeout_seconds, null)
108-
per_request_timeout_seconds = try(service.value.timeout.per_request_timeout_seconds, null)
109-
}
110-
}
111-
112-
dynamic "tls" {
113-
for_each = length(try(service.value.tls, {})) > 0 ? [1] : []
114-
115-
content {
116-
kms_key = try(service.value.tls.kms_key, null)
117-
role_arn = try(service.value.tls.role_arn, null)
118-
119-
issuer_cert_authority {
120-
aws_pca_authority_arn = try(service.value.tls.issuer_cert_authority.aws_pca_authority_arn, null)
121-
}
122-
}
123-
}
124116
}
125117
}
126118
}
@@ -235,22 +227,9 @@ module "alb" {
235227
preserve_host_header = try(var.load_balancer.preserve_host_header, null)
236228
enable_deletion_protection = try(var.load_balancer.enable_deletion_protection, null)
237229

238-
target_groups = {
239-
for k, v in try(var.load_balancer.target_groups, {}) :
240-
k => merge({
241-
vpc_id = var.vpc_id
242-
}, v)
243-
}
230+
target_groups = local.alb_target_groups
244231

245-
listeners = {
246-
for k, v in try(var.load_balancer.listeners, {}) :
247-
k => merge(
248-
{
249-
certificate_arn = lookup(local.acm_certificates_arns, try(v.certificate, ""), null) != null ? local.acm_certificates_arns[try(v.certificate, null)] : try(v.certificate_arn, null)
250-
},
251-
v
252-
)
253-
}
232+
listeners = local.alb_listeners
254233

255234
listener_rules = try(var.load_balancer.listener_rules, {})
256235

modules/acm/main.tf

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
resource "aws_acm_certificate" "amazon_issued" {
66
for_each = var.amazon_issued_certificates
77

8-
domain_name = each.value.domain_name
9-
subject_alternative_names = each.value.subject_alternative_names
10-
validation_method = each.value.validation_method
11-
key_algorithm = each.value.key_algorithm
8+
domain_name = try(each.value.domain_name, null)
9+
subject_alternative_names = try(each.value.subject_alternative_names, null)
10+
validation_method = try(each.value.validation_method, null)
11+
key_algorithm = try(each.value.key_algorithm, null)
1212

1313
dynamic "validation_option" {
1414
for_each = try(each.value.validation_option, null) != null ? [1] : []
@@ -33,9 +33,9 @@ resource "aws_acm_certificate" "amazon_issued" {
3333
resource "aws_acm_certificate" "imported" {
3434
for_each = var.imported_certificates
3535

36-
private_key = each.value.private_key
37-
certificate_body = each.value.certificate_body
38-
certificate_chain = each.value.certificate_chain
36+
private_key = try(each.value.private_key, null)
37+
certificate_body = try(each.value.certificate_body, null)
38+
certificate_chain = try(each.value.certificate_chain, null)
3939

4040
lifecycle {
4141
create_before_destroy = true

modules/alb/main.tf

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,12 @@ locals {
77
################################################################################
88

99
resource "aws_lb" "this" {
10-
name = var.name
11-
load_balancer_type = local.load_balancer_type
12-
internal = var.internal
13-
14-
subnets = var.subnets_ids
15-
security_groups = var.security_groups_ids
16-
17-
preserve_host_header = var.preserve_host_header
18-
10+
name = try(var.name, null)
11+
load_balancer_type = try(local.load_balancer_type, null)
12+
internal = try(var.internal, null)
13+
subnets = var.subnets_ids
14+
security_groups = var.security_groups_ids
15+
preserve_host_header = var.preserve_host_header
1916
enable_deletion_protection = var.enable_deletion_protection
2017

2118
tags = var.tags
@@ -28,11 +25,11 @@ resource "aws_lb" "this" {
2825
resource "aws_lb_target_group" "this" {
2926
for_each = var.target_groups
3027

31-
name = each.value.name
32-
vpc_id = each.value.vpc_id
33-
port = each.value.port
34-
protocol = each.value.protocol
35-
target_type = each.value.target_type
28+
name = try(each.value.name, null)
29+
vpc_id = try(each.value.vpc_id, null)
30+
port = try(each.value.port, null)
31+
protocol = try(each.value.protocol, null)
32+
target_type = try(each.value.target_type, null)
3633

3734
dynamic "health_check" {
3835
for_each = try(each.value.health_check, null) != null ? [1] : []
@@ -62,10 +59,10 @@ resource "aws_lb_listener" "this" {
6259

6360
load_balancer_arn = aws_lb.this.arn
6461

65-
certificate_arn = each.value.certificate_arn
66-
port = each.value.port
67-
protocol = each.value.protocol
68-
ssl_policy = each.value.ssl_policy
62+
certificate_arn = try(each.value.certificate_arn, null)
63+
port = try(each.value.port, null)
64+
protocol = try(each.value.protocol, null)
65+
ssl_policy = try(each.value.ssl_policy, null)
6966

7067
dynamic "default_action" {
7168
for_each = each.value.default_action
@@ -74,7 +71,7 @@ resource "aws_lb_listener" "this" {
7471
content {
7572
type = default_action.value.type
7673
target_group_arn = aws_lb_target_group.this[default_action.value.target_group].arn
77-
order = default_action.value.order
74+
order = try(default_action.value.order, null)
7875

7976
dynamic "fixed_response" {
8077
for_each = try(default_action.value.fixed_response, null) != null ? [1] : []
@@ -96,7 +93,7 @@ resource "aws_lb_listener" "this" {
9693

9794
content {
9895
arn = target_group.value.arn
99-
weight = target_group.value.weight
96+
weight = try(target_group.value.weight, null)
10097
}
10198
}
10299

@@ -105,7 +102,7 @@ resource "aws_lb_listener" "this" {
105102

106103
content {
107104
duration = default_action.value.forward.stickiness.duration
108-
enabled = try(default_action.value.forward.stickiness.enabled, false)
105+
enabled = try(default_action.value.forward.stickiness.enabled, null)
109106
}
110107
}
111108
}
@@ -146,7 +143,7 @@ resource "aws_lb_listener_rule" "this" {
146143
type = action.value.type
147144
target_group_arn = lookup(
148145
aws_lb_target_group.this,
149-
try(action.value.target_group, ""),
146+
try(action.value.target_group, null) != null ? try(action.value.target_group, "") : "",
150147
null
151148
) != null ? aws_lb_target_group.this[try(action.value.target_group, null)].arn : null
152149

modules/capacity-provider/main.tf

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ resource "aws_ecs_capacity_provider" "this" {
1414
for_each = try(each.value.managed_scaling, null) != null ? [1] : []
1515

1616
content {
17-
instance_warmup_period = each.value.managed_scaling.instance_warmup_period
18-
status = each.value.managed_scaling.status
19-
target_capacity = each.value.managed_scaling.target_capacity
20-
minimum_scaling_step_size = each.value.managed_scaling.minimum_scaling_step_size
21-
maximum_scaling_step_size = each.value.managed_scaling.maximum_scaling_step_size
17+
instance_warmup_period = try(each.value.managed_scaling.instance_warmup_period, null)
18+
status = try(each.value.managed_scaling.status, null)
19+
target_capacity = try(each.value.managed_scaling.target_capacity, null)
20+
minimum_scaling_step_size = try(each.value.managed_scaling.minimum_scaling_step_size, null)
21+
maximum_scaling_step_size = try(each.value.managed_scaling.maximum_scaling_step_size, null)
2222
}
2323
}
2424

25-
managed_termination_protection = each.value.managed_termination_protection
25+
managed_termination_protection = try(each.value.managed_termination_protection, null)
2626
}
2727

28-
tags = each.value.tags
28+
tags = try(each.value.tags, {})
2929
}
3030

3131
################################################################################
@@ -43,8 +43,8 @@ resource "aws_ecs_cluster_capacity_providers" "this" {
4343

4444
content {
4545
capacity_provider = aws_ecs_capacity_provider.this[default_capacity_provider_strategies.value.capacity_provider].name
46-
base = default_capacity_provider_strategies.value.base
47-
weight = default_capacity_provider_strategies.value.weight
46+
base = try(default_capacity_provider_strategies.value.base, null)
47+
weight = try(default_capacity_provider_strategies.value.weight, null)
4848
}
4949
}
5050
}

0 commit comments

Comments
 (0)