如何停止特定状态机的所有 运行 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
我不小心启动了很多步骤函数,现在想终止所有这些函数。
有什么聪明的方法可以使用 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