どうも、CI4課の古川です。
コロナ禍で、2020年のre:Inventはフルリモートでの開催となりました。 来年こそは直接会場に行って参加したいと思います。
ところで、AWS Batchがアップデートされ、Fargateでのジョブ実行が可能しました。
今回はそれについて紹介していきたいと思います。
AWS Batchとは
AWS Batchは、 AWS クラウドでバッチコンピューティングワークロードを実行するフルマネージド型のサービスです。
従来はECS on EC2をベースとしており、ジョブ定義で指定したパラメータを使用してEC2上のコンテナ化されたアプリケーションとして実行されます。 また、キューイング、スケジューリング、ライフサイクル管理を簡素化します。
アップデート後の仕様
AWS BatchのリソースタイプとしてFargateまたはFargateSpotを指定し、Fargateジョブ定義を送信するだけで、EC2 インスタンスまたは AMI の管理は不要になります。 サーバーレスコンピューティングのメリットを活用できるようになります。
コンピューティング環境の作成
コンピューティング環境にて、プロビジョニングモデルに2つのオプションFargateとFargate Spotが追加されました。
Fargateを選択すると、vCPUとサブネットを指定するだけでコンピューティング環境が簡単に作成できます。
コンピューティング環境として blog-test を作成しました
ジョブキューの作成
次にジョブキューを作成し、Fargateコンピューティング環境に接続します。
先ほど作成したコンピューティング環境 blog-test を指定し、キューの名前を test-blog としました。
ジョブキュー定義の作成
ジョブ定義を作成します。プラットフォームにFargateが追加されています。 実行タイムアウトやコンテナプロパティを設定します。
ジョブキューの送信
先ほど作成したジョブ定義から、新しいジョブを送信します。
今回はキュー名をtestとして送信しました。
Fargateにてコンテナのデプロイと、タスクが追加されていることを確認できました。
キューが送信されたことを確認できました。
まとめ
今回はアップデートの紹介ということで、定量評価はしていませんが ジョブの作成→ジョブのキューイング→Fargate起動→キューの送信までの流れを短時間で実施できました。
ECS on EC2の場合ですとEC2起動に時間がかかってしまい、かつホストマシンの管理・運用が必要になってしまいます。
データベースのバックアップ取得で夜間バッチを使用する場合など、スポットで利用する場合はAWS Batch for FargateとCloudWatch Eventsを組み合わせると良いのではないでしょうか。