AWS Batch の Fargate タイプで最大 200 GiB のエフェメラルストレージを利用できるようになりました

2023.03.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Batch の Fargate タイプで最大 200 GiB のエフェメラルストレージを利用できるようになりました。20 GiB を超えるDocker イメージのジョブが実行できるようになったり、EFS を使わなくてもローカルストレージで処理を検討できたり AWS Batch の Farate タイプの活躍の幅が広がりました。

AWS Fargate で 200 GiB 対応のアップデートは2021年5月のことでした。約2年遅れで AWS Batch から利用する Fargate へも適用されたことになります。

なにが嬉しいのか

従来は AWS Batch の Fargate タイプのエフェメラルストレージサイズは最大 20 GiB でした。そのため、Fargate タイプでは 20 GiB を超える Docker イメージを使用したジョブの実行できませんでした。

今回のアップデートで 200 GiB まで拡張可能になり

  • Docker のイメージサイズが 20 GiB 以上でもジョブを起動できるようになった
    • 機械学習の推論用途
    • コンテナ内で大規模なデータセットを称したデータ処理など
  • 短期間に大量のファイル IO が発生し EFS では性能が足りないときの一手にローカルストレージを検討

今までは EC2 タイプを使わないといけなかった場面でも Fargate タイプを検討できるより、AWS Batch の選択の幅が広がりました。

確認してみた

ジョブ定義を作成します。エフェメラルストレージが 200 GiB まで指定可能になっていました。条件としては Fargate のプラットフォームのバージョンが 1.4.0 以降となっています。

ジョブの実行コマンドはdf -hを実行してローカルストレージの状況を確認してみます。

ジョブを投げて成功しました。

今回使用したコンテナイメージは Amazon Linux 2023(public.ecr.aws/amazonlinux/amazonlinux:latest)です。

ECR Public Gallery - Amazon Linux/amazonlinux

実行結果の確認

標準出力に返したdf -hの実行結果は CloudWatch Logs へ保存されるため、ASCII形式でエクスポートしたデータを載せます。ローカルストレージとして207Gと表示されているのを確認できました。

--------------------------------------------------------
|                       message                        |
|------------------------------------------------------|
| Filesystem      Size  Used Avail Use% Mounted on     |
| overlay         207G  9.6G  189G   5% /              |
| tmpfs            64M     0   64M   0% /dev           |
| shm             1.9G     0  1.9G   0% /dev/shm       |
| tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup |
| /dev/xvdcz      207G  9.6G  189G   5% /etc/hosts     |
| tmpfs           1.9G     0  1.9G   0% /proc/acpi     |
| tmpfs           1.9G     0  1.9G   0% /sys/firmware  |
| tmpfs           1.9G     0  1.9G   0% /proc/scsi     |
--------------------------------------------------------

素の Amazon Linux 2023 のイメージで残り 189 GB の空きがあります。ファイルIOが激しいかつ、中間ファイルが 20 GiB 以上生成される状況下では Fargate タイプのできることが広がったのではないでしょうか。

追加料金

現時点の AWS Batch のドキュメントでは 200 GiB まで指定できる記述は確認できたのですが、追加費用がかかるのかは確認できませんでした。

(Optional) For Ephemeral storage, enter the amount of ephemeral storage to allocate to the task. The amount of ephemeral storage must be between 21 GiB and 200 GiB. By default, 20 GiB of ephemeral storage is allocated if you don't enter a value.

Creating a single-node job definition on AWS Fargate resources - AWS Batch

AWS Batch の Fargate タイプのもとは AWS Fargate ですので Fargete でのエフェメラルストレージ料金と同じものが適用されるのではないかと思われます。そのため、20 GiB を超えるのエフェメラルストレージのサイズ指定は追加料金がかかるものと認識しておいた方が良いでしょう。

料金 - AWS Fargate | AWS

おわりに

AWS Batch の Fargate タイプは EC2 タイプと比べると非力な印象があると思いますが、現在は 16 vCPU、120 GiB メモリ、200 GiB エフェメラルストレージまで強化されています。Fargate タイプも検討できるワークロードが増えてきたのではないでしょうか!EC2 タイプよりコンテナの起動が早いですし、Fargate タイプで実行できるなら積極的に使いたい派によるアップデート紹介でした。