1
1
locals {
2
+ # ECS Service
3
+ ecs_service_launch_type = " EC2"
4
+
5
+ # ECS Task Definition
6
+ ecs_task_definition_requires_compatibilities = [" EC2" ]
7
+
2
8
# ALB
3
9
alb_access_logs_default_s3_configuration = var. create_s3_bucket_for_alb_logging ? {
4
10
bucket = module.s3_bucket[0 ].bucket_id
@@ -10,6 +16,7 @@ locals {
10
16
enabled = true
11
17
prefix = var.s3_bucket_connection_logs_prefix
12
18
} : null
19
+
13
20
alb_target_groups = {
14
21
for k , v in try (var. load_balancer . target_groups , {}) :
15
22
k = > merge (
@@ -32,6 +39,10 @@ locals {
32
39
v
33
40
)
34
41
}
42
+
43
+ # S3
44
+ create_elb_service_account_data_source = var. s3_elb_service_account_arn == null
45
+ elb_service_account_arn = local. create_elb_service_account_data_source ? data. aws_elb_service_account . this [0 ]. arn : var. s3_elb_service_account_arn
35
46
}
36
47
37
48
# ###############################################################################
@@ -50,7 +61,7 @@ resource "aws_ecs_service" "this" {
50
61
force_new_deployment = try (var. service . force_new_deployment , null )
51
62
health_check_grace_period_seconds = try (var. service . health_check_grace_period_seconds , null )
52
63
iam_role = try (var. service . iam_role , null )
53
- launch_type = " EC2 "
64
+ launch_type = local . ecs_service_launch_type
54
65
propagate_tags = try (var. service . propagate_tags , null )
55
66
scheduling_strategy = try (var. service . scheduling_strategy , null )
56
67
task_definition = aws_ecs_task_definition. this . id
@@ -187,7 +198,7 @@ resource "aws_ecs_task_definition" "this" {
187
198
memory = try (var. task_definition . memory , null )
188
199
network_mode = try (var. task_definition . network_mode , null )
189
200
pid_mode = try (var. task_definition . pid_mode , null )
190
- requires_compatibilities = [ " EC2 " ]
201
+ requires_compatibilities = local . ecs_task_definition_requires_compatibilities
191
202
skip_destroy = try (var. task_definition . skip_destroy , null )
192
203
task_role_arn = try (var. task_definition . task_role_arn , null )
193
204
track_latest = try (var. task_definition . track_latest , null )
@@ -228,19 +239,26 @@ resource "aws_ecs_task_definition" "this" {
228
239
}
229
240
230
241
# ###############################################################################
231
- # Capacity Provider Sub-module
242
+ # Amazon Certificates Manager Sub-module
232
243
# ###############################################################################
233
244
234
- module "capacity_provider " {
235
- source = " ./modules/capacity-provider "
245
+ module "acm " {
246
+ source = " ./modules/acm "
236
247
237
- count = var. create_capacity_provider ? 1 : 0
248
+ for_each = var. create_acm ? var . acm_certificates : {}
238
249
239
- ecs_cluster_name = var. cluster_name
240
- default_auto_scaling_group_arn = var. capacity_provider_default_auto_scaling_group_arn
250
+ # ACM Certificate
251
+ certificate_domain_name = each. value . domain_name
252
+ certificate_subject_alternative_names = try (each. value . subject_alternative_names , null )
253
+ certificate_validation_method = try (each. value . validation_method , null )
254
+ certificate_key_algorithm = try (each. value . key_algorithm , null )
255
+ certificate_validation_option = try (each. value . validation_option , null )
241
256
242
- capacity_providers = var. capacity_providers
243
- default_capacity_provider_strategies = var. default_capacity_providers_strategies
257
+ # Route53 Record
258
+ record_zone_id = try (each. value . record_zone_id , null )
259
+ record_allow_overwrite = try (each. value . record_allow_overwrite , null )
260
+
261
+ tags = try (each. value . tags , {})
244
262
}
245
263
246
264
# ###############################################################################
@@ -252,41 +270,67 @@ module "alb" {
252
270
253
271
count = var. create_alb ? 1 : 0
254
272
273
+ # Load Balancer
255
274
name = try (var. load_balancer . name , null )
256
275
internal = try (var. load_balancer . internal , null )
257
276
subnets_ids = try (var. load_balancer . subnets_ids , [])
258
277
security_groups_ids = try (var. load_balancer . security_groups_ids , [])
259
278
preserve_host_header = try (var. load_balancer . preserve_host_header , null )
260
279
enable_deletion_protection = try (var. load_balancer . enable_deletion_protection , null )
280
+ access_logs = var. load_balancer . access_logs != null ? var. load_balancer . access_logs : local. alb_access_logs_default_s3_configuration
281
+ connection_logs = var. load_balancer . connection_logs != null ? var. load_balancer . connection_logs : local. alb_connection_logs_default_s3_configuration
261
282
262
- access_logs = var. load_balancer . access_logs != null ? var. load_balancer . access_logs : local. alb_access_logs_default_s3_configuration
263
- connection_logs = var. load_balancer . connection_logs != null ? var. load_balancer . connection_logs : local. alb_connection_logs_default_s3_configuration
264
-
283
+ # LB Target Group
265
284
target_groups = local. alb_target_groups
266
285
286
+ # LB Listener
267
287
listeners = local. alb_listeners
268
288
289
+ # LB Listener Rule
269
290
listener_rules = try (var. load_balancer . listener_rules , {})
270
291
271
292
tags = try (var. load_balancer . tags , {})
272
293
273
294
depends_on = [module . acm ]
274
295
}
275
296
297
+ # ###############################################################################
298
+ # Capacity Provider Sub-module
299
+ # ###############################################################################
300
+
301
+ module "capacity_provider" {
302
+ source = " ./modules/capacity-provider"
303
+
304
+ count = var. create_capacity_provider ? 1 : 0
305
+
306
+ ecs_cluster_name = var. cluster_name
307
+
308
+ # ECS Capacity Provider
309
+ capacity_providers = var. capacity_providers
310
+ default_auto_scaling_group_arn = var. capacity_provider_default_auto_scaling_group_arn
311
+
312
+ # ECS Cluster Capacity Providers
313
+ default_capacity_provider_strategies = var. default_capacity_providers_strategies
314
+ }
315
+
276
316
# ###############################################################################
277
317
# S3 Bucket Sub-module
278
318
# ###############################################################################
279
319
280
- data "aws_elb_service_account" "this" {}
320
+ data "aws_elb_service_account" "this" {
321
+ count = local. create_elb_service_account_data_source ? 1 : 0
322
+ }
281
323
282
324
module "s3_bucket" {
283
325
source = " ./modules/s3-bucket"
284
326
285
327
count = var. create_s3_bucket_for_alb_logging ? 1 : 0
286
328
329
+ # S3 Bucket
287
330
bucket = var. s3_bucket_name
288
331
bucket_force_destroy = var. s3_bucket_force_destroy
289
332
333
+ # S3 Bucket Policy
290
334
bucket_policies = {
291
335
alb-logs = {
292
336
id = " ${ var . s3_bucket_policy_id_prefix } -logs"
@@ -306,7 +350,7 @@ module "s3_bucket" {
306
350
principals = [
307
351
{
308
352
identifiers = [
309
- data.aws_elb_service_account.this.arn
353
+ local.elb_service_account_arn
310
354
]
311
355
type = " AWS"
312
356
}
@@ -354,24 +398,3 @@ module "s3_bucket" {
354
398
355
399
tags = var. s3_bucket_tags
356
400
}
357
-
358
- # ###############################################################################
359
- # Amazon Certificates Manager Sub-module
360
- # ###############################################################################
361
-
362
- module "acm" {
363
- source = " ./modules/acm"
364
-
365
- for_each = var. create_acm ? var. acm_certificates : {}
366
-
367
- certificate_domain_name = each. value . domain_name
368
- certificate_subject_alternative_names = try (each. value . subject_alternative_names , null )
369
- certificate_validation_method = try (each. value . validation_method , null )
370
- certificate_key_algorithm = try (each. value . key_algorithm , null )
371
- certificate_validation_option = try (each. value . validation_option , null )
372
-
373
- record_zone_id = try (each. value . record_zone_id , null )
374
- record_allow_overwrite = try (each. value . record_allow_overwrite , null )
375
-
376
- tags = try (each. value . tags , {})
377
- }
0 commit comments