ItemBatcher (マップ) - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ItemBatcher (マップ)

ItemBatcher フィールドは JSON オブジェクトで、単一の子ワークフロー実行で項目のグループを処理するように を指定します。大きなCSVファイルやJSON配列、または大きな Amazon S3 オブジェクトのセットを処理するときは、バッチ処理を使用します。

次の例は、ItemBatcher フィールドの構文を示しています。次の構文では、子ワークフローを実行するたびに処理すべき項目の最大数が 100 に設定されています。

{ "ItemBatcher": { "MaxItemsPerBatch": 100 } }

デフォルトでは、データセット内の各項目が個々の子ワークフロー実行への入力として渡されます。例えば、次の配列を含む入力としてJSONファイルを指定するとします。

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]

所定の入力があると、子ワークフロー実行はそれぞれ配列項目を入力として受け取ります。次の例は、子ワークフロー実行の入力を示しています。

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

処理ジョブのパフォーマンスとコストを最適化するには、アイテムの数とアイテムの処理時間のバランスを取るバッチサイズを選択してください。バッチ処理を使用する場合、Step Functions は [項目] 配列に項目を追加します。次に、その配列を各子ワークフロー実行に入力として渡します。次の例は、子ワークフロー実行の入力として渡された 2 つの項目のバッチを示しています。

{ "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" } ] }
ヒント

ワークフローでの ItemBatcher フィールドの使用方法の詳細については、以下のチュートリアルとワークショップを試してみてください。

項目のバッチ処理を指定するフィールド

項目をバッチ処理するには、バッチ処理する項目の最大数、最大バッチサイズ、またはその両方を指定します。バッチ項目には、次のいずれかの値を指定する必要があります。

バッチあたりの最大項目数

子ワークフロー実行ごとに処理する項目の最大数を指定します。インタープリタは、Items 配列内でバッチ処理される項目数をこの値に制限します。バッチ番号とサイズの両方を指定すると、インタープリタは指定されたバッチサイズ制限を超えないようにバッチ内の項目数を減らします。

この値を指定せずに最大バッチサイズの値を指定した場合、Step Functions は、バイト単位の最大バッチサイズを超えずに、子ワークフロー実行ごとにできるだけ多くの項目を処理します。

例えば、1130 個のノードを含む入力JSONファイルを使用して実行を実行するとします。各バッチの最大項目値を 100 に指定すると、Step Functions は 12 のバッチを作成します。このうち、11 個のバッチにはそれぞれ 100 個のアイテムが含まれ、12 番目のバッチには残りの 30 個のアイテムが含まれます。

または、分散マップ状態入力の既存のキーと値のペアへの参照パスとして、各バッチの最大項目数を指定することもできます。このパスは正の整数に変換する必要があります。

例として、次の入力があるとします。

{ "maxBatchItems": 500 }

バッチ処理する項目の最大数は、次のように参照パスを使用して指定できます。

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxItemsPerBatchPath": "$.maxBatchItems" } ... ... } }
重要

MaxItemsPerBatch または MaxItemsPerBatchPath サブフィールドのいずれかを指定できますが、両方を指定することはできません。

バッチKBsあたりの最大数

バッチの最大サイズをバイト単位で指定します。最大 256 ですKBs。最大バッチ番号とサイズの両方を指定すると、Step Functions は指定されたバッチサイズ制限を超えないようにバッチ内の項目数を減らします。

または、分散マップ状態入力の既存のキーと値のペアへの参照パスとして、最大バッチサイズを指定することもできます。このパスは正の整数に変換する必要があります。

注記

バッチ処理を使用し、最大バッチサイズを指定しない場合、インタープリタは子ワークフローを実行するたびに最大 256 KB まで処理できる項目数を処理します。

例として、次の入力があるとします。

{ "batchSize": 131072 }

次のように、参照パスを使用して最大バッチサイズを指定できます。

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxInputBytesPerBatchPath": "$.batchSize" } ... ... } }
重要

MaxInputBytesPerBatch または MaxInputBytesPerBatchPath サブフィールドのいずれかを指定できますが、両方を指定することはできません。

バッチ入力

オプションで、各子ワークフロー実行に渡される各バッチに含める固定JSON入力を指定することもできます。Step Functions は、この入力を個々の子ワークフロー実行の入力とマージします。例えば、項目の配列のファクトチェック日を次の固定入力にするとします。

"ItemBatcher": { "BatchInput": { "factCheck": "December 2022" } }

子ワークフローの実行ごとに、入力として以下のものを受け取ります。

{ "BatchInput": { "factCheck": "December 2022" }, "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, ... ] }