本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ItemsPath ( 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 之后应用 ItemsPath。InputPath 筛选输出后,它将对状态的有效输入进行操作。
有关 Map 状态的更多信息,请参阅以下内容: