首页 > 解决方案 > 如何停止特定状态机的所有正在运行的 Step Functions?

问题描述

我不小心启动了很多步进功能,现在希望终止所有这些功能。

使用 CLI 或 Web 控制台有什么聪明的方法吗?

标签: aws-cliaws-step-functions

解决方案


好的,让我们使用 CLI 执行此操作。

您可以使用以下命令停止执行:

aws stepfunctions stop-execution \
  --execution-arn <STEP FUNCTION EXECUTION ARN>

但由于我开始执行的执行次数过多,因此能够列出状态机的所有正在运行的执行情况会很有帮助:

aws stepfunctions list-executions \
  --state-machine-arn <STEP FUNCTION ARN> \
  --status-filter RUNNING \
  --output text

接下来,确保仅列出这些执行的执行 ARN,并在单独的行上列出每个执行 ARN:

aws stepfunctions list-executions \
  --state-machine-arn <STEP FUNCTION ARN> \
  --status-filter RUNNING \
  --query "executions[*].{executionArn:executionArn}" \
  --output text

现在,我们将其放在一个命令中,使用xargs

aws stepfunctions list-executions \
  --state-machine-arn <STEP FUNCTION ARN> \
  --status-filter RUNNING \
  --query "executions[*].{executionArn:executionArn}" \
  --output text | \
xargs -I {} aws stepfunctions stop-execution \
  --execution-arn {} 

现在应该关闭所有正在运行的执行。确保您小心地执行此操作,以免弄乱生产!

需要注意的是,如果您使用 aws-vault 来最大程度地降低这种风险,那么上面的命令将如下所示:

aws-vault exec test-env -- aws stepfunctions list-executions \
  --state-machine-arn <STEP FUNCTION ARN> \
  --status-filter RUNNING \
  --query "executions[*].{executionArn:executionArn}" \
  --output text | \
xargs -I {} aws-vault exec test-env -- aws stepfunctions stop-execution \
  --execution-arn {} 

推荐阅读