# Deploy ECS service with CPU-based auto-scaling
module "scalable_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "worker-service"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.worker.arn
desired_count = 2
network_configuration = {
subnets = var.private_subnet_ids
security_groups = [aws_security_group.ecs_tasks.id]
assign_public_ip = false
}
autoscaling = {
min_capacity = 2
max_capacity = 10
target_cpu_percent = 70
}
}
# Deploy ECS service with memory-based auto-scaling
module "memory_scaled_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "cache-service"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.cache.arn
desired_count = 3
network_configuration = {
subnets = var.private_subnet_ids
security_groups = [aws_security_group.ecs_tasks.id]
assign_public_ip = false
}
autoscaling = {
min_capacity = 3
max_capacity = 20
target_memory_percent = 80
}
}
# Deploy ECS service with request count scaling (ALB)
module "request_scaled_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "api-service"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.api.arn
desired_count = 2
load_balancer = {
target_group_arn = aws_lb_target_group.api.arn
container_name = "api"
container_port = 8080
}
network_configuration = {
subnets = var.private_subnet_ids
security_groups = [aws_security_group.ecs_tasks.id]
assign_public_ip = false
}
autoscaling = {
min_capacity = 2
max_capacity = 50
target_requests_per_target = 1000
scale_in_cooldown = 300
scale_out_cooldown = 60
}
}