如何在AWS Step Functions中用JSONata结合任务输入与Lambda执行结果?
用JSONata实现输入与执行结果的合并(类似ResultPath效果)
要实现像ResultPath那样保留原输入结构并新增执行结果属性的效果,JSONata有两种简洁的实现方式:
方法1:使用对象展开语法
JSONata支持类似JavaScript的对象展开操作符**,可以直接将原输入对象的所有属性展开,再追加新的结果属性。假设Lambda执行结果为"value_3",表达式如下:{**$, "lambda_result": "value_3"}执行后会完整保留原输入的
input_1、input_2属性,同时新增lambda_result字段,得到你需要的目标结构。方法2:使用
$merge内置函数
利用JSONata的$merge函数,将原输入对象和包含结果属性的新对象合并:$merge([$, {"lambda_result": "value_3"}])$merge会遍历传入的对象数组,将所有属性合并到一个新对象中。由于原对象不存在lambda_result属性,只会新增该字段,不会覆盖原有内容。
如果Lambda返回的是复杂JSON对象(比如{"status": "success", "data": "value_3"}),只需把表达式中的"value_3"替换为该对象即可,两种方法都适用:
// 对象展开方式 {**$, "lambda_result": {"status": "success", "data": "value_3"}} // $merge方式 $merge([$, {"lambda_result": {"status": "success", "data": "value_3"}}])
内容的提问来源于stack exchange,提问作者datahack
相关产品推荐
相关产品推荐

