ECR · ECS · Fargate · ALB · Canlı Test
| AWS Servisi | Ne Yapar? | Docker Karşılığı |
|---|---|---|
| ECR Elastic Container Registry |
Private image deposu | Docker Hub (özel) |
| ECS Elastic Container Service |
Container çalıştırma ve yönetimi | docker run otomatik |
| Fargate | Sunucu yönetmeden container çalıştır | EC2 olmadan Docker |
| ALB Application Load Balancer |
İstekleri container'lara dağıt | Nginx (yönetilen) |
| EKS Elastic Kubernetes Service |
Yönetilen Kubernetes | K8s cluster |
| Docker Hub | ECR | |
|---|---|---|
| Erişim | Public/Private | Private (IAM) |
| Entegrasyon | Genel | AWS native |
| Güvenlik | Standart | KMS şifreleme |
| Maliyet | Ücretsiz (public) | 0.10$/GB/ay |
# 1. Repository oluştur aws ecr create-repository \ --repository-name image-classifier-api \ --region eu-central-1 # 2. Login aws ecr get-login-password \ --region eu-central-1 | \ docker login --username AWS \ --password-stdin \ $ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com # 3. Tag & Push docker tag image-classifier-api:latest \ $ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/image-classifier-api:latest docker push \ $ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/image-classifier-api:latest
docker build → docker pushaws configure tamamlandı## Değişkenleri ayarla REGION="eu-central-1" ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)" REPO="image-classifier-api" TAG="latest" ECR_URI="$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com" ## ECR'ye login aws ecr get-login-password --region $REGION | \ docker login --username AWS --password-stdin $ECR_URI ## Tag & push docker tag $REPO:$TAG $ECR_URI/$REPO:$TAG docker push $ECR_URI/$REPO:$TAG ## Doğrula aws ecr list-images --repository-name $REPO --region $REGION
| Launch type | AWS Fargate |
| OS | Linux/X86_64 |
| CPU | 1 vCPU |
| Memory | 2 GB |
| Image URI | $ECR_URI/image-classifier-api:latest |
| Container port | 8080 / TCP |
MODEL_PATH = /app/classifier_model.h5AWS_REGION = eu-central-1S3_BUCKET = my-images-bucket
aws ecs register-task-definition \ --family image-classifier-api \ --network-mode awsvpc \ --requires-compatibilities FARGATE \ --cpu "1024" \ --memory "2048" \ --container-definitions '[{ "name": "image-classifier-api", "image": "'$ECR_URI'/image-classifier-api:latest", "portMappings": [ {"containerPort": 8080, "protocol": "tcp"} ], "environment": [ {"name":"MODEL_PATH","value":"/app/classifier_model.h5"}, {"name":"AWS_REGION","value":"eu-central-1"}, {"name":"S3_BUCKET","value":"my-images-bucket"} ] }]'
| Launch type | Fargate |
| Task Definition | image-classifier-api |
| Desired count | 2 |
| VPC | Default VPC |
| Subnets | Min 2 farklı AZ |
| Public IP | Enabled |
/healthmyapp-alb.eu-central-1.elb.amazonaws.com
# 5 container'a ölçekle aws ecs update-service \ --cluster image-classifier-api-cluster \ --service image-classifier-api-service \ --desired-count 5 # Maliyet kontrolü için 2'ye düşür aws ecs update-service \ --cluster image-classifier-api-cluster \ --service image-classifier-api-service \ --desired-count 2
CPU %70'i geçince otomatik ölçekle:
| Ölçekleme | 1 komut / otomatik |
| Yük dağıtımı | ALB (yönetilen) |
| Hata toleransı | Multi-AZ, auto-restart |
| Erişim | Dünya geneli |
{
"result": true,
"skor": 0.94,
"s3_key": "uploads/..."
}
| Fargate (1 vCPU, 2GB) × 2 | ~$0.10/saat |
| ALB | ~$0.02/saat |
| ECR (500MB) | ~$0.05/ay |
| Toplam demo | ~$0.12/saat |
3 saatlik demo ≈ $0.40. Bırakırsanız birikir!
# 1. Service'i durdur aws ecs update-service \ --cluster image-classifier-api-cluster \ --service image-classifier-api-service \ --desired-count 0 # 2. Service & Cluster sil aws ecs delete-service \ --cluster image-classifier-api-cluster \ --service image-classifier-api-service aws ecs delete-cluster \ --cluster image-classifier-api-cluster # 3. ALB: Console → EC2 → Load Balancers # 4. ECR (opsiyonel) aws ecr delete-repository \ --repository-name image-classifier-api --force