コンニチハ、BFT名古屋支店のヤタテです。
今回は、サーバレスアーキテクチャのAWS Batchについてまとめたものを投稿します。
Lambdaと似ていますが、裏側で動くコンピューティング環境を選択できたり自由度があります。
AWS Batchとは
バッチコンピューティングジョブを簡単かつ効率的に実行できるサービスです。
コンピューティングリソース (CPU やメモリ最適化インスタンスなど) の最適な数量とタイプを、送信されたバッチジョブの量と具体的なリソース要件に基づいて動的にプロビジョニングしてくれます。
サードパーティのジョブ実行用のバッチコンピューティングソフトウェアやサーバークラスターをインストールして管理する必要がありません。
また、AWS Batchは後述する4つのコンポーネントを定義する必要があります。
ジョブ
AWS Batchによって実行される作業単位です。
元となるジョブ定義や投入先のジョブキューが必要になります。
ジョブ定義
ジョブを作成する際のテンプレートとなります。
AWS BatchはDocker内でジョブを実行するため、ここではそれに使用するDockerイメージのようなものを設定します。
ジョブ定義は、ステータスをACTIVEからINACTIVEにするだけとなり、削除することはできません。また、ステータスの変更は複数同時に行うことはできません。
ジョブキュー
投入されたジョブが待つ(並ぶ)場所です。 コンピューティング環境に紐づける必要があります。また、優先順位をつけることができ、優先順位に指定した数が大きいほうが優先して実行されます。
コンピューティング環境
AWS Batchがジョブを配置するためのコンピューティングリソースです。
コンピューティング環境のタイプには以下の2種類あります。
・マネージド型
→AWSがユーザの代わりにスケーリングする型
・アンマネージド型
→ユーザ自身でスケーリングの設定をする型
また、プロビジョニングモデルとして、FatgateまたはEC2を選択できます。
ジョブを実行するとコンピューティング環境名が入ったAmazon ECSクラスターが作成されます。このクラスターは、コンピューティング環境を削除すると削除されます。
料金体系について
追加料金はなく、バッチジョブを保存したり実行したりするために作成したAWSリソース(EC2インスタンスやFargateジョブなど)に対してのみ料金が発生します。
利用可能なリージョンについて
以下のリージョンでAWS Batchが利用できます。(2019/6/26)
・米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、米国東部 (オハイオ)、カナダ (中部)
・欧州西部 (アイルランド)、欧州 (ロンドン)、欧州 (フランクフルト)、
欧州 (パリ)、欧州 (ストックホルム)
・アジアパシフィック (香港)、アジアパシフィック (東京)、アジアパシフィック (ソウル)、アジアパシフィック (シドニー)、アジアパシフィック (シンガポール)、アジアパシフィック (ムンバイ)
・南米 (サンパウロ)