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

如何为Step Functions任务传递多个InputPaths或选取多JSON节点?

可以实现!Step Functions虽然不支持直接指定多个InputPath,但用Parameters字段就能轻松搞定你的需求

你想要的场景完全可以实现——虽然单个任务不能直接设置多个InputPath来同时选取多个独立的JSON节点,但Step Functions提供的Parameters字段允许你从执行输入(或状态上下文)中提取任意需要的字段,重新组装成自定义的输入结构,完美匹配你描述的两个任务需求。

具体实现示例

假设你的执行输入是:

{ 
  "id":"identifier", 
  "nestedObjectA": { "doubleNestedObjectA": { "valueA": "value" } }, 
  "nestedObjectB" : { "valueB": "value" } 
}

任务1:传递{ "id":"identifier", "nestedObjectB" : { "valueB": "value" } }

在任务的配置中,用Parameters直接引用需要的字段:

"SendToNestedBTask": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke", // 替换为你的任务资源ARN(比如Lambda、ECS任务等)
  "Parameters": {
    // 如果是Lambda任务,需要把自定义输入放在Payload下
    "Payload": {
      "id.$": "$.id",
      "nestedObjectB.$": "$.nestedObjectB"
    }
  },
  "Next": "SendToNestedATask"
}

这里的.$后缀是Step Functions的路径引用语法,用来从当前输入中提取对应节点的值,最终传递给任务的输入就是你想要的结构。

任务2:传递{ "id":"identifier", "nestedObjectA": { "doubleNestedObjectA": { "valueA": "value" } } }

同理,调整Parameters中的引用字段即可:

"SendToNestedATask": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke", // 替换为你的任务资源ARN
  "Parameters": {
    "Payload": {
      "id.$": "$.id",
      "nestedObjectA.$": "$.nestedObjectA"
    }
  },
  "End": true
}

额外说明

  • 如果你的任务不是Lambda(比如调用AWS服务API),Parameters的结构需要匹配对应服务的API参数要求,但核心的路径引用逻辑是一样的。
  • 要是需要更复杂的输入预处理(比如先合并多个节点到临时结构),也可以先用Pass状态结合Parameters生成中间输入,再传递给后续任务。

总之,Parameters是Step Functions中自定义任务输入最灵活的方式,完全能替代“多个InputPaths”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:29:35