ItemSelector (地图) - AWS Step Functions

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

ItemSelector (地图)

管理状态和转换数据

默认情况下,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