{"id":"7fd20d7c-f9a9-40b7-bfcd-a7b2331dfd13","shortId":"wNg4T9","kind":"skill","title":"ecs","tagline":"AWS ECS container orchestration for running Docker containers. Use when deploying containerized applications, configuring task definitions, setting up services, managing clusters, or troubleshooting container issues.","description":"# AWS ECS\n\nAmazon Elastic Container Service (ECS) is a fully managed container orchestration service. Run containers on AWS Fargate (serverless) or EC2 instances.\n\n## Table of Contents\n\n- [Core Concepts](#core-concepts)\n- [Common Patterns](#common-patterns)\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n\n## Core Concepts\n\n### Cluster\n\nLogical grouping of tasks or services. Can contain Fargate tasks, EC2 instances, or both.\n\n### Task Definition\n\nBlueprint for your application. Defines containers, resources, networking, and IAM roles.\n\n### Task\n\nRunning instance of a task definition. Can run standalone or as part of a service.\n\n### Service\n\nMaintains desired count of tasks. Handles deployments, load balancing, and auto scaling.\n\n### Launch Types\n\n| Type | Description | Use Case |\n|------|-------------|----------|\n| **Fargate** | Serverless, pay per task | Most workloads |\n| **EC2** | Self-managed instances | GPU, Windows, specific requirements |\n\n## Common Patterns\n\n### Create a Fargate Cluster\n\n**AWS CLI:**\n\n```bash\n# Create cluster\naws ecs create-cluster --cluster-name my-cluster\n\n# With capacity providers\naws ecs create-cluster \\\n  --cluster-name my-cluster \\\n  --capacity-providers FARGATE FARGATE_SPOT \\\n  --default-capacity-provider-strategy \\\n    capacityProvider=FARGATE,weight=1 \\\n    capacityProvider=FARGATE_SPOT,weight=1\n```\n\n### Register Task Definition\n\n```bash\ncat > task-definition.json << 'EOF'\n{\n  \"family\": \"web-app\",\n  \"networkMode\": \"awsvpc\",\n  \"requiresCompatibilities\": [\"FARGATE\"],\n  \"cpu\": \"256\",\n  \"memory\": \"512\",\n  \"executionRoleArn\": \"arn:aws:iam::123456789012:role/ecsTaskExecutionRole\",\n  \"taskRoleArn\": \"arn:aws:iam::123456789012:role/ecsTaskRole\",\n  \"containerDefinitions\": [\n    {\n      \"name\": \"web\",\n      \"image\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:latest\",\n      \"portMappings\": [\n        {\n          \"containerPort\": 8080,\n          \"protocol\": \"tcp\"\n        }\n      ],\n      \"environment\": [\n        {\"name\": \"NODE_ENV\", \"value\": \"production\"}\n      ],\n      \"secrets\": [\n        {\n          \"name\": \"DB_PASSWORD\",\n          \"valueFrom\": \"arn:aws:secretsmanager:us-east-1:123456789012:secret:db-password\"\n        }\n      ],\n      \"logConfiguration\": {\n        \"logDriver\": \"awslogs\",\n        \"options\": {\n          \"awslogs-group\": \"/ecs/web-app\",\n          \"awslogs-region\": \"us-east-1\",\n          \"awslogs-stream-prefix\": \"ecs\"\n        }\n      },\n      \"healthCheck\": {\n        \"command\": [\"CMD-SHELL\", \"curl -f http://localhost:8080/health || exit 1\"],\n        \"interval\": 30,\n        \"timeout\": 5,\n        \"retries\": 3,\n        \"startPeriod\": 60\n      }\n    }\n  ]\n}\nEOF\n\naws ecs register-task-definition --cli-input-json file://task-definition.json\n```\n\n### Create Service with Load Balancer\n\n```bash\naws ecs create-service \\\n  --cluster my-cluster \\\n  --service-name web-service \\\n  --task-definition web-app:1 \\\n  --desired-count 2 \\\n  --launch-type FARGATE \\\n  --network-configuration \"awsvpcConfiguration={\n    subnets=[subnet-12345678,subnet-87654321],\n    securityGroups=[sg-12345678],\n    assignPublicIp=DISABLED\n  }\" \\\n  --load-balancers \"targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/web-tg/1234567890123456,containerName=web,containerPort=8080\" \\\n  --health-check-grace-period-seconds 60\n```\n\n### Run Standalone Task\n\n```bash\naws ecs run-task \\\n  --cluster my-cluster \\\n  --task-definition my-batch-job:1 \\\n  --launch-type FARGATE \\\n  --network-configuration \"awsvpcConfiguration={\n    subnets=[subnet-12345678],\n    securityGroups=[sg-12345678],\n    assignPublicIp=ENABLED\n  }\"\n```\n\n### Update Service (Deploy New Image)\n\n```bash\n# Register new task definition with updated image\naws ecs register-task-definition --cli-input-json file://task-definition.json\n\n# Update service to use new version\naws ecs update-service \\\n  --cluster my-cluster \\\n  --service web-service \\\n  --task-definition web-app:2 \\\n  --force-new-deployment\n```\n\n### Auto Scaling\n\n```bash\n# Register scalable target\naws application-autoscaling register-scalable-target \\\n  --service-namespace ecs \\\n  --resource-id service/my-cluster/web-service \\\n  --scalable-dimension ecs:service:DesiredCount \\\n  --min-capacity 2 \\\n  --max-capacity 10\n\n# Target tracking policy\naws application-autoscaling put-scaling-policy \\\n  --service-namespace ecs \\\n  --resource-id service/my-cluster/web-service \\\n  --scalable-dimension ecs:service:DesiredCount \\\n  --policy-name cpu-target-tracking \\\n  --policy-type TargetTrackingScaling \\\n  --target-tracking-scaling-policy-configuration '{\n    \"TargetValue\": 70.0,\n    \"PredefinedMetricSpecification\": {\n      \"PredefinedMetricType\": \"ECSServiceAverageCPUUtilization\"\n    },\n    \"ScaleOutCooldown\": 60,\n    \"ScaleInCooldown\": 120\n  }'\n```\n\n## CLI Reference\n\n### Cluster Management\n\n| Command | Description |\n|---------|-------------|\n| `aws ecs create-cluster` | Create cluster |\n| `aws ecs describe-clusters` | Get cluster details |\n| `aws ecs list-clusters` | List clusters |\n| `aws ecs delete-cluster` | Delete cluster |\n\n### Task Definitions\n\n| Command | Description |\n|---------|-------------|\n| `aws ecs register-task-definition` | Create task definition |\n| `aws ecs describe-task-definition` | Get task definition |\n| `aws ecs list-task-definitions` | List task definitions |\n| `aws ecs deregister-task-definition` | Deregister version |\n\n### Services\n\n| Command | Description |\n|---------|-------------|\n| `aws ecs create-service` | Create service |\n| `aws ecs update-service` | Update service |\n| `aws ecs describe-services` | Get service details |\n| `aws ecs delete-service` | Delete service |\n\n### Tasks\n\n| Command | Description |\n|---------|-------------|\n| `aws ecs run-task` | Run standalone task |\n| `aws ecs stop-task` | Stop running task |\n| `aws ecs describe-tasks` | Get task details |\n| `aws ecs list-tasks` | List tasks |\n\n## Best Practices\n\n### Security\n\n- **Use task roles** for AWS API access (not access keys)\n- **Use execution roles** for ECR/Secrets access\n- **Store secrets in Secrets Manager** or Parameter Store\n- **Use private subnets** with NAT gateway\n- **Enable CloudTrail** for API auditing\n\n### Performance\n\n- **Right-size CPU/memory** — monitor and adjust\n- **Use Fargate Spot** for fault-tolerant workloads (70% savings)\n- **Enable container insights** for monitoring\n- **Use service discovery** for internal communication\n\n### Reliability\n\n- **Deploy across multiple AZs**\n- **Configure health checks** properly\n- **Set appropriate deregistration delay**\n- **Use circuit breaker** for deployments\n\n```bash\naws ecs update-service \\\n  --cluster my-cluster \\\n  --service web-service \\\n  --deployment-configuration '{\n    \"deploymentCircuitBreaker\": {\n      \"enable\": true,\n      \"rollback\": true\n    }\n  }'\n```\n\n### Cost Optimization\n\n- **Use Fargate Spot** for batch workloads\n- **Right-size task resources**\n- **Scale to zero** when not needed\n- **Use capacity providers** for mixed Fargate/Spot\n\n## Troubleshooting\n\n### Task Fails to Start\n\n**Check:**\n\n```bash\n# View stopped tasks\naws ecs describe-tasks \\\n  --cluster my-cluster \\\n  --tasks $(aws ecs list-tasks --cluster my-cluster --desired-status STOPPED --query 'taskArns[0]' --output text)\n```\n\n**Common causes:**\n- Image not found (ECR permissions)\n- Secrets access denied\n- Network configuration (subnets, security groups)\n- Resource limits exceeded\n\n### Container Keeps Restarting\n\n**Debug:**\n\n```bash\n# Check CloudWatch logs\naws logs get-log-events \\\n  --log-group-name /ecs/web-app \\\n  --log-stream-name \"ecs/web/abc123\"\n\n# Check task details\naws ecs describe-tasks \\\n  --cluster my-cluster \\\n  --tasks task-arn \\\n  --query 'tasks[0].containers[0].{reason:reason,exitCode:exitCode}'\n```\n\n**Causes:**\n- Health check failing\n- Application crashing\n- Out of memory\n\n### Service Stuck Deploying\n\n```bash\n# Check deployment status\naws ecs describe-services \\\n  --cluster my-cluster \\\n  --services web-service \\\n  --query 'services[0].deployments'\n\n# Check events\naws ecs describe-services \\\n  --cluster my-cluster \\\n  --services web-service \\\n  --query 'services[0].events[:5]'\n```\n\n**Causes:**\n- Health check failing on new tasks\n- Not enough capacity\n- Target group health checks failing\n\n### Cannot Pull Image from ECR\n\n**Check execution role has:**\n\n```json\n{\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"ecr:GetAuthorizationToken\",\n    \"ecr:BatchCheckLayerAvailability\",\n    \"ecr:GetDownloadUrlForLayer\",\n    \"ecr:BatchGetImage\"\n  ],\n  \"Resource\": \"*\"\n}\n```\n\n**Also check:**\n- VPC endpoint for ECR (if private subnet)\n- NAT gateway (if private subnet)\n- Security group allows HTTPS outbound\n\n## References\n\n- [ECS Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)\n- [ECS API Reference](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/)\n- [ECS CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/ecs/)\n- [boto3 ECS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html)","tags":["ecs","aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-ecs","topic-agent-skills","topic-agentic-ai","topic-aws","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-agents"],"categories":["aws-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itsmostafa/aws-agent-skills/ecs","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itsmostafa/aws-agent-skills","source_repo":"https://github.com/itsmostafa/aws-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1085 github stars · SKILL.md body (9,058 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:58.564Z","embedding":null,"createdAt":"2026-04-18T21:55:40.886Z","updatedAt":"2026-05-03T00:52:58.564Z","lastSeenAt":"2026-05-03T00:52:58.564Z","tsv":"'-12345678':373,378,436,439 '-87654321':375 '/amazonecs/latest/apireference/)':1081 '/amazonecs/latest/developerguide/)':1075 '/cli/latest/reference/ecs/)':1087 '/ecs/web-app':287,929 '/my-app:latest':251 '/v1/documentation/api/latest/reference/services/ecs.html)':1092 '0':890,953,955,991,1010 '1':208,213,274,294,310,358,391,425 '10':531 '120':582 '123456789012':237,243,275,392 '123456789012.dkr.ecr.us-east-1.amazonaws.com':250 '123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:latest':249 '2':362,491,527 '256':230 '3':316 '30':312 '5':314,1012 '512':232 '60':318,404,580 '70':777 '70.0':575 '8080':254,397 '8080/health':308 'access':732,734,741,901 'across':792 'action':1040 'adjust':768 'allow':1039,1066 'also':1050 'amazon':29 'api':731,759,1077 'app':224,357,490 'applic':14,99,504,537,964 'application-autosc':503,536 'appropri':800 'arn':234,240,268,385,950 'assignpublicip':379,440 'audit':760 'auto':134,496 'autosc':505,538 'aw':2,27,44,164,169,183,235,241,269,320,337,386,409,455,472,502,535,589,596,604,611,622,631,640,649,660,667,674,682,692,700,708,716,730,809,865,875,919,938,976,995 'awslog':282,285,289,296 'awslogs-group':284 'awslogs-region':288 'awslogs-stream-prefix':295 'awsvpc':226 'awsvpcconfigur':370,433 'az':794 'balanc':132,335,383 'bash':166,217,336,408,447,498,808,861,915,972 'batch':423,836 'batchchecklayeravail':1044 'batchgetimag':1048 'best':68,71,723 'best-practic':70 'blueprint':96 'boto3':1088 'boto3.amazonaws.com':1091 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html)':1090 'breaker':805 'cannot':1028 'capac':181,195,202,526,530,850,1022 'capacity-provid':194 'capacityprovid':205,209 'case':141 'cat':218 'caus':894,960,1013 'check':400,797,860,916,935,962,973,993,1015,1026,1033,1051 'circuit':804 'cli':63,66,165,327,462,583,1083 'cli-input-json':326,461 'cli-refer':65 'cloudtrail':757 'cloudwatch':917 'cluster':22,79,163,168,173,175,179,187,189,193,342,345,414,417,477,480,585,593,595,600,602,608,610,615,617,814,817,870,873,880,883,943,946,981,984,1000,1003 'cluster-nam':174,188 'cmd':303 'cmd-shell':302 'command':301,587,620,658,690 'common':58,61,158,893 'common-pattern':60 'communic':789 'concept':54,57,78 'configur':15,369,432,573,795,824,904 'contain':4,9,25,31,38,42,87,101,780,911,954 'container':13 'containerdefinit':245 'containernam':394 'containerport':253,396 'content':52 'core':53,56,77 'core-concept':55 'cost':830 'count':126,361 'cpu':229,561 'cpu-target-track':560 'cpu/memory':765 'crash':965 'creat':160,167,172,186,331,340,592,594,628,663,665 'create-clust':171,185,591 'create-servic':339,662 'curl':305 'db':265,278 'db-password':277 'debug':914 'default':201 'default-capacity-provider-strategi':200 'defin':100 'definit':17,95,113,216,325,354,420,451,460,487,619,627,630,636,639,645,648,654 'delay':802 'delet':614,616,685,687 'delete-clust':613 'delete-servic':684 'deni':902 'deploy':12,130,444,495,791,807,823,971,974,992 'deployment-configur':822 'deploymentcircuitbreak':825 'deregist':652,655 'deregister-task-definit':651 'deregistr':801 'describ':599,634,677,711,868,941,979,998 'describe-clust':598 'describe-servic':676,978,997 'describe-task':710,867,940 'describe-task-definit':633 'descript':139,588,621,659,691 'desir':125,360,885 'desired-count':359 'desired-status':884 'desiredcount':523,556 'detail':603,681,715,937 'develop':1071 'dimens':520,553 'disabl':380 'discoveri':786 'docker':8 'docs.aws.amazon.com':1074,1080,1086 'docs.aws.amazon.com/amazonecs/latest/apireference/)':1079 'docs.aws.amazon.com/amazonecs/latest/developerguide/)':1073 'docs.aws.amazon.com/cli/latest/reference/ecs/)':1085 'east':273,293,390 'ec':1,3,28,33,170,184,299,321,338,410,456,473,513,521,546,554,590,597,605,612,623,632,641,650,661,668,675,683,693,701,709,717,810,866,876,939,977,996,1070,1076,1082,1089 'ec2':48,90,149 'ecr':898,1032,1041,1043,1045,1047,1055 'ecr/secrets':740 'ecs/web/abc123':934 'ecsserviceaveragecpuutil':578 'effect':1038 'elast':30 'elasticloadbalanc':387 'enabl':441,756,779,826 'endpoint':1053 'enough':1021 'env':260 'environ':257 'eof':220,319 'event':924,994,1011 'exceed':910 'execut':737,1034 'executionrolearn':233 'exit':309 'exitcod':958,959 'f':306 'fail':857,963,1016,1027 'famili':221 'fargat':45,88,142,162,197,198,206,210,228,366,429,770,833 'fargate/spot':854 'fault':774 'fault-toler':773 'forc':493 'force-new-deploy':492 'found':897 'fulli':36 'gateway':755,1060 'get':601,637,679,713,922 'get-log-ev':921 'getauthorizationtoken':1042 'getdownloadurlforlay':1046 'gpu':154 'grace':401 'group':81,286,907,927,1024,1065 'guid':1072 'handl':129 'health':399,796,961,1014,1025 'health-check-grace-period-second':398 'healthcheck':300 'https':1067 'iam':105,236,242 'id':516,549 'imag':248,446,454,895,1030 'input':328,463 'insight':781 'instanc':49,91,109,153 'intern':788 'interv':311 'issu':26 'job':424 'json':329,464,1037 'keep':912 'key':735 'launch':136,364,427 'launch-typ':363,426 'limit':909 'list':607,609,643,646,719,721,878 'list-clust':606 'list-task':718,877 'list-task-definit':642 'load':131,334,382 'load-balanc':381 'localhost':307 'log':918,920,923,926,931 'log-group-nam':925 'log-stream-nam':930 'logconfigur':280 'logdriv':281 'logic':80 'maintain':124 'manag':21,37,152,586,746 'max':529 'max-capac':528 'memori':231,968 'min':525 'min-capac':524 'mix':853 'monitor':766,783 'multipl':793 'my-batch-job':421 'my-clust':177,191,343,415,478,815,871,881,944,982,1001 'name':176,190,246,258,264,348,559,928,933 'namespac':512,545 'nat':754,1059 'need':848 'network':103,368,431,903 'network-configur':367,430 'networkmod':225 'new':445,449,470,494,1018 'node':259 'optim':831 'option':283 'orchestr':5,39 'outbound':1068 'output':891 'paramet':748 'part':119 'password':266,279 'pattern':59,62,159 'pay':144 'per':145 'perform':761 'period':402 'permiss':899 'polici':534,542,558,565,572 'policy-nam':557 'policy-typ':564 'portmap':252 'practic':69,72,724 'predefinedmetricspecif':576 'predefinedmetrictyp':577 'prefix':298 'privat':751,1057,1062 'product':262 'proper':798 'protocol':255 'provid':182,196,203,851 'pull':1029 'put':540 'put-scaling-polici':539 'queri':888,951,989,1008 'reason':956,957 'refer':64,67,75,76,584,1069,1078,1084 'region':290 'regist':214,323,448,458,499,507,625 'register-scalable-target':506 'register-task-definit':322,457,624 'reliabl':790 'requir':157 'requirescompat':227 'resourc':102,515,548,842,908,1049 'resource-id':514,547 'restart':913 'retri':315 'right':763,839 'right-siz':762,838 'role':106,728,738,1035 'role/ecstaskexecutionrole':238 'role/ecstaskrole':244 'rollback':828 'run':7,41,108,115,405,412,695,697,706 'run-task':411,694 'save':778 'scalabl':500,508,519,552 'scalable-dimens':518,551 'scale':135,497,541,571,843 'scaleincooldown':581 'scaleoutcooldown':579 'second':403 'secret':263,276,743,745,900 'secretsmanag':270 'secur':725,906,1064 'securitygroup':376,437 'self':151 'self-manag':150 'serverless':46,143 'servic':20,32,40,85,122,123,332,341,347,351,443,467,476,481,484,511,522,544,555,657,664,666,671,673,678,680,686,688,785,813,818,821,969,980,985,988,990,999,1004,1007,1009 'service-nam':346 'service-namespac':510,543 'service/my-cluster/web-service':517,550 'set':18,799 'sg':377,438 'shell':304 'size':764,840 'skill' 'skill-ecs' 'source-itsmostafa' 'specif':156 'spot':199,211,771,834 'standalon':116,406,698 'start':859 'startperiod':317 'status':886,975 'stop':703,705,863,887 'stop-task':702 'store':742,749 'strategi':204 'stream':297,932 'stuck':970 'subnet':371,372,374,434,435,752,905,1058,1063 'tabl':50 'target':501,509,532,562,569,1023 'target-tracking-scaling-policy-configur':568 'targetgroup/web-tg/1234567890123456':393 'targetgrouparn':384 'targettrackingsc':567 'targetvalu':574 'task':16,83,89,94,107,112,128,146,215,324,353,407,413,419,450,459,486,618,626,629,635,638,644,647,653,689,696,699,704,707,712,714,720,722,727,841,856,864,869,874,879,936,942,947,949,952,1019 'task-arn':948 'task-definit':352,418,485 'task-definition.json':219,330,465 'taskarn':889 'taskrolearn':239 'tcp':256 'text':892 'timeout':313 'toler':775 'topic-agent-skills' 'topic-agentic-ai' 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'track':533,563,570 'troubleshoot':24,73,74,855 'true':827,829 'type':137,138,365,428,566 'updat':442,453,466,475,670,672,812 'update-servic':474,669,811 'us':272,292,389 'us-east':271,291,388 'use':10,140,469,726,736,750,769,784,803,832,849 'valu':261 'valuefrom':267 'version':471,656 'view':862 'vpc':1052 'web':223,247,350,356,395,483,489,820,987,1006 'web-app':222,355,488 'web-servic':349,482,819,986,1005 'weight':207,212 'window':155 'workload':148,776,837 'zero':845","prices":[{"id":"744f6f03-c8d5-430f-94f4-cf38bd82c31e","listingId":"7fd20d7c-f9a9-40b7-bfcd-a7b2331dfd13","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itsmostafa","category":"aws-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:40.886Z"}],"sources":[{"listingId":"7fd20d7c-f9a9-40b7-bfcd-a7b2331dfd13","source":"github","sourceId":"itsmostafa/aws-agent-skills/ecs","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/ecs","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:40.886Z","lastSeenAt":"2026-05-03T00:52:58.564Z"}],"details":{"listingId":"7fd20d7c-f9a9-40b7-bfcd-a7b2331dfd13","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"ecs","github":{"repo":"itsmostafa/aws-agent-skills","stars":1085,"topics":["agent-skills","agentic-ai","aws","claude-code","claude-skills","codex","coding-agents"],"license":"mit","html_url":"https://github.com/itsmostafa/aws-agent-skills","pushed_at":"2026-04-27T09:45:24Z","description":"AWS Skills for Agents","skill_md_sha":"92ef0eb571d1db371098221fd2112919a8a297e4","skill_md_path":"skills/ecs/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/ecs"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"ecs","description":"AWS ECS container orchestration for running Docker containers. Use when deploying containerized applications, configuring task definitions, setting up services, managing clusters, or troubleshooting container issues."},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/ecs"},"updatedAt":"2026-05-03T00:52:58.564Z"}}