1- data "aws_caller_identity" "current " {
2- }
1+ data "aws_caller_identity" "this " {}
2+ data "aws_region" "this" { }
33
4- data "aws_region" "current" {
5- }
64/* -------------------------------------------------------------------------- */
75/* Generics */
86/* -------------------------------------------------------------------------- */
97locals {
10- service_name = format (" %s-%s-%s" , var. prefix , var. environment , var. name )
8+ name = var . name_override == " " ? format (" %s-%s-%s" , var. prefix , var. environment , var. name ) : var . name_override
119
1210 # Task Role
1311 task_role_arn = var. is_create_iam_role ? aws_iam_role. task_role [0 ]. arn : var. exists_task_role_arn
@@ -22,7 +20,7 @@ locals {
2220 ecs_task_execution_role_policy_arns = toset (concat (var. additional_ecs_task_execution_role_policy_arns , local. ecs_default_task_execution_role_policy_arns ))
2321
2422 # Logging
25- log_group_name = format (" %s-service-log-group" , local. service_name )
23+ log_group_name = format (" %s-service-log-group" , local. name )
2624
2725 # Volume
2826 volumes = concat (var. efs_volumes )
@@ -32,7 +30,7 @@ locals {
3230 apm_name = " xray-apm-sidecar"
3331
3432 # ECS Service
35- ecs_cluster_arn = " arn:aws:ecs:${ data . aws_region . current . name } :${ data . aws_caller_identity . current . account_id } :cluster/${ var . ecs_cluster_name } "
33+ ecs_cluster_arn = " arn:aws:ecs:${ data . aws_region . this . name } :${ data . aws_caller_identity . this . account_id } :cluster/${ var . ecs_cluster_name } "
3634
3735
3836 tags = merge (
@@ -57,6 +55,11 @@ locals {
5755 raise_alb_listener_arn_empty = var. is_attach_service_with_lb && length (var. alb_listener_arn ) == 0 ? file (" Variable `alb_listener_arn` is required when `is_attach_service_with_lb` is true" ) : " pass"
5856
5957 raise_enable_exec_on_cp = var. is_enable_execute_command && var. capacity_provider_strategy != null ? file (" Canot set `is_enable_execute_command` with `capacity_provider_strategy`. Please enabled SSM at EC2 instance profile instead" ) : " pass"
58+
59+ empty_prefix = var. prefix == " " ? true : false
60+ empty_environment = var. environment == " " ? true : false
61+ empty_name = var. name == " " ? true : false
62+ raise_empty_name = local. name == " " && (local. empty_prefix || local. empty_environment || local. empty_name ) ? file (" `var.name_override` or (`var.prefix`, `var.environment` and `var.name is required`) " ) : null
6063}
6164
6265/* -------------------------------------------------------------------------- */
@@ -71,54 +74,37 @@ locals {
7174 ] : []
7275 mount_points = concat (local. mount_points_application_scratch , try (var. service_info . mount_points , []))
7376
74- # TODO make it better later
75- container_definitions = local. is_apm_enabled ? templatefile (" ${ path . module } /task-definitions/service-with-sidecar-container.json" , {
76- cpu = var.service_info.cpu_allocation
77- service_image = var.service_info.image
78- memory = var.service_info.mem_allocation
79- log_group_name = local.log_group_name
80- region = data.aws_region.current.name
81- service_name = local.service_name
82- service_port = var.service_info.port
83- envvars = jsonencode (var. envvars )
84- secrets_task_definition = jsonencode (local. secrets_task_definition )
85- apm_cpu = var.apm_config.cpu
86- apm_sidecar_ecr_url = var.apm_sidecar_ecr_url
87- apm_memory = var.apm_config.memory
88- apm_name = local.apm_name
89- apm_service_port = var.apm_config.service_port
90- entry_point = jsonencode (var. entry_point )
91- command = jsonencode (var. command )
92- mount_points = jsonencode (local. mount_points )
93- }) : templatefile (" ${ path . module } /task-definitions/service-main-container.json" , {
94- cpu = var.service_info.cpu_allocation
95- service_image = var.service_info.image
96- memory = var.service_info.mem_allocation
97- log_group_name = local.log_group_name
98- region = data.aws_region.current.name
99- service_name = local.service_name
100- service_port = var.service_info.port
101- envvars = jsonencode (var. envvars )
102- secrets_task_definition = jsonencode (local. secrets_task_definition )
103- entry_point = jsonencode (var. entry_point )
104- command = jsonencode (var. command )
105- mount_points = jsonencode (local. mount_points )
106- })
107- container_definitions_ec2 = templatefile (" ${ path . module } /task-definitions/service-main-container-ec2.json" , {
108- cpu = var.service_info.cpu_allocation
109- service_image = var.service_info.image
110- memory = var.service_info.mem_allocation
111- log_group_name = local.log_group_name
112- region = data.aws_region.current.name
113- service_name = local.service_name
114- service_port = var.service_info.port
115- envvars = jsonencode (var. envvars )
116- secrets_task_definition = jsonencode (local. secrets_task_definition )
117- entry_point = jsonencode (var. entry_point )
118- command = jsonencode (var. command )
119- unix_max_connection = tostring (var. unix_max_connection )
120- mount_points = jsonencode (local. mount_points )
121- })
77+ environment_variables = [for key , value in var . environment_variables : { " name" = key, " value" = value }]
78+
79+ pre_container_definitions_template = {
80+ cpu = var.service_info.cpu_allocation
81+ service_image = var.service_info.image
82+ memory = var.service_info.mem_allocation
83+ log_group_name = local.log_group_name
84+ region = data.aws_region.this.name
85+ name = local.name
86+ service_port = var.service_info.port
87+ environment_variables = jsonencode (local. environment_variables )
88+ secret_variables = jsonencode (local. secrets_task_unique_definition )
89+ entry_point = jsonencode (var. entry_point )
90+ mount_points = jsonencode (local. mount_points )
91+ command = jsonencode (var. command )
92+ }
93+ apm_template = {
94+ apm_cpu = var.apm_config.cpu
95+ apm_sidecar_ecr_url = var.apm_sidecar_ecr_url
96+ apm_memory = var.apm_config.memory
97+ apm_name = local.apm_name
98+ apm_service_port = var.apm_config.service_port
99+ }
100+ ec2_template = {
101+ unix_max_connection = tostring (var. unix_max_connection )
102+ }
103+ container_definitions_template = local. is_apm_enabled ? merge (local. pre_container_definitions_template , local. apm_template ) : local. pre_container_definitions_template
104+ render_container_definitions = local. is_apm_enabled ? templatefile (" ${ path . module } /task-definitions/service-with-sidecar-container.json" , local. container_definitions_template ) : templatefile (" ${ path . module } /task-definitions/service-main-container.json" , local. container_definitions_template )
105+
106+ container_definitions = local. render_container_definitions
107+ container_definitions_ec2 = templatefile (" ${ path . module } /task-definitions/service-main-container-ec2.json" , merge (local. pre_container_definitions_template , local. ec2_template ))
122108}
123109
124110/* -------------------------------------------------------------------------- */
@@ -129,11 +115,11 @@ locals {
129115 secret_manager_arns = [for secret in aws_secretsmanager_secret . service_secrets : secret . arn ]
130116
131117 # Get Secret Name Arrays
132- secret_names = keys (var. secrets )
118+ secret_names = keys (var. secret_variables )
133119
134120 # Create a secret map { secret_name : secret_arn } using ZipMap Function for iteration
135121 secrets_name_arn_map = zipmap (local. secret_names , local. secret_manager_arns )
136- #
122+
137123 # Create secrets format for Task Definition
138124 secrets_task_unique_definition = [for secret_key , secret_arn in local . secrets_name_arn_map :
139125 tomap ({
0 commit comments