You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Step Functions精细化取消方案:如何无需完全退出即可取消状态机执行

Step Functions 优雅取消+保留清理逻辑实现方案

原生 Step Functions 提供的 StopExecution API 默认会直接终止全流程执行,不会触发预先配置的故障路径清理逻辑,你可以通过以下两种成熟方案实现需求:

方案1:自定义取消标志位轮询(最通用)

  • 提前创建一张 DynamoDB/业务数据库表,存储状态机执行 ARN 与对应的取消状态,新增cancel_requested布尔字段,默认值为false
  • 在状态机所有长耗时步骤、分支入口前新增状态判断节点,查询当前执行 ARN 对应的cancel_requested字段:
    • 字段值为true时,主动抛出CancellationRequested自定义错误
    • 字段值为false时,继续执行原有业务逻辑
  • 在状态机顶层配置 Catch 规则,匹配CancellationRequested错误后直接路由到已有的故障清理路径,清理完成后正常结束执行
  • 需要取消执行时,无需调用原生终止接口,仅需将对应执行 ARN 的cancel_requested字段置为true即可,状态机走到下一个判断节点就会主动触发清理流程

提示:如果状态机包含长时长 Wait 状态,可将单段长等待拆分为「短等待+取消判断」的循环结构,避免等待期间无法响应取消请求

方案2:任务主动上报取消(适配长耗时任务场景)

  • 针对使用 Activity、支持心跳的 Lambda 等任务类型,开启心跳超时配置
  • 任务执行端内置取消状态查询逻辑,收到取消需求后,停止业务处理并主动调用SendTaskFailureAPI上报CancellationRequested错误,触发上层状态机的清理路径
  • 该方案无需在状态机中插入大量判断节点,更适配任务侧代码可控的场景

补充说明

  • 原生StopExecution接口支持ROLLBACK终止模式,仅适用于配置了专属回滚步骤的状态机,适配成本高于上述自定义方案,可根据自身业务结构选择
  • 上述方案仅适用于标准工作流(Standard Workflow),Express 工作流不支持中间状态持久化,无法实现优雅取消逻辑

内容的提问来源于stack exchange,提问作者men6288

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:39:02