AWS Batchで起動テンプレートを利用してEFSをマウントする


起動テンプレート作成

これをクリック

何もせずただ下にスクロール。以下の高度な詳細をクリック

起動テンプレートのサポート公式ドキュメントページを見てコピペ!
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/launch-templates.html
ただし file_system_id_01=fs-abcdef123 には自分のEFSのidを入れる。

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- amazon-efs-utils

runcmd:
- file_system_id_01=fs-abcdef123
- efs_directory=/mnt/efs

- mkdir -p ${efs_directory}
- echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab
- mount -a -t efs defaults

--==MYBOUNDARY==--

私はいつも以下でやっている。

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

runcmd:
- file_system_id_01=fs-abcdef123
- efs_directory=/mnt/efs

- mkdir -p ${efs_directory}
- sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport ${file_system_id_01}.efs.ap-northeast-1.amazonaws.com:/ ${efs_directory}

--==MYBOUNDARY==--

コンピューティング環境作成

作成を押す。

ここではマネージド型を選ぶ。

オンデマンドを選ぶ。

するとインスタンスロール、EC2キーペアが選べる。(ロールはなければ自動で作成される)
後でインスタンスに接続してマウントできているか確認するため、キーペア必須!

vCPUを設定する。
この設定について、現時点での自分の認識を書く。間違っている可能性大!公式ドキュメントページ参照のこと!

初めに公式ドキュメント
https://aws.amazon.com/jp/ec2/instance-types/
以下のように書いてある。

[最小 vCPU] で、ジョブキューの需要にかかわらず、コンピューティング環境で維持する EC2 vCPU の最小数を選択します。
[最大 vCPU] で、ジョブキューの需要にかかわらず、コンピューティング環境でスケールアウトできる EC2 vCPU の最大数を選択します。
[必要な vCPU] で、コンピューティング環境の起動に必要な EC2 vCPU の数を選択します。ジョブキューの需要が増えると、AWS Batch はコンピューティング環境で必要な vCPU の数を増やし、vCPU の最大数まで EC2 インスタンスを追加できます。需要が減ると、AWS Batch はコンピューティング環境で必要な vCPU の数を減らし、vCPU の最小数までインスタンスを削減できます。

うーん。正直あまりわからない。
次に私なりの解釈。c4.largeを例に挙げて説明する。

インスタンス vCPU*  メモリ(GiB) ストレージ
c4.large 2 3.75 EBS のみ

最小vCPU:この値を超えない最大個数のインスタンスが起動する。ただし0より大きい値の場合、許可されたインスタンスタイプのvCPUによらず、最低でも1個はインスタンスが起動する。
例)8にした場合:4個インスタンスが起動する(2 $\times$ 4 = 8)
最大vCPU:この値を超えない範囲のもと、jobによってインスタンスが起動する
例)20にした場合:最高で10個インスタンスが起動する(2 $\times$ 10 = 20)
必要なvCPU:わからない(Batchが最小vCPU~最大vCPUの範囲で自動で変動させる)

追加設定:テンプレート、ユーザー指定のAMIを起動をクリックすると起動テンプレートが選べる。
しかし!さっき作ったテンプレートがまだ表示されない!なぜ!

自分なりの解決策としては、このページのまま、再読み込みボタン(chromeなら左上にあるやつ)を押す。

マウント確認

vCPUを1に設定すれば、jobを送信しなくても一個インスタンスが立つのでジョブやキューを作らなくても確認できる。

注意

コンピューティング環境を無効化していても最小vCPUが0でない限り、消しても消しても新しいインスタンスが起動する。
コンピューティング環境は無効化した状態であれば、最小vCPUを編集することができる。

参考記事

コンピューティング環境の作成
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/create-compute-environment.html
Amazon EC2 インスタンスタイプ
https://aws.amazon.com/jp/ec2/instance-types/
起動テンプレートのサポート
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/launch-templates.html