|
|
|
locals {
|
|
|
|
api_name = "${var.project}-api"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_ecs_cluster" "my_cluster" {
|
|
|
|
name = "my_cluster"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_ecs_service" "api_ecs" {
|
|
|
|
name = local.api_name
|
|
|
|
task_definition = aws_ecs_task_definition.api_task.arn
|
|
|
|
cluster = aws_ecs_cluster.my_cluster.id
|
|
|
|
launch_type = "FARGATE"
|
|
|
|
load_balancer {
|
|
|
|
target_group_arn = aws_lb_target_group.api_lb_target.arn
|
|
|
|
container_name = local.api_name
|
|
|
|
container_port = "3000"
|
|
|
|
}
|
|
|
|
desired_count = 1
|
|
|
|
network_configuration {
|
|
|
|
assign_public_ip = false
|
|
|
|
security_groups = [
|
|
|
|
aws_security_group.egress_all.id,
|
|
|
|
aws_security_group.ingress_api.id,
|
|
|
|
]
|
|
|
|
subnets = [for s in aws_subnet.private_subnet : s.id]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_ecs_task_definition" "api_task" {
|
|
|
|
family = local.api_name
|
|
|
|
execution_role_arn = aws_iam_role.api_exec_role.arn
|
|
|
|
cpu = 256
|
|
|
|
memory = 512
|
|
|
|
requires_compatibilities = ["FARGATE"]
|
|
|
|
network_mode = "awsvpc"
|
|
|
|
|
|
|
|
container_definitions = jsonencode([{
|
|
|
|
name: "${local.api_name}",
|
|
|
|
image: "${var.container_image}",
|
|
|
|
portMappings : [
|
|
|
|
{
|
|
|
|
containerPort : 3000
|
|
|
|
}
|
|
|
|
],
|
|
|
|
logConfiguration : {
|
|
|
|
logDriver : "awslogs",
|
|
|
|
options : {
|
|
|
|
awslogs-region : "${var.region}",
|
|
|
|
awslogs-group : "/ecs/${local.api_name}",
|
|
|
|
awslogs-stream-prefix : "ecs"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}])
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_cloudwatch_log_group" "log_group" {
|
|
|
|
name = "/ecs/${local.api_name}"
|
|
|
|
}
|