BagelHole

aws-ecs-fargate

Deploy containers on ECS and Fargate. Configure task definitions, services, and load balancing. Use when running containerized workloads on AWS.

BagelHole 807 104 Updated 7mo ago
GitHub

Install

npx skillscat add bagelhole/devops-security-agent-skills/aws-ecs-fargate

Install via the SkillsCat registry.

SKILL.md

AWS ECS & Fargate

Run containerized applications on Amazon ECS with Fargate.

Task Definition

{
  "family": "myapp",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "executionRoleArn": "arn:aws:iam::xxx:role/ecsTaskExecutionRole",
  "containerDefinitions": [{
    "name": "myapp",
    "image": "xxx.dkr.ecr.region.amazonaws.com/myapp:latest",
    "portMappings": [{
      "containerPort": 8080,
      "protocol": "tcp"
    }],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "/ecs/myapp",
        "awslogs-region": "us-east-1",
        "awslogs-stream-prefix": "ecs"
      }
    }
  }]
}

Create Service

aws ecs create-service \
  --cluster my-cluster \
  --service-name myapp \
  --task-definition myapp:1 \
  --desired-count 2 \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-xxx"],
      "securityGroups": ["sg-xxx"],
      "assignPublicIp": "ENABLED"
    }
  }' \
  --load-balancers '[{
    "targetGroupArn": "arn:aws:elasticloadbalancing:...",
    "containerName": "myapp",
    "containerPort": 8080
  }]'

Deployment

# Update service
aws ecs update-service \
  --cluster my-cluster \
  --service myapp \
  --task-definition myapp:2 \
  --force-new-deployment

Best Practices

  • Use ECR for images
  • Implement service discovery
  • Configure health checks
  • Use secrets manager for secrets
  • Enable container insights

Related Skills