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

如何将并行任务中各步骤的输出传递给Catch处理模块?

原因说明

AWS Step Functions 中 Parallel 状态的原生运行机制决定了该现象:只要任意分支抛出未被捕获的错误,整个 Parallel 状态会立即终止,此时配置在 Parallel 顶层的 Catch 仅能拿到 Parallel 状态的原始输入,已执行完成的步骤输出不会被默认聚合传递。

可行解决方案

方案1:错误捕获下放到并行分支(无额外依赖,优先推荐)

不要将 Catch 配置在顶层 Parallel 状态,改为给每个并行分支的内部步骤单独配置错误捕获。分支执行过程中无论成功还是失败,都返回固定结构的结果,包含已完成步骤的输出、执行状态、错误信息。
顶层 Parallel 会等待所有分支返回结果后再进入后续步骤,你可以通过 Choice 状态判断是否存在执行失败的分支,再跳转到对应的错误处理逻辑,此时所有已完成步骤的输出都可以从分支返回结果中直接获取。
示例逻辑如下:

// 单分支执行逻辑示例
try:
    step1_res = step1()
    step2_res = step2()
    step3_res = step3()
    return {
        "success": True,
        "partial_output": {"step1": step1_res, "step2": step2_res, "step3": step3_res},
        "error": None
    }
catch err:
    return {
        "success": False,
        "partial_output": {"step1": step1_res, "step2": step2_res}, // 保留已执行完成的步骤输出
        "error": err
    }

// 顶层处理逻辑
all_branch_res = parallel_run([branch1, branch2, ...])
if any branch in all_branch_res["success"] == False:
    handle_error(all_branch_res) // 可直接读取所有已完成的步骤输出
else:
    handle_success(all_branch_res)

方案2:外部存储持久化中间输出

如果不想调整现有分支的错误处理结构,可以在每个步骤执行成功后,将输出写入 DynamoDB、S3 等外部存储,关联当前 Step Functions 执行的 ARN 作为唯一标识。
触发 Catch 后,在错误处理逻辑中通过执行 ARN 从外部存储拉取所有已执行成功的步骤输出即可,该方案适合并行分支多、中间输出量大的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:27:04