ItemSelector (Map)
ステートの管理とデータの変換
変数を使用したステート間のデータ受け渡しと JSONata を使用したデータ変換について説明します。
デフォルトでは、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 のコピー」を参照してください。