目次

AWSのバッチ処理の比較



バッチ処理の比較

Lambda ECS AWS Batch
難易度 簡単 普通
15分以上の処理 無理 可能 可能
大量データ 普通 適する 適する
大量リクエスト 普通 普通 適する


AWS Lambda

AWS Lambda (EventBridge)

処理 EventBridgeからLambdaを起動し、バッチ処理を開始する
メリット 圧倒的に簡単。
デメリット Lambdaには15分でタイムアウトする制限がある


ECS

ECS (タスクスケジューリング)

処理 ECS タスクスケジューリングを利用して、コンテナを起動して実行する
メリット 処理実行時のみコンテナを立ち上げるので、無駄なコストが発生しない
デメリット コンテナが起動するまでに時間がかかる
1つのECS タスクスケジューリング設定で、複数コンテナが立ち上がってしまうことがあるため、多重起動対策をプログラムでしておく必要がある


ECS (SQS)

処理 EventBridgeでキューを生成。ECSコンテナでキューを取得して実行する
メリット ECSを起動しておくため、コンテナの起動時間を要さない。
デメリット EventBridgeでキューを生成するが、EventBridgeはまれに1 つのイベントに対して複数回トリガーされることもあるので要注意
多重起動対策をプログラムでしておく必要がある
ECSを起動しておく必要があり、使っていない時間もコストがかかる


AWS Batch

処理 AWS Batch は、ECS をラップしている
キューのメッセージを取得し、Fargate を起動する
メリット 並列に実行できる
デメリット

複数ジョブの制御は、AWS Batch よりも Step Functions の方がより細かい要件が可能。
「Step Functions + Lambda」
「Step Functions + ECS」


参考

*【AWS】大規模なバッチ処理を支える技術選定