ecs-service
Terraform module for ecs-service on aws
module "ecs_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "0.1.0"
# Required inputs
service_name = "..."
cluster_arn = "..."
task_definition_arn = "..."
}Overview
The ecs-service module deploys AWS ECS services with production-ready defaults including:
- Automatic load balancer registration with ALB/NLB
- Auto-scaling policies based on CPU, memory, or custom metrics
- AWS Cloud Map service discovery integration
- Blue/green deployment support with CodeDeploy
- Rolling deployment with configurable health checks
Category: Compute Provider: AWS Latest Version: 2.0.0
Quick Start
module "web_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "web-app"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.web.arn
desired_count = 2
}
Key Features
Load Balancer Integration
Automatically register tasks with an Application Load Balancer:
module "api_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "api-backend"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.api.arn
desired_count = 3
load_balancer = {
target_group_arn = aws_lb_target_group.api.arn
container_name = "api"
container_port = 8080
}
}
Auto-Scaling
Scale your service based on demand:
module "scalable_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "worker"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.worker.arn
desired_count = 2
autoscaling = {
min_capacity = 2
max_capacity = 10
target_cpu_percent = 70
}
}
Service Discovery
Enable service-to-service communication with AWS Cloud Map:
module "backend_service" {
source = "registry.patterneddesigns.ca/patterneddesigns/ecs-service/aws"
version = "2.0.0"
service_name = "backend"
cluster_arn = aws_ecs_cluster.main.arn
task_definition_arn = aws_ecs_task_definition.backend.arn
desired_count = 2
service_discovery = {
namespace_id = aws_service_discovery_private_dns_namespace.main.id
dns_name = "backend"
}
}
Documentation
- Inputs - All input parameters
- Outputs - Output values
- Examples - Usage examples
- Use Cases - Common deployment patterns
Registry
Inputs
The name of the ECS service. Must be unique within your ECS cluster.
ARN of the ECS cluster. Reference from another resource or data source.
ARN of the task definition. Reference from aws_ecs_task_definition resource.
Desired number of tasks. Minimum 1 for development, 2+ for high availability in production.
Outputs
ARN of the ECS service. Use this for IAM policies and service discovery.
Name of the ECS service. Matches the input service_name.