🐈

ECSにアタッチ可能なボリューム一覧と特徴

2024/02/25に公開

初めに

2024/1/11のAWSアップデート( https://aws.amazon.com/jp/about-aws/whats-new/2024/01/amazon-ecs-fargate-integrate-ebs/ )により、ECSにEBSをアタッチできるようになった。それに伴い、本ページでは「ECSにアタッチ可能なボリューム一覧と特徴」についてまとめる。ECSのアップデート概要および利用方法については、以下のページにまとめている。
https://zenn.dev/proyogram/articles/52afb400af3d5c

また、本ページは以下のAWSドキュメントを参考にまとめている。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

ECSで利用可能なボリューム一覧

ECSで利用可能なボリュームは以下である。

  • EBS volumes
  • Fargate ephemeral task storage
  • EFS volumes
  • FSx for Windows File Server volumes
  • Docker volumes
  • Bind mounts

ECS起動タイプ別ボリューム利用可否

ECSには、ECS on Fargate と ECS on EC2の2つの起動タイプがある。
ECSの起動タイプによって利用可能なボリュームが異なるため、以下にそれぞれの利用可否をまとめる。

ボリューム EC2 Fargate
EBS volumes
⭐️2024/1/11から利用可能!

⭐️2024/1/11から利用可能!
EFS volumes
FSx for Windows File Server volumes
Windowsのみサポート
×
Docker volumes ×
Bind mounts
※Fargate ephemeral task storageを指す

ボリューム別特徴

EBS volumes

ECSにおける EBSの特徴をまとめる。EBS固有の特徴については「EBSのドキュメント」を参照する。

  • 一時ストレージ領域
    • ECSタスクが停止すると削除されてしまう
  • 新規のボリュームしかアタッチできない。
    • 既存のボリュームはアタッチできない。
    • スナップショットから復元されたボリュームについてはアタッチできる。

その他の特徴は以下の記事でまとめている。
https://zenn.dev/proyogram/articles/c04c3f8438542d

EFS volumes

ECSにおける EFSの特徴をまとめる。EFS固有の特徴については「EFSのドキュメント」を参照する。

  • 従来、ECSで一般的に使用されてきたボリューム
  • 永続ストレージ
  • タスク間の共有ストレージとして利用可能
    • AZを跨るタスク間のデータ共有も可能

参考:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html

その他の特徴はEFSの特徴を参照

FSx for Windows File Server volumes

  • Fargateはサポート外
  • EC2のWindowsコンテナのみサポート
    • Amazon ECS-Optimized Windows Server 2016 Full AMI はサポート外
  • 永続的なファイルサーバ
  • その他の特徴は以下のドキュメントを参照

参考:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html

Docker volumes

  • EC2と外部インスタンスでサポート
  • 永続ストレージ。設定(タスク定義のscope)を変更することで、一時ストレージ領域としても利用可能。
  • 同一コンテナインスタンス内のコンテナ間で共有可能
  • 外部ストレージと連携することで使用する
    • EBS volmes
    • ローカルのボリューム(Windowsインスタンスの場合は)
    • サードパーティのボリューム
  • Windowsインスタンスの場合、上の3つの外部ストレージのうち「ローカルのボリューム」のみ連携可能

参考:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-volumes.html

Bind mounts

  • 一時ストレージ領域
    • ECSタスクが停止すると削除されてしまう
  • 同一タスク内のコンテナ間で共有可能
  • Fargateにおける Fargate ephemeral task storage を指す
    • 詳細については、以下の「Fargate ephemeral task storage」に記載
  • EC2でも利用可能

参考:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bind-mounts.html

Fargate ephemeral task storage (Bind mounts)

  • 一時ストレージ領域(名前の通り)
  • コンテナイメージの容量も含まれる(以下に式と例を示す)
 式)実際に使える容量 = ①設定したエフェメラル容量 - ②イメージの容量
 例)① = 20GiB, ② = 1GiB の場合、
   実際に使える容量 = 20GiB - 1GiB = 19GiB
  • Fargate Linux プラットフォームバージョン 1.4.0 以降を使用している場合、

    • defaultで20GiBが設定される。
    • AES-256 暗号化アルゴリズムにより暗号化される。
    • 容量は、最小20Gib ~ 最大200GiBを設定可能。
    • Container Insights をオンにすると、エフェメラルストレージの予約サイズと使用量が Amazon CloudWatch Container Insights に送信される。(Windowsコンテナはサポート外)
  • Fargate Linux プラットフォームバージョン 1.3.0 以前を使用している場合、

    • 10GB の Docker Layer ストレージ
    • 4GB の ボリュームマウント用ストレージ
      • コンテナ間で共有するために使用
  • Fargate Windows プラットフォームバージョン 1.0.0 以降を使用している場合、

    • 容量は、最小20Gib ~ 最大200GiBを設定可能。

参考:
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/fargate-task-storage.html

Discussion