Self answers:How to stop all tasks on a cluster with a single cli command, easily allowing for extra parameters to be passed.
Question posted in Amazon Web Sevices
The official Amazon Web Services documentation can be found here.
The official Amazon Web Services documentation can be found here.
2
Answers
The below will:
jq
,-r
removes the quotes from the json value.xargs
, the value is appended to the command (after --task).n-1
just ensures there is one command per arn, not sure if necessary.aws ecs list-tasks --cluster "$ecs_cluster" | jq -r ".taskArns[]" | xargs -n1 aws ecs stop-task --no-cli-pager --cluster "$ecs_cluster" --task
--no-cli-pager
prevents the output fromstop-task
from getting stuck after each execution.Any optimization welcome. I saw another solution with awk but found it hard to use with passing extra params to the second command.
I was trying to get Baron’s answer to work and found that it needed an adjustment to work in my AWS CodeBuild (Ubuntu) use case by pulling the task id out of the ARN:
You might also want to stop all tasks for only one service