aws-ecs
AWS ECS
Manage ECS clusters, services, and tasks.
Environment Variables
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY- AWS credentialsAWS_DEFAULT_REGION- Region
List clusters
aws ecs list-clusters --query 'clusterArns[]' --output table
Describe cluster
aws ecs describe-clusters --clusters my-cluster --query 'clusters[].{Name:clusterName,Status:status,Running:runningTasksCount,Pending:pendingTasksCount,Services:activeServicesCount}' --output table
List services
aws ecs list-services --cluster my-cluster --query 'serviceArns[]' --output table
Describe service
aws ecs describe-services --cluster my-cluster --services my-service --query 'services[].{Name:serviceName,Status:status,Running:runningCount,Desired:desiredCount,TaskDef:taskDefinition}' --output table
Update service (force new deployment)
aws ecs update-service --cluster my-cluster --service my-service --force-new-deployment | jq '{serviceName: .service.serviceName, desiredCount: .service.desiredCount}'
Scale service
aws ecs update-service --cluster my-cluster --service my-service --desired-count 3 | jq '{serviceName: .service.serviceName, desiredCount: .service.desiredCount}'
List tasks
aws ecs list-tasks --cluster my-cluster --service-name my-service --query 'taskArns[]' --output table
Describe tasks
aws ecs describe-tasks --cluster my-cluster --tasks $(aws ecs list-tasks --cluster my-cluster --service-name my-service --query 'taskArns[0]' --output text) --query 'tasks[].{TaskId:taskArn,Status:lastStatus,Health:healthStatus,StartedAt:startedAt}' --output table
View task logs
aws logs tail /ecs/my-service --since 30m --format short
Describe task definition
aws ecs describe-task-definition --task-definition my-task-def --query 'taskDefinition.{Family:family,Revision:revision,Cpu:cpu,Memory:memory,Containers:containerDefinitions[].{Name:name,Image:image,Cpu:cpu,Memory:memory}}' | jq .
List task definition revisions
aws ecs list-task-definitions --family-prefix my-task-def --sort DESC --query 'taskDefinitionArns[:5]' --output table
Run standalone task
aws ecs run-task --cluster my-cluster --task-definition my-task-def --count 1 --launch-type FARGATE \
--network-configuration 'awsvpcConfiguration={subnets=[subnet-xxx],securityGroups=[sg-xxx],assignPublicIp=ENABLED}' | jq '.tasks[].taskArn'
Notes
- Use
--force-new-deploymentto trigger a rolling update with the same task definition. - Confirm before scaling, updating, or stopping services.
- Fargate tasks require network configuration; EC2 launch type may not.
More from thinkfleetai/thinkfleet-engine
local-whisper
Local speech-to-text using OpenAI Whisper. Runs fully offline after model download. High quality transcription with multiple model sizes.
148flyio-cli-public
Use the Fly.io flyctl CLI for deploying and operating apps on Fly.io: deploys (local or remote builder), viewing status/logs, SSH/console, secrets/config, scaling, machines, volumes, and Fly Postgres (create/attach/manage databases). Use when asked to deploy to Fly.io, debug fly deploy/build/runtime failures, set up GitHub Actions deploys/previews, or safely manage Fly apps and Postgres.
24kagi-search
Web search using Kagi Search API. Use when you need to search the web for current information, facts, or references. Requires KAGI_API_KEY in the environment.
22feishu-bridge
Connect a Feishu (Lark) bot to ThinkFleet via WebSocket long-connection. No public server, domain, or ngrok required. Use when setting up Feishu/Lark as a messaging channel, troubleshooting the Feishu bridge, or managing the bridge service (start/stop/logs). Covers bot creation on Feishu Open Platform, credential setup, bridge startup, macOS launchd auto-restart, and group chat behavior tuning.
13bambu-local
Control Bambu Lab 3D printers locally via MQTT (no cloud). Supports A1, A1 Mini, P1P, P1S, X1C.
10voice-transcribe
Transcribe audio files using OpenAI's gpt-4o-mini-transcribe model with vocabulary hints and text replacements. Requires uv (https://docs.astral.sh/uv/).
10