如何提取EventBridge Pipes传入Step Functions的数组包裹输入内容
解决Step Functions提取数组内输入内容的方法
方法1:在Pass状态中通过数组索引提取
Step Functions支持JSON Path语法定位数据,你的输入是单元素数组,直接用$[0]即可获取数组第一个元素。修改Pass状态的InputPath或ResultPath实现提取:
示例Pass状态配置
{ "Type": "Pass", "InputPath": "$[0]", "ResultPath": "$", "Next": "YourNextState" }
InputPath": "$[0]":指定只取输入数组的第一个元素作为当前状态的输入ResultPath": "$":将提取后的结果覆盖原输入,传递给下一个状态
方法2:在状态机全局统一处理输入
如果希望整个状态机都使用数组内的内容,可在状态机顶层配置InputPath,一次性完成转换:
{ "Comment": "Your State Machine", "StartAt": "FirstState", "InputPath": "$[0]", "States": { // 你的状态定义 } }
这样所有状态都会直接使用提取后的对象,无需在每个状态单独配置。
验证方式
在Step Functions控制台用测试功能验证:输入被包裹的数组,查看处理后的输出是否为预期的对象结构。
测试输入示例:
[{ "meta-data": { "id": "123" }, "body": { "first": "1", "second": "2" } }]
经过$[0]处理后,输出结果:
{ "meta-data": { "id": "123" }, "body": { "first": "1", "second": "2" } }
内容的提问来源于stack exchange,提问作者Lemour
相关产品推荐
相关产品推荐

