AWS Step Functions Map状态迭代时如何同时传递公共参数和数组元素
解决方案
你只需要在原有Map状态配置的基础上增加ItemSelector配置项即可实现需求,修改后的完整状态机结构如下:
{ "StartAt": "Map", "States": { "Map": { "Type": "Map", "End": true, "Iterator": { "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "End": true } } }, "ItemsPath": "$.my_array", "ItemSelector": { "keep.$": "$.keep", "element.$": "$$.Map.Item.Value" } } } }
配置说明
ItemSelector是Map状态提供的自定义迭代输入结构的配置项:
keep.$: "$.keep":直接从状态机的根输入中提取keep字段的值,原样传递给每次迭代element.$: "$$.Map.Item.Value":通过Step Functions内置的上下文对象获取当前遍历到的my_array数组元素,赋值给element字段
可视化视图操作步骤
习惯用可视化工作流视图的话可以按以下步骤操作:
- 选中Map状态组件,打开右侧配置面板
- 找到「项目选择器(Item selector)」配置区域,勾选启用自定义项目选择器
- 输入下方配置内容即可:
{ "keep.$": "$.keep", "element.$": "$$.Map.Item.Value" }
配置完成后重新测试,每次迭代的内部状态收到的输入就会完全符合要求的格式。
内容的提问来源于stack exchange,提问作者LucaBonadia
相关产品推荐
相关产品推荐

