1
- data "aws_caller_identity" "current " {
2
- }
1
+ data "aws_caller_identity" "this " {}
2
+ data "aws_region" "this" { }
3
3
4
- data "aws_region" "current" {
5
- }
6
4
/* -------------------------------------------------------------------------- */
7
5
/* Generics */
8
6
/* -------------------------------------------------------------------------- */
9
7
locals {
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
11
9
12
10
# Task Role
13
11
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 {
22
20
ecs_task_execution_role_policy_arns = toset (concat (var. additional_ecs_task_execution_role_policy_arns , local. ecs_default_task_execution_role_policy_arns ))
23
21
24
22
# Logging
25
- log_group_name = format (" %s-service-log-group" , local. service_name )
23
+ log_group_name = format (" %s-service-log-group" , local. name )
26
24
27
25
# Volume
28
26
volumes = concat (var. efs_volumes )
@@ -32,7 +30,7 @@ locals {
32
30
apm_name = " xray-apm-sidecar"
33
31
34
32
# 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 } "
36
34
37
35
38
36
tags = merge (
@@ -57,6 +55,11 @@ locals {
57
55
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"
58
56
59
57
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
60
63
}
61
64
62
65
/* -------------------------------------------------------------------------- */
@@ -71,54 +74,37 @@ locals {
71
74
] : []
72
75
mount_points = concat (local. mount_points_application_scratch , try (var. service_info . mount_points , []))
73
76
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 ))
122
108
}
123
109
124
110
/* -------------------------------------------------------------------------- */
@@ -129,11 +115,11 @@ locals {
129
115
secret_manager_arns = [for secret in aws_secretsmanager_secret . service_secrets : secret . arn ]
130
116
131
117
# Get Secret Name Arrays
132
- secret_names = keys (var. secrets )
118
+ secret_names = keys (var. secret_variables )
133
119
134
120
# Create a secret map { secret_name : secret_arn } using ZipMap Function for iteration
135
121
secrets_name_arn_map = zipmap (local. secret_names , local. secret_manager_arns )
136
- #
122
+
137
123
# Create secrets format for Task Definition
138
124
secrets_task_unique_definition = [for secret_key , secret_arn in local . secrets_name_arn_map :
139
125
tomap ({
0 commit comments