BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】AWS Batchの概要紹介

コンニチハ、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)
・米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、米国東部 (オハイオ)、カナダ (中部)
・欧州西部 (アイルランド)、欧州 (ロンドン)、欧州 (フランクフルト)、 欧州 (パリ)、欧州 (ストックホルム)
・アジアパシフィック (香港)、アジアパシフィック (東京)、アジアパシフィック (ソウル)、アジアパシフィック (シドニー)、アジアパシフィック (シンガポール)、アジアパシフィック (ムンバイ)
・南米 (サンパウロ)

ノウハウ

  • オートスケーリングで起動したEC2はジョブを送信してから停止するまで15分程度かかるようです。
     →AutoScallingで手動スケーリングしているようです。
  • パブリックIPv4アドレスの自動割り当てをNoにする場合は、以下のエンドポイントを追加する必要があります。
    1.ECS:ecs-agent/ecs-telemetry/ecs
    2.ECR:ecr.dkr/.ecr.api