本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ItemSelector (地图)
管理状态和转换数据
了解有关使用变量在状态之间传递数据和使用转换数据的信息 JSONata。
默认情况下,Map 状态的有效输入是原始状态输入中的一组单个数据项。使用该ItemSelector字段,您可以在数据项传递到Map状态之前覆盖这些值。
要覆盖这些值,请指定有效的 JSON 输入,其中包含键值对集合。这些对可以是状态机定义中提供的静态值、使用路径从状态输入中选择的值或从 Conte xt 对象访问的值。
如果您使用路径或 Context 对象指定键值对,则键名必须以结尾。.$
注意
ItemSelector 字段取代了 Map 状态内的 Parameters 字段。如果您在Map州定义中使用该Parameters字段来创建自定义输入,我们建议您将它们替换为ItemSelector。
您可以在内联 Map 状态和分布式 Map 状态中指定 ItemSelector 字段。
例如,考虑以下 JSON 输入,其中包含 imageData 节点内三个项目的数组。对于每次 Map 状态迭代,都会将一个数组项作为输入传递给迭代。
[
{
"resize": "true",
"format": "jpg"
},
{
"resize": "false",
"format": "png"
},
{
"resize": "true",
"format": "jpg"
}
]使用 ItemSelector 字段,您可以定义一个自定义 JSON 输入以覆盖原始输入,如以下示例所示。然后,Step Functions 将此自定义输入传递给每次 Map 状态迭代。自定义输入包含Map状态的静态值size和上下文对象数据的值。C $$.Map.Item.Value ontext 对象包含每个单独数据项的值。
{
"ItemSelector": {
"size": 10,
"value.$": "$$.Map.Item.Value"
}
}以下示例显示了内联 Map 状态 的一次迭代所接收的输入:
{
"size": 10,
"value": {
"resize": "true",
"format": "jpg"
}
}提示
有关使用 ItemSelector 字段的分布式 Map 状态 的完整示例,请参阅使用分布式 Map 复制大规模 CSV。