Deployment Options
CVAT can be deployed on AWS in multiple ways:- EC2 with Docker Compose: Simple deployment on a single instance
- EC2 with GPU (P3 instances): For auto-annotation with TensorFlow models
- Amazon EKS: Production Kubernetes deployment
- Hybrid: EKS with managed AWS services (RDS, ElastiCache, EFS)
EC2 Deployment
Prerequisites
- AWS account with appropriate permissions
- AWS CLI installed and configured
- SSH key pair created in your AWS region
1. Launch EC2 Instance
Instance Types:| Use Case | Instance Type | vCPU | RAM | Storage |
|---|---|---|---|---|
| Development/Testing | t3.large | 2 | 8GB | 50GB |
| Small Production | t3.xlarge | 4 | 16GB | 100GB |
| Medium Production | m5.2xlarge | 8 | 32GB | 200GB |
| With GPU (Auto-annotation) | p3.2xlarge | 8 | 61GB | 200GB |
2. Configure Security Group
Allow incoming traffic on required ports:- Navigate to EC2 → Security Groups
- Create security group with inbound rules:
- SSH (22): Your IP or 0.0.0.0/0
- HTTP (80): 0.0.0.0/0
- HTTPS (443): 0.0.0.0/0
- Custom TCP (8080): 0.0.0.0/0 (if needed)
3. Connect and Install Docker
4. Deploy CVAT
5. Access CVAT
6. Optional: Configure HTTPS
For production with SSL:GPU Instance Deployment (P3)
For Auto-Annotation with TensorFlow
P3 instances provide NVIDIA GPUs for running deep learning models.1. Launch P3 Instance
2. Install NVIDIA Drivers
3. Install NVIDIA Container Toolkit
4. Deploy CVAT with Serverless Functions
EKS Deployment
Prerequisites
- eksctl installed
- kubectl installed
- AWS CLI configured
1. Create EKS Cluster
2. Configure kubectl
3. Install Storage Driver
4. Install CVAT with Helm
5. Configure Load Balancer
AWS Managed Services Integration
Using Amazon RDS for PostgreSQL
1. Create RDS Instance:Using Amazon ElastiCache for Redis
1. Create ElastiCache Cluster:Using Amazon EFS for Shared Storage
1. Create EFS:Using Amazon S3 for Storage
Configure CVAT to use S3 for dataset storage:Cost Optimization
1. Use Spot Instances
For EKS worker nodes:2. Auto-Scaling
3. Use Reserved Instances
For stable workloads, purchase Reserved Instances for cost savings.4. S3 Lifecycle Policies
Handling Instance Restarts
Problem
AWS EC2 instances change public IP/hostname when stopped and restarted.Solutions
1. Use Elastic IP:Monitoring and Logging
CloudWatch Integration
1. Install CloudWatch Agent:Application Monitoring
CVAT includes Grafana for analytics:Backup and Disaster Recovery
Automated Backups
RDS: Automatic backups enabled (7-35 days retention) EBS Snapshots:Troubleshooting
Instance Metadata Issues
Security Group Misconfig
Storage Full
Security Best Practices
- Use IAM roles instead of access keys
- Enable VPC for database and cache isolation
- Use Secrets Manager for credentials
- Enable AWS WAF for ingress protection
- Regular security patches with Systems Manager
- Enable CloudTrail for audit logging
- Use private subnets for EKS worker nodes
- Encrypt EBS volumes and S3 buckets