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}" }