AWS Step Function使用InputPath后如何获取原始输入并调整并行状态输出
解决方案
核心问题是你在Parallel状态层设置了InputPath: $.Body,导致所有并行分支接收的输入就只有原始输入的Body字段内容,就算子任务设置ResultPath: null返回分支原始输入,也只能返回截断后的Body内容,无法拿到外层的MessageAttributes字段。
你可以按以下步骤修改状态机定义:
- 删除Process Videos并行状态上的
InputPath: $.Body配置,让并行状态完整接收原始输入,所有分支的输入也会同步为完整的原始payload - 把
InputPath: $.Body配置下沉到每个子任务层,保证任务执行时的输入还是你需要的Body内容 - 保留各子任务的
ResultPath: null配置,这样每个分支执行完成后会返回分支的原始输入(也就是完整的带MessageAttributes的payload)
修改后的状态机示例:
{ "StartAt": "Process Videos", "States": { "Process Videos": { "Type": "Parallel", "Next": "Finalizer", "Branches": [ { "StartAt": "GPS Parser", "States": { "GPS Parser": { "Type": "Task", "Resource": "x", "InputPath": "$.Body", "ResultPath": null, "End": true } } }, { "StartAt": "Video Creator", "States": { "Video Creator": { "Type": "Task", "Resource": "x", "InputPath": "$.Body", "ResultPath": null, "End": true } } } ] }, "Finalizer": { "Type": "Task", "Resource": "x", "End": true }, "ErrorHandler": { "Type": "Task", "Resource": "x", "End": true } } }
修改后并行状态的输出就会符合你需要的格式,每个数组元素都包含完整的Body和MessageAttributes字段。
内容的提问来源于stack exchange,提问作者William Silva
相关产品推荐
相关产品推荐

