はじめに
エンジニアとなり約半年。
最近、業務でAWS Batch を使用することがあり、「なんじゃこれ?」となったので、調査したことを備忘録として載せます。まだまだビギナーエンジニアなので、不足点とかあればすみません。
AWS Batchとは?
簡単にいうと、大規模計算におけるバッチ処理を効率的に行なってくれるサービスです。
バッチ処理を行う際、AWS Batch が自動でインスタンスをプロビジョニングしてくれます。
AWS Batch 公式ドキュメント
AWS Batch の設定
AWS Batch では、「ジョブ」「ジョブ定義」「ジョブキュー」「コンピューティング環境」を設定する必要があります。それぞれ見ていきましょう。
- ジョブ
- ジョブ定義
- ジョブキュー
- コンピューティング環境
ジョブ
AWSによって実行される作業単位のことです。ジョブ定義に基づき作成されます。
パラメータには以下のようなものを設定します。
- 元となるジョブ定義
- 投入先ジョブキュー 等
ジョブ定義
その名の通り、ジョブを定義するものです。パラメータには以下のようなものを設定します。
- ジョブが必要とするvCPU数やCPU、メモリ
- コンテナイメージ
- コンテナ内での実行コマンド 等
ジョブキュー
ジョブが待機する場所です。ジョブは一旦ここで待機し、そこからコンピューティング環境へと渡されます。
パラメータには以下のようなものを設定します。
- 実行先のコンピューティング環境(3つまで指定可能)
- ジョブキューの優先度
コンピューティング環境
ジョブを実際に実行する場所です。ECSクラスターで構成されます。
パラメータには以下のようなものを設定します。
- 最小vCPU数、最大vCPU数(最小vCPUを0にすることでジョブのない時はインスタンスを起動しない設定にできる)
- インスタンスタイプ
- ユーザー独自のAMIや起動テンプレート 等
ストレージ
永続化する必要のあるデータについては、他のストレージに移す必要があります。
S3やEFS、FSxが使えます。
EFSとFSxはマウント作業が必要になるので、その方法を以下に記載します。
EFS
ユーザーデータに、EFSのマウントを行うコマンドを記述した起動テンプレートを作成します。
コンピューティング環境作成の際に、その起動テンプレートを指定し、作成します。
FSx
FSxのマウントにはLustreクライアントのインストールが必要になります。
(Lustreクライアントのインストール方法)
LustreクライアントがインストールされたAMIを、AWSのイメージビルダーで作成し、
そのAMIを使用して、ユーザーデータに、FSxのマウントを行うコマンドを記述した起動テンプレートを作成します。
コンピューティング環境作成の際に、その起動テンプレートを指定し、作成します。
終わりに
ゲノム解析や機械学習基盤の作成にAWS Batch が利用されるようです。
AWS Batch を触るとき、この記事が少しでも参考になると幸いです。