AWS ECS Provider
A Story of Labels & Elastic Containers Attach labels to your AWS ECS tasks and let Traefik automatically discover and route traffic. The ECS provider integrates with Amazon Elastic Container Service for seamless service discovery in AWS.Quick Start
Set Up IAM Permissions
Create an IAM policy for Traefik:Attach to Traefik’s task role or instance role.
ecs-policy.json
How It Works
The ECS provider:- Polls ECS clusters at configured intervals
- Lists running tasks in specified clusters
- Reads task labels from container definitions
- Discovers task IPs from ENIs or container instances
- Creates routes dynamically based on labels
- Updates on changes when tasks start/stop
Provider Configuration
autoDiscoverClusters
Default:false
Automatically discover all ECS clusters:
false, only configured clusters are watched.
clusters
Default:["default"]
Specific clusters to watch:
Ignored when
autoDiscoverClusters: true.region
Optional, Default: Auto-detected AWS region:- EC2 metadata (for EC2 tasks)
AWS_REGIONenvironment variable (for Fargate)
accessKeyID / secretAccessKey
Optional, Default: Auto-detected Explicit AWS credentials:exposedByDefault
Default:true
Expose all tasks by default:
constraints
Optional, Default:""
Filter tasks by labels:
healthyTasksOnly
Default:false
Only discover healthy tasks:
HEALTHY health status.
refreshSeconds
Default:15
Polling interval in seconds:
defaultRule
Default:Host(`{{ normalize .Name }}`)
Default routing rule:
ecsAnywhere
Default:false
Enable ECS Anywhere support:
Requires
ssm:DescribeInstanceInformation IAM permission.Task Definition Examples
Basic Web Service
Service with Middleware
Multiple Containers per Task
Complete Setup Example
Network Modes
AWSVPC (Fargate / EC2)
Tasks get their own ENI with private IP:Bridge (EC2 only)
Port mapping with dynamic host ports:Host (EC2 only)
Direct host networking:Advanced Patterns
Blue-Green Deployments
Canary Deployments
Multi-Region Setup
Troubleshooting
Tasks Not Discovered
Network Connectivity Issues
- AWSVPC: Verify security groups allow traffic between Traefik and tasks
- Bridge: Check container instance security groups
- Fargate: Ensure tasks are in same VPC/subnets
Port Detection
Explicitly set port if auto-detection fails:Best Practices
Next Steps
ECS Routing
Detailed ECS label configuration
AWS ECS Docs
Official AWS ECS documentation