-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathecs.tf
108 lines (95 loc) · 4.51 KB
/
ecs.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
locals {
auto_scaling_group_arns = {
ai = module.auto_scaling["ai"].asg_arn
be = module.auto_scaling["be"].asg_arn
fe = module.auto_scaling["fe"].asg_arn
}
}
module "capacity_providers" {
source = "../modules/ecs/capacity_provider"
for_each = var.capacity_providers
name = each.value.name
auto_scaling_group_arn = local.auto_scaling_group_arns[each.key]
managed_termination_protection = each.value.managed_termination_protection
maximum_scaling_step_size = each.value.maximum_scaling_step_size
minimum_scaling_step_size = each.value.minimum_scaling_step_size
scaling_status = each.value.scaling_status
target_capacity = each.value.target_capacity
}
# 생성된 Capacity Provider들을 ECS 클러스터에 연결
resource "aws_ecs_cluster_capacity_providers" "cluster_providers" {
cluster_name = module.ecs_cluster.cluster_name
capacity_providers = values(module.capacity_providers)[*].name # 모든 Capacity Provider 이름 연결
}
# ECS 모듈 호출
# AI 파트
module "ecs_ai" {
source = "../modules/ecs"
cluster_id = module.ecs_cluster.cluster_id
cluster_name = module.ecs_cluster.cluster_name
task_family_name = var.ecs_ai_config.task_family_name
desired_count = var.ecs_ai_config.desired_count
subnet_ids = module.vpc.private_subnet_ids
security_group_ids = [module.auto_scaling_ai_security_group.security_group_id]
service_name = var.ecs_ai_config.service_name
execution_role_arn = module.ecs_execution_role.iam_role_arn
part_capacity_provider = module.capacity_providers["ai"].name # AI 서비스의 Capacity Provider
containers = var.ecs_ai_config.containers
load_balancers = [
{
target_group_arn = module.target_group["ai1"].target_group_arn
container_name = "ai-container-peter"
container_port = 5000
},
{
target_group_arn = module.target_group["ai2"].target_group_arn
container_name = "ai-container-simon"
container_port = 5001
}
]
depends_on = [module.multiple_ssm_parameters, module.spring_DB_URL, module.ai_DB_URL, module.CLOUD_DB]
}
# BE 파트
module "ecs_be" {
source = "../modules/ecs"
cluster_id = module.ecs_cluster.cluster_id
cluster_name = module.ecs_cluster.cluster_name
task_family_name = var.ecs_backend_config.task_family_name
desired_count = var.ecs_backend_config.desired_count
subnet_ids = module.vpc.private_subnet_ids
security_group_ids = [module.auto_scaling_be_security_group.security_group_id]
service_name = var.ecs_backend_config.service_name
execution_role_arn = module.ecs_execution_role.iam_role_arn
part_capacity_provider = module.capacity_providers["be"].name # BE 서비스의 Capacity Provider
containers = var.ecs_backend_config.containers
load_balancers = [
{
target_group_arn = module.target_group["Backend"].target_group_arn
container_name = var.ecs_backend_config.containers[0].name
container_port = var.ecs_backend_config.containers[0].portMappings[0].containerPort
}
]
depends_on = [module.multiple_ssm_parameters, module.spring_DB_URL, module.ai_DB_URL, module.CLOUD_DB]
}
# FE 파트
module "ecs_fe" {
source = "../modules/ecs"
cluster_id = module.ecs_cluster.cluster_id
cluster_name = module.ecs_cluster.cluster_name
task_family_name = var.ecs_frontend_config.task_family_name
desired_count = var.ecs_frontend_config.desired_count
subnet_ids = module.vpc.public_subnet_ids
security_group_ids = [module.auto_scaling_fe_security_group.security_group_id]
service_name = var.ecs_frontend_config.service_name
execution_role_arn = module.ecs_execution_role.iam_role_arn
part_capacity_provider = module.capacity_providers["fe"].name # FE 서비스의 Capacity Provider
containers = var.ecs_frontend_config.containers
load_balancers = [
{
target_group_arn = module.target_group["Frontend"].target_group_arn
container_name = var.ecs_frontend_config.containers[0].name
container_port = var.ecs_frontend_config.containers[0].portMappings[0].containerPort
}
]
depends_on = [module.multiple_ssm_parameters, module.spring_DB_URL, module.ai_DB_URL, module.CLOUD_DB]
}