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

如何在AWS Step Functions的Map循环触发特定错误时中断执行

解决方案

方案1:利用Map状态容错配置实现中断(推荐)

AWS Step Function的Map原生支持通过失败容忍阈值控制整体执行行为,只需少量修改即可实现需求:

  • 给Map节点配置ToleratedFailureCount: 0,只要任意一个迭代抛出未被内部Catch处理的错误,整个Map会立刻终止所有未完成的迭代,整体进入失败状态
  • 在Map节点外层新增Catch配置,捕获你自定义的中断错误,跳转到Map外的目标状态即可
  • Iterator内部的BreakLoop保持Fail类型,抛出固定名称的自定义错误方便外层区分

修改后的状态机参考:

{
  "StartAt": "Job",
  "States": {
    "Job": {
      "Type": "Map",
      "InputPath": "$.content",
      "ItemsPath": "$.data",
      "MaxConcurrency": 0,
      "ToleratedFailureCount": 0,
      "Iterator": {
        "StartAt": "Validate",
        "States": {
          "Validate": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
            "Catch": [
              {
                "ErrorEquals": [
                  "ErrorOne"
                ],
                "Next": "BreakLoop"
              },
              {
                "ErrorEquals": ["States.ALL"],
                "Next": "FailUncaughtError"
              }
            ]
          },
          "FailUncaughtError":{
            "Type": "Fail",
            "Error": "UncaughtError"
          },
          "BreakLoop":{
            "Type": "Fail",
            "Error": "LoopBreakSignal"
          }
        }
      },
      "ResultPath": "$.content.data",
      "Catch": [
        {
          "ErrorEquals": ["LoopBreakSignal"],
          "Next": "YourTargetStateOutsideMap",
          "ResultPath": "$.breakError"
        }
      ],
      "Next": "NormalProcessAfterAllIterationSuccess"
    },
    "YourTargetStateOutsideMap": {
      "Type": "Pass",
      "End": true
    },
    "NormalProcessAfterAllIterationSuccess": {
      "Type": "Pass",
      "End": true
    }
  }
}

方案2:自定义循环实现

如果不想让Map进入失败状态,且迭代数量较少,可以放弃内置Map组件,自己通过计数器+Choice状态实现遍历:

  • 提前把待遍历的数组放到输入参数里,同时新增currentIndex计数器字段
  • 每次迭代取currentIndex对应的数组元素处理
  • 处理完成后判断是否遇到中断信号,是则跳转到循环外;否则计数器+1,判断是否还有未处理元素,有则继续迭代,无则退出循环

内容的提问来源于stack exchange,提问作者Amor.o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:15:05