如何停止特定状态机的所有 运行 Step Functions?

How to stop all running Step Functions of a specific state machine?

我不小心启动了很多步骤函数,现在想终止所有这些函数。

有什么聪明的方法可以使用 CLI 或 Web 控制台执行此操作?

好的,让我们使用 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 {} 

对我来说,xargs 出现问题是因为我的 execution-arn 足够大。

aws stepfunctions list-executions \
  --state-machine-arn <ARN> \
  --status-filter RUNNING \
  --query "executions[*].{executionArn:executionArn}" \
  --output text | \
    awk '{print}' |
    while read line;
    do aws stepfunctions stop-execution --execution-arn  $line
    done

这对我有用。感谢@Pål Brattberg

出于某种原因,每次迭代后,它都停留在 Mac、

添加 >> out.t即可解决

aws stepfunctions list-executions \
--state-machine-arn arn:aws:states:us-east-1:322348515048:stateMachine:workflow-dev-acknowledge-Awaiter \
--status-filter RUNNING \
--query "executions[*].{executionArn:executionArn}" \
--output text | \
xargs -I {} aws stepfunctions stop-execution \
--execution-arn {} >> out.t