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

如何将AWS Step Functions分布式映射子工作流的错误暴露至主工作流?

AWS Step Functions分布式映射:暴露子工作流错误至主工作流

问题核心

分布式映射模式下,子执行的任何错误都会被States.ExceedToleratedFailureThreshold覆盖,主工作流无法直接获取子任务的原始错误信息,这和非分布式模式的表现不同。

解决方案

要让主工作流获取子执行的原始错误,需从子任务错误捕获和主映射配置两方面调整:

  1. 子任务层捕获并保留错误
    在子工作流的任务节点中添加Catch块,捕获子任务的错误并将信息存入执行上下文,再通过Fail状态明确标记错误。示例修改如下:
someTask:
  Type: Task
  Resource: arn:aws:states:::batch:submitJob.sync
  ResultPath: null
  Parameters:
    JobDefinition.$: $.some_task_job_definition
  Catch:
    - ErrorEquals: ["States.ALL"]
      ResultPath: $.itemError  # 将子任务错误存入当前item的上下文
      Next: MarkItemFailed
MarkItemFailed:
  Type: Fail
  Cause.$: $.itemError.Cause
  Error.$: $.itemError.Error
  1. 主映射层调整错误处理逻辑
    显式设置失败容忍阈值,并在主映射的Catch块中保留错误详情,这样主工作流就能获取包含子执行错误汇总的信息:
Task1Map:
  Type: Map
  MaxConcurrency: 50
  ResultPath: null
  Next: Task1TypeChoice
  ToleratedFailureCount: 0  # 按需设置允许的失败数量,0表示不允许任何失败
  ItemReader:
    ReaderConfig:
      InputType: JSON
    Resource: arn:aws:states:::s3:getObject
    Parameters:
      Bucket.$: $.map_parameters_bucket
      Key.$: $.map_parameters_key
  ItemProcessor:
    ProcessorConfig:
      Mode: DISTRIBUTED
      ExecutionType: STANDARD
    StartAt: someTask
    States:
      someTask:
        Type: Task
        Resource: arn:aws:states:::batch:submitJob.sync
        ResultPath: null
        Parameters:
          JobDefinition.$: $.some_task_job_definition
        Catch:
          - ErrorEquals: ["States.ALL"]
            ResultPath: $.itemError
            Next: MarkItemFailed
      MarkItemFailed:
        Type: Fail
        Cause.$: $.itemError.Cause
        Error.$: $.itemError.Error
  Catch:
    - ErrorEquals: ["States.ExceedToleratedFailureThreshold"]
      ResultPath: $.mapError  # 保留映射错误详情,包含子执行的错误信息
      Next: HandleMapFailure
HandleMapFailure:
  Type: Pass
  # 可在此节点处理错误,比如输出子执行的具体错误内容

关键原理

分布式映射的子执行是独立的标准工作流,默认主映射仅跟踪失败数量是否超出阈值。通过在子执行中显式捕获并传递错误信息,主映射的错误详情会包含每个失败子执行的ExecutionArn,既可以通过该ARN查询子执行日志获取原始错误,也能通过上下文传递直接在主工作流中获取错误内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:38:22