ItemSelector (地图) - AWS Step Functions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ItemSelector (地图)

默认情况下,Map 状态的有效输入是原始状态输入中的一组单个数据项。使用 ItemSelector 字段,可在数据项的值传递到 Map 状态之前对其进行覆盖。要覆盖这些值,请指定包含一组键值对的有效JSON输入。这些键值对可以是状态机定义中提供的静态值,使用路径从状态输入中选择的值,或者从上下文对象访问的值。

如果您使用路径或上下文对象指定键值对,则键名必须以 .$ 结尾。

注意

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 状态迭代。自定义输入包含 size 的静态值和 Map 状态的上下文对象数据的值。$$.Map.Item.Value 上下文对象包含每个单独数据项的值。

{ "ItemSelector": { "size": 10, "value.$": "$$.Map.Item.Value" } }

以下示例显示了内联 Map 状态 的一次迭代所接收的输入:

{ "size": 10, "value": { "resize": "true", "format": "jpg" } }
提示

有关使用 ItemSelector 字段的分布式 Map 状态 的完整示例,请参阅CSV使用分布式地图进行大规模复制