NOTE: You will be required to have PROFILE
and STATE_MACHINE_ARN
set in your environment variables for the below to work. Alternatively set them as part of the oneliner.
The blow will query AWS for all RUNNING
executions of your state-machine, then loop through each one sending a stop request. This will terminate the function in whatever state it happens to be in. This will NOT stop external work that has already been invoked. If you run into errors with the below, not that it is trying to run the stop command in parallel, so a smaller parallelism number may be appropriate for your use case.
$ aws --profile ${PROFILE} stepfunctions list-executions --state-machine-arn ${STATE_MACHINE_ARN} --status-filter RUNNING | grep executionArn | awk '{print $2}' | sed -e 's/\"//g' | sed -e 's/,//g' | xargs -L 1 -n 1 -P 10 aws --profile ${PROFILE} stepfunctions stop-execution --execution-arn
This script will still kill each execution one at a time, is there a way to add some multiplicity/scalability to issue lets say 10 stop execution commands parallely.
Or even better, is there a way we can purge the whole queue tied to an ARN at once to stop 1000 running executions at the same time ?