⑤ AWS Batchは、コンテナイメージを用意するだけで、下記のようなバッチ処理が実行できるマネージドなバッチ処理環境です。
- マネジメントコンソールやCLI、S3へのファイルアップロード、CloudWatch Eventsからジョブが投入できる
- 複数の子ジョブに依存関係を持たせて処理を制御できる(配列ジョブと呼ぶ)
- 1つのジョブを複数のEC2インスタンスにまたがって処理することができる(マルチノードの並列ジョブと呼ぶ)
- ジョブキューに10段階の優先度を持たせることができるので、優先的に実行するジョブを定義できる
- ジョブを実行するEC2インスタンス環境を細かく設定できる
- Cloudwatch Logsでログが取得できる(5GBのログデータの取り込みとアーカイブに対して無料)
- AWS Batch自体の利用に料金は発生せず、Batch利用時に実行されたAWSリソースに対してのみ料金が発生
⑤ AWS Batchを実行するにあたり、まず、コンテナレジストリ ⑦ ECRに、⑧ コンテナイメージをpushして登録しておきます。そして、⑤ Batchに対してバッチジョブを投入することでバッチ処理を実行するという流れになるわけですが、ジョブの投入方法として大きくは3つあり、1つ目は① AWS マネジメントコンソールのBatch画面から投入する方法(CLIからも投入可能)、2つ目は② S3にファイルをアップロードすることで、そのアップロードイベントを③ Lambdaが検知してアップロードされたファイルを処理するジョブを投入する方法、3つ目は④ CloudWatch Eventsにcronのような記述形式で自動スケジュールを設定してジョブを投入する方法があります。
次に、バッチジョブが投入されると⑥ Job queue(ジョブの待ち行列)に格納され、順番にジョブが取り出されると、⑨ ECSは⑩ EC2インスタンスを起動し、⑦ ECRから⑧ コンテナイメージをpullしてバッチ処理を実行します。この時、⑪ Auto scalingが設定されていれば、処理状況に応じてEC2インスタンス数が自動で増減されます。バッチ終了後は、EC2インスタンスも終了するので無駄な課金は発生しません。