Lambda | ECS | AWS Batch | |
---|---|---|---|
難易度 | 簡単 | 難 | 普通 |
15分以上の処理 | 無理 | 可能 | 可能 |
大量データ | 普通 | 適する | 適する |
大量リクエスト | 普通 | 普通 | 適する |
処理 | EventBridgeからLambdaを起動し、バッチ処理を開始する |
メリット | 圧倒的に簡単。 |
デメリット | Lambdaには15分でタイムアウトする制限がある |
処理 | ECS タスクスケジューリングを利用して、コンテナを起動して実行する |
メリット | 処理実行時のみコンテナを立ち上げるので、無駄なコストが発生しない |
デメリット | コンテナが起動するまでに時間がかかる 1つのECS タスクスケジューリング設定で、複数コンテナが立ち上がってしまうことがあるため、多重起動対策をプログラムでしておく必要がある |
処理 | EventBridgeでキューを生成。ECSコンテナでキューを取得して実行する |
メリット | ECSを起動しておくため、コンテナの起動時間を要さない。 |
デメリット | EventBridgeでキューを生成するが、EventBridgeはまれに1 つのイベントに対して複数回トリガーされることもあるので要注意 多重起動対策をプログラムでしておく必要がある ECSを起動しておく必要があり、使っていない時間もコストがかかる |
処理 | AWS Batch は、ECS をラップしている キューのメッセージを取得し、Fargate を起動する |
メリット | 並列に実行できる |
デメリット |
複数ジョブの制御は、AWS Batch よりも Step Functions の方がより細かい要件が可能。
「Step Functions + Lambda」
「Step Functions + ECS」