AWS Batchはジョブを実行する度にコンテナを展開し、Lambdaのように使用時間を節約できる便利なサービスです。
しかしマネージド型は、最も安価なインスタンスタイプでもm3.mediumまでしか選べません。
インスタンスはジョブ終了後、10分放置すると自動でterminateされますが、少し無駄な気がします。
選択肢の一つとして、アンマネージド型でt2.microのEC2インスタンスを利用する方法を紹介します。
公式ドキュメント
利用するポイント
① AWS Batchのコンピューティング環境の設定で、アンマネージド型の設定を新規作成する
② ①の後、ECSクラスタが生成されるので、ARNを取得する
③ t2.microのインスタンスを作成※1する際、「/etc/ecs/ecs.config」に「ECS_CLUSTER=②のARN」を書き込むbashスクリプト※2をユーザーデータに登録する
④ ①のコンピューティング環境を使用してAWS Batchジョブを実行する
※1:インスタンス作成に使用するAMI
ECSに最適化されたAMIイメージがAWSによって公開されていますので、使用したいリージョンのイメージを指定します
例)ami-05b296a384694dfa4(2018年11月、ap-northeast-1の場合)
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-optimized_AMI_launch_latest.html
※2:③で登録するユーザーデータについて
- 登録例
- コンピューティング環境名:example_compute_environment
- 生成されたECSクラスターのARN:arn:aws:ecs:ap-northeast-1:000000000000:cluster/example_compute_environment_a0000000-0000-0000-0000-000000000000
# !/bin/bash
echo "ECS_CLUSTER=arn:aws:ecs:ap-northeast-1:000000000000:cluster/example_compute_environment_a0000000-0000-0000-0000-000000000000" >> /etc/ecs/ecs.config