本記事はSAA勉強用のメモとなります。
AWS Batch は AWS 上でバッチ処理(大量のジョブをまとめて実行する処理)を自動的にスケジュールし、最適な環境で動かしてくれるマネージドサービス です。
コンテナベースのワークロード(Docker など)との相性がよく、インフラ管理を最小限にして大量ジョブの実行を自動化できます。
🌟 AWS Batch のポイントをわかりやすく解説
✅ 1. 何をするサービス?
AWS Batch は、以下のような 「計算集約的な大量処理」 を自動化します
大量ファイルの処理
データ分析
機械学習のトレーニング
シミュレーション
ETL バッチ
「ジョブをどれだけ、どのタイミングで、どの環境で実行するか」を AWS Batch が全自動で決めて実行 してくれます。
🧩 2. AWS Batch の主要コンポーネント
AWS Batch は次の構成要素で動きます
① ジョブ(Job)
実行したい処理の単位。
Docker イメージとコマンドを指定して送信するだけ。
② ジョブ定義(Job Definition)
ジョブのテンプレ。以下を定義できます
使用する Docker イメージ
CPU / メモリ
環境変数 など
③ ジョブキュー(Job Queue)
ジョブが並ぶ待ち行列。
Batch はこのキューを見て順番にスケジュール。
④ コンピュート環境(Compute Environment)
実際にジョブを実行する場所。3種類
Managed Compute Environment(AWS におまかせ)
EC2 / Spot / Fargate などを自動で用意
Unmanaged(自前の ECS クラスターを使う)
⚙️ 3. AWS Batch が自動でやってくれること
必要な量の EC2 インスタンス(または Fargate)を起動/停止
適切なインスタンスサイズの選定
Spot と On-Demand の組み合わせ
大量ジョブを優先順位や依存関係に基づき自動スケジューリング
リトライや失敗時の再実行
→ バッチ処理のインフラ管理から解放される!
🎯 4. AWS Batch を使うメリット
✔ コスト最適化が勝手にされる
必要な時だけコンピュートリソースが立ち上がる。
✔ 大規模ジョブも簡単
数万ジョブも余裕で処理。
✔ インフラ管理不要
「EC2 の台数管理」「スケジューリング」などを全部 AWS が代行。
✔ Docker コンテナで動く
アプリをコンテナ化して投げるだけ。
✔ ECS / Fargate と統合
サーバーレス実行(Fargate)も可能。
📚 5. AWS Batch の利用イメージ
例:動画を大量にエンコードする
S3 に動画アップロード
Lambda が AWS Batch にジョブ投入
Batch が EC2/Fargate を自動起動
Docker でエンコード処理を実行
終わったらインスタンスは自動停止
結果を S3 に保存
→ 完全自動の処理ラインが構築できる
💡 6. どんな時に使う?
深夜に大量のデータを処理したい
機械学習の学習ジョブを大量に回したい
科学計算・シミュレーションを行いたい
大量の ETL ワークロードを処理したい
コンテナ化された大量処理を管理したくない