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

如何在AWS Step Functions中向API发送格式正确的DynamoDB列表?

解决AWS Step Function中DynamoDB格式数组转API兼容格式的方法

以下是几种实用的解决思路,按需选择:

方法1:用Step Functions内置JMESPath表达式直接转换

在调用API的Task状态里,通过Parameters字段借助JMESPath的map函数批量转换数组格式,无需依赖额外服务。

示例配置(放在API调用Task的Parameters中):

"Parameters": {
  "informacoes.$": "map($.informacoes, &{ chave: .M.chave.S, valor: .M.valor.N, numero: .M.numero.S })"
}

这个表达式会遍历informacoes数组内的每个元素,提取每个元素中M对象下的字段值,直接转换成API需要的键值对结构。

方法2:用Lambda函数做格式转换

写一个轻量的Lambda函数处理格式转换,适合结构复杂或字段动态变化的场景。

Python示例代码:

def lambda_handler(event, context):
    # 从输入中获取DynamoDB格式的数组
    dynamo_list = event["informacoes"]
    converted_list = []
    
    for item in dynamo_list:
        # 提取M字段下的原始数据
        raw_item = item["M"]
        converted_item = {
            "chave": raw_item["chave"]["S"],
            "valor": raw_item["valor"]["N"],
            "numero": raw_item["numero"]["S"]
        }
        converted_list.append(converted_item)
    
    return {"informacoes": converted_list}

在Step Function中新增一个Lambda调用Task,将转换后的结果传递给后续的API调用Task即可。

方法3:从DynamoDB读取时直接转换

如果数据是从DynamoDB的Scan/Query/GetItem操作获取的,可以在DynamoDB Task的ResultSelector里直接处理,省去后续转换步骤。

示例配置(放在DynamoDB Task中):

"ResultSelector": {
  "informacoes.$": "map(@.Items, &{ chave: .chave.S, valor: .valor.N, numero: .numero.S })"
}

这样DynamoDB返回的结果会直接转换成API兼容的格式,后续步骤可直接使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:36:05