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

如何在AWS Step Functions的Map状态后调整输出为指定JSON结构?

调整AWS Step Functions MAP状态输出结构的方案

场景说明

我们有一个AWS Step Functions的MAP状态,输入结构如下:

{
   "Id":"djhkjs",
    "Orders":["1","2","3"]
}

MAP状态遍历Orders列表,通过Lambda为每个订单追加地址,执行完成后输出是一个订单对象数组:

[
  {
    "Order": "1",
    "Address": "CA"
   },
  {
    "Order": "2",
    "Address": "CA"
   },
   {
    "Order": "3",
    "Address": "CA"
   }
]

现在需要将该输出转换成指定的JSON结构:

{
  "ProcessedOrders": [
  {
    "Order": "1",
    "Address": "CA"
   },
  {
    "Order": "2",
    "Address": "CA"
   },
   {
    "Order": "3",
    "Address": "CA"
   }
 ],
"ID":"hjshjdhsj",
"Name":"Services"
}

方法1:用Pass状态重组输出

在MAP状态之后添加一个Pass状态,通过Parameters字段直接构建目标结构:

基础配置(固定ID和Name)

如果MAP状态的输出就是订单数组,Pass状态的配置如下:

{
  "Type": "Pass",
  "Parameters": {
    "ProcessedOrders.$": "$",
    "ID": "hjshjdhsj",
    "Name": "Services"
  },
  "End": true
}
  • ProcessedOrders.$: "$" 直接引用MAP的输出数组,赋值给ProcessedOrders字段
  • 直接指定ID和Name的固定值

保留原输入的Id值

如果需要把原输入中的Id(djhkjs)作为输出的ID,需要先在MAP状态中用ResultPath保留原输入:

{
  "Type": "Map",
  "ItemsPath": "$.Orders",
  "ResultPath": "$.ProcessedOrdersTemp",
  // 其他MAP配置(比如迭代器、Lambda调用)
}

此时MAP执行后,输入会保留原结构,同时新增ProcessedOrdersTemp存储订单数组。接着配置Pass状态:

{
  "Type": "Pass",
  "Parameters": {
    "ProcessedOrders.$": "$.ProcessedOrdersTemp",
    "ID.$": "$.Id",
    "Name": "Services"
  },
  "End": true
}

方法2:用Lambda生成目标结构

在MAP状态之后新增一个Lambda任务,让Lambda直接处理MAP的输出并生成指定结构。

Python Lambda示例(固定值)

import json

def lambda_handler(event, context):
    # event是MAP状态的输出数组
    return {
        "ProcessedOrders": event,
        "ID": "hjshjdhsj",
        "Name": "Services"
    }

Python Lambda示例(动态获取原输入Id)

如果需要传递原输入的Id,可以在Step Functions中将原输入和MAP输出一起传入Lambda,代码调整为:

import json

def lambda_handler(event, context):
    # event包含原输入的Id和MAP生成的订单数组
    return {
        "ProcessedOrders": event["ProcessedOrdersTemp"],
        "ID": event["Id"],
        "Name": "Services"
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:35:18