ItemSelector (Map) - AWS Step Functions

ItemSelector (Map)

ステートの管理とデータの変換

デフォルトでは、Map 状態の有効な入力は、未加工の状態入力に含まれる個々のデータ項目のセットです。ItemSelector フィールドでは、データ項目を次の Map ステートに渡す前にその値をオーバーライドできます。

値をオーバーライドするには、キーと値のペアのコレクションを含む有効な JSON 入力を指定します。このペアは、ステートマシン定義で提供される静的な値でも、パスを使用してステートの入力から選択された値でも、Context オブジェクトからアクセスされる値でもかまいません。

パスまたは Context オブジェクトを使用してキーと値のペアを指定する場合、キー名は .$ で終わる必要があります。

注記

Map 状態内の Parameters フィールドは ItemSelector フィールドに置き換わります。Map ステート定義で ItemSelector フィールドを使用してカスタム入力を作成する場合は、それらを Parameters に置き換えることをお勧めします。

ItemSelector フィールドは、インラインマップ状態分散マップ状態の両方で指定できます。

例えば、imageData ノード内の 3 つの項目の配列を含む次の JSON 入力があるとします。Map 状態反復ごとに、配列項目が入力として反復に渡されます。

[ { "resize": "true", "format": "jpg" }, { "resize": "false", "format": "png" }, { "resize": "true", "format": "jpg" } ]

次の例に示すように、ItemSelector フィールドを使用して、元の入力をオーバーライドするカスタム JSON 入力を定義できます。次に、Step Functions はこのカスタム入力を各Map 状態反復に渡します。カスタム入力には、size の静的な値と、Map ステートの Context オブジェクトデータの値が含まれます。$$.Map.Item.Value Context オブジェクトには、個々のデータ項目の値が含まれます。

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

次の例は、インラインマップステートの反復ごとに受け取る入力を示しています。

{ "size": 10, "value": { "resize": "true", "format": "jpg" } }
ヒント

ItemSelector フィールドを使用する分散マップ状態の完全な例については、「分散マップを使用した大規模 CSV のコピー」を参照してください。