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

如何在Step Functions中将步骤输出插入JSON结构并传递至后续步骤

解决AWS Step Functions中Pass状态构建指定JSON结构的问题

我来帮你搞定这个问题,先说说为啥你的配置会报错:

你的StartTask输出的是一个纯字符串("Hello World!"),而RefactorTask里的ResultPath: "$.myData.data"是试图在JSON对象的层级路径下写入值,但当前输入根本不是对象,Step Functions没法在字符串上创建myData.data这样的嵌套路径,所以就抛出了States.ReferencePathConflict错误。

下面给你两种可行的解决方案,都能实现你想要的输出结构:

方案一:用Parameters直接构建目标结构(推荐)

这种方式最直接,通过Parameters字段定义你期望的JSON结构,同时引用第一步的输出值:

{
  "Comment": "Sample State Machine",
  "StartAt": "StartTask",
  "States": {
    "StartTask": {
      "Type": "Pass",
      "Result": "Hello World!",
      "Next": "RefactorTask"
    },
    "RefactorTask": {
      "Type": "Pass",
      "Parameters": {
        "myData": {
          "data.$": "$"
        }
      },
      "End": true
    }
  }
}

这里的data.$: "$"表示把当前输入(也就是第一步的"Hello World!")赋值给myData.data字段,最终RefactorTask的输出就是你要的:

{
  "myData": {
    "data": "Hello World!"
  }
}

方案二:用Result和ResultPath结合(适合需要保留原始输入的场景)

如果你后续还需要保留第一步的输出字符串,同时添加新的结构,可以先把输入包装成对象再写入路径:

{
  "Comment": "Sample State Machine",
  "StartAt": "StartTask",
  "States": {
    "StartTask": {
      "Type": "Pass",
      "Result": "Hello World!",
      "Next": "RefactorTask"
    },
    "RefactorTask": {
      "Type": "Pass",
      "Parameters": {
        "originalInput.$": "$",
        "myData": {
          "data.$": "$"
        }
      },
      "End": true
    }
  }
}

这个配置的输出会同时包含原始输入和新结构:

{
  "originalInput": "Hello World!",
  "myData": {
    "data": "Hello World!"
  }
}

核心要点就是:当输入是字符串/非JSON对象时,不能用ResultPath去指定对象层级的路径,必须先构建好JSON对象结构,再把值填充进去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:54:23