以下の内容はhttps://makky12.hatenablog.com/entry/2026/03/30/155329より取得しました。


【Step Functions】ファイル処理Map系アクションにおける「同時実行数」の設定項目についての詳細と挙動

今回の内容

AWS Step Functions(以下「Step Functions」)のファイル処理系Mapアクション(CSV/JSONファイルなど)における、「同時実行数」関連の設定項目について調べてみました

概要

こんにちは。

Step Functionsで(S3バケットなどにある)、下図のようなCSVやJSONファイルを処理するワークフローを書くことがあるかもしれません(Step Functionsのテンプレートにもあるくらいですし)

その際、各アクションに「同時実行数」に関して、以下の設定項目が用意されています。

親アクション(File Analysys)

  • バッチあたりの最大項目数
  • 同時実行の制限

子アクション(Map)

  • 同時実行数の制限を設定

これらについて、詳細と実際の挙動が良くわからなかったので、調べてみました。

親アクション

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

これは、「1回の処理(=子アクションにデータを渡す処理)につき、CSVやJSONファイルから何個のデータを取得するか」を意味します。

例えば、100個のデータがあるCSVファイルについて、「バッチあたりの最大項目数」を10に設定した場合、「子アクションにデータを渡す処理」は10回発生することになります。

なおこの「子アクションにデータを渡す」処理は、ワークフロー全体で1回に処理できるデータ個数(後述)を満たすまで、ずっと続けられます。

同時実行の制限

これは、子アクション(上図で言えば「Map」内の処理)を何個同時に実行するか、を指します。
言い換えれば「子アクションを何並列で実行するか」となります。

例えば「バッチあたりの最大項目数」を5に設定した場合、Map内の処理を5並列同時に実行します。

重要なのは、「ワークフロー全体で1回に処理できるデータ個数 = バッチあたりの最大項目数 * 同時実行の制限」 という事です。

なので先ほどの100個のデータがあるCSVファイルについて、

  • 「バッチあたりの最大項目数」を10に設定
  • 「同時実行の制限」を5に設定

した場合(※1)、ワークフロー全体で1回に処理できるデータ個数は10 * 5 = 50個となりますので、ワークフロー全体を2回実行することで全データ処理を完了できます。

子アクション

同時実行数の制限を設定

これは親アクションの「同時実行の制限」と同じで、孫アクション(=上図で言うLambda実行)を何個同時に実行するか(=何並列で実行するか)になります。

例えば親アクションで(※1)を設定した状態で「同時実行数の制限を設定」を2に設定した場合、10個のデータを2個並列実行で処理するので、各孫アクションにおいて、Lambda実行は5回実行されます。

なお注意点として、ここでの「同時実行数の制限を設定」の値は「ワークフロー全体で1回に処理できるデータ個数」には影響しません。

※親アクションの「バッチあたりの最大項目数」を超える値は設定できないので。例えば「バッチあたりの最大項目数」を10の状態で「同時実行数の制限を設定」を1にしようが10にしようが、ワークフロー全体で1度に処理できる個数は10個で変わりません。

図解

上記を図でまとめると、下図の通りになります。

まとめ

以上、Step Functionsのファイル処理系Mapアクションにおける「同時実行数」の設定項目についての詳細と挙動でした。

自分が業務で触っていてちょっとややこしかった部分だったので、自分の理解の復習もかねて、このブログを書きました。

もし他の方でもこの辺がややこしい、と思っている方がいらっしゃったら、その方にとって参考になれば幸いです。

では、今回はこの辺で




以上の内容はhttps://makky12.hatenablog.com/entry/2026/03/30/155329より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14