Map状态中调用的Step Function无法传入指定输入的问题求助
问题分析与解决
你的问题出在内部Task未将Map状态生成的输入传递给子状态机。虽然Map状态的Parameters已正确把$.ids_list中的每个元素转换为{"id": "xxx"}格式,但调用startExecution.sync:2时,未指定要传递给子状态机的输入,导致子状态机默认接收空字典。
修复方案
修改InsideStep的Parameters,添加"Input.$": "$",将Map处理后的当前输入完整传递给子状态机:
"Map": { "Type": "Map", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "InsideStep", "States": { "InsideStep": { "Type": "Task", "Resource": "arn:aws:states:::states:startExecution.sync:2", "Parameters": { "StateMachineArn": "arn:aws:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Input.$": "$" // 新增该行,传递当前输入给子状态机 }, "End": true } } }, "Next": "Consolidate logs", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Log error", "ResultPath": "$.error" } ], "ItemsPath": "$.ids_list", "MaxConcurrency": 10, "Parameters": { "id.$": "$$.Map.Item.Value" } }
关键说明
- Map状态的
Parameters:将$.ids_list中的每个元素(假设为字符串ID)包装为{"id": "xxx"},该结果会作为InsideStep的输入。 Input.$": "$":告知startExecution.sync:2任务,将当前Step的输入(即Map生成的{"id": "xxx"})作为子状态机的执行输入。
若需对子状态机的输入做进一步定制,也可直接在此构造,例如:
"Input.$": "{\"customId.$\": \"$.id\"}"
内容的提问来源于stack exchange,提问作者Johann
相关产品推荐
相关产品推荐

