ItemsPath(仅限 Map、JSONPath) - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

ItemsPath(仅限 Map、JSONPath)

管理状态和转换数据

本页指的是 JSONPath。Step Functions 最近添加了变量和 JSONata 来管理状态和转换数据。

了解如何使用变量传递数据使用 JSONata 转换数据

在基于 JSONPath 的状态中,使用 ItemsPath 字段在提供给 Map 状态的 JSON 输入中选择一个数组。Map 状态为数组中的每个项目重复一组步骤。默认情况下,Map 状态将 ItemsPath 设置为 $,这将选择整个输入。如果 Map 状态的输入是 JSON 数组,则它将对数组中的每个项目运行一次迭代,并将该项目作为输入传递给迭代。

注意

只有在工作流中使用从上一个状态传递的 JSON 输入时,才能在分布式 Map 状态下使用 ItemsPath

您可以使用 ItemsPath 字段指定输入值指向用于迭代的 JSON 数组的位置。ItemsPath 的值必须是一个参考路径,并且该路径必须指向 JSON 数组。例如,考虑 Map 状态的输入,其中包含两个数组,如以下示例所示。

{ "ThingsPiratesSay": [ { "say": "Avast!" }, { "say": "Yar!" }, { "say": "Walk the Plank!" } ], "ThingsGiantsSay": [ { "say": "Fee!" }, { "say": "Fi!" }, { "say": "Fo!" }, { "say": "Fum!" } ] }

在这种情况下,您可以通过 ItemsPath 选择一个数组来指定用于 Map 状态迭代的数组。以下状态机定义使用 ItemsPath 来指定输入中的 ThingsPiratesSay 数组,然后对 ThingsPiratesSay 数组中的每个项目运行 SayWord 传递状态的迭代。

{ "StartAt": "PiratesSay", "States": { "PiratesSay": { "Type": "Map", "ItemsPath": "$.ThingsPiratesSay", "ItemProcessor": { "StartAt": "SayWord", "States": { "SayWord": { "Type": "Pass", "End": true } } }, "End": true } } }

处理输入时,Map 状态在 InputPath 之后应用 ItemsPathInputPath 筛选输出后,它将对状态的有效输入进行操作。

有关 Map 状态的更多信息,请参阅以下内容: