11locals {
2+ # ECS Service
3+ ecs_service_launch_type = " EC2"
4+
5+ # ECS Task Definition
6+ ecs_task_definition_requires_compatibilities = [" EC2" ]
7+
28 # ALB
39 alb_access_logs_default_s3_configuration = var. create_s3_bucket_for_alb_logging ? {
410 bucket = module.s3_bucket[0 ].bucket_id
@@ -10,6 +16,7 @@ locals {
1016 enabled = true
1117 prefix = var.s3_bucket_connection_logs_prefix
1218 } : null
19+
1320 alb_target_groups = {
1421 for k , v in try (var. load_balancer . target_groups , {}) :
1522 k = > merge (
@@ -32,6 +39,10 @@ locals {
3239 v
3340 )
3441 }
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
3546}
3647
3748# ###############################################################################
@@ -50,7 +61,7 @@ resource "aws_ecs_service" "this" {
5061 force_new_deployment = try (var. service . force_new_deployment , null )
5162 health_check_grace_period_seconds = try (var. service . health_check_grace_period_seconds , null )
5263 iam_role = try (var. service . iam_role , null )
53- launch_type = " EC2 "
64+ launch_type = local . ecs_service_launch_type
5465 propagate_tags = try (var. service . propagate_tags , null )
5566 scheduling_strategy = try (var. service . scheduling_strategy , null )
5667 task_definition = aws_ecs_task_definition. this . id
@@ -187,7 +198,7 @@ resource "aws_ecs_task_definition" "this" {
187198 memory = try (var. task_definition . memory , null )
188199 network_mode = try (var. task_definition . network_mode , null )
189200 pid_mode = try (var. task_definition . pid_mode , null )
190- requires_compatibilities = [ " EC2 " ]
201+ requires_compatibilities = local . ecs_task_definition_requires_compatibilities
191202 skip_destroy = try (var. task_definition . skip_destroy , null )
192203 task_role_arn = try (var. task_definition . task_role_arn , null )
193204 track_latest = try (var. task_definition . track_latest , null )
@@ -228,19 +239,26 @@ resource "aws_ecs_task_definition" "this" {
228239}
229240
230241# ###############################################################################
231- # Capacity Provider Sub-module
242+ # Amazon Certificates Manager Sub-module
232243# ###############################################################################
233244
234- module "capacity_provider " {
235- source = " ./modules/capacity-provider "
245+ module "acm " {
246+ source = " ./modules/acm "
236247
237- count = var. create_capacity_provider ? 1 : 0
248+ for_each = var. create_acm ? var . acm_certificates : {}
238249
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 )
241256
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 , {})
244262}
245263
246264# ###############################################################################
@@ -252,41 +270,67 @@ module "alb" {
252270
253271 count = var. create_alb ? 1 : 0
254272
273+ # Load Balancer
255274 name = try (var. load_balancer . name , null )
256275 internal = try (var. load_balancer . internal , null )
257276 subnets_ids = try (var. load_balancer . subnets_ids , [])
258277 security_groups_ids = try (var. load_balancer . security_groups_ids , [])
259278 preserve_host_header = try (var. load_balancer . preserve_host_header , null )
260279 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
261282
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
265284 target_groups = local. alb_target_groups
266285
286+ # LB Listener
267287 listeners = local. alb_listeners
268288
289+ # LB Listener Rule
269290 listener_rules = try (var. load_balancer . listener_rules , {})
270291
271292 tags = try (var. load_balancer . tags , {})
272293
273294 depends_on = [module . acm ]
274295}
275296
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+
276316# ###############################################################################
277317# S3 Bucket Sub-module
278318# ###############################################################################
279319
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+ }
281323
282324module "s3_bucket" {
283325 source = " ./modules/s3-bucket"
284326
285327 count = var. create_s3_bucket_for_alb_logging ? 1 : 0
286328
329+ # S3 Bucket
287330 bucket = var. s3_bucket_name
288331 bucket_force_destroy = var. s3_bucket_force_destroy
289332
333+ # S3 Bucket Policy
290334 bucket_policies = {
291335 alb-logs = {
292336 id = " ${ var . s3_bucket_policy_id_prefix } -logs"
@@ -306,7 +350,7 @@ module "s3_bucket" {
306350 principals = [
307351 {
308352 identifiers = [
309- data.aws_elb_service_account.this.arn
353+ local.elb_service_account_arn
310354 ]
311355 type = " AWS"
312356 }
@@ -354,24 +398,3 @@ module "s3_bucket" {
354398
355399 tags = var. s3_bucket_tags
356400}
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