サイトアイコンmaita tomoya dev io

S3 vs EBS vs EFS vs FSx: AWSストレージサービスの特性比較

cloud-aws

S3 vs EBS vs EFS vs FSx: AWSストレージサービスの特性比較

はじめに

AWSには複数のストレージサービスがあり、それぞれに異なる特性と適した用途があります。本記事では、主要な4つのストレージサービスを比較し、最適なサービスの選び方を解説します。

身近な例えで理解するストレージサービス

  • S3 = 巨大な倉庫。何でも大量に保管できる。取り出すには番号(URL)が必要
  • EBS = PCの内蔵ハードディスク。1台のPCにしか接続できないが、高速で安定
  • EFS = 会社の共有フォルダ。複数のPCから同時にアクセスできるネットワークドライブ
  • FSx = 専門用途の高性能ストレージ。Windows共有(FSx for Windows)やHPC(FSx for Lustre)に特化

各サービスの概要

S3(Simple Storage Service)

オブジェクトストレージ。ファイルをバケット(コンテナ)に保存し、HTTPでアクセス。

特徴:

  • 耐久性: 99.999999999%(イレブンナイン)
  • 事実上無制限の容量
  • ストレージクラスによるコスト最適化(Standard、IA、Glacier等)
  • 静的Webサイトホスティング
  • バージョニング、ライフサイクルポリシー
  • イベント通知(Lambda、SQS、SNS)

EBS(Elastic Block Store)

ブロックストレージ。EC2インスタンスにアタッチして使うディスク。

特徴:

  • EC2の「ハードディスク」として動作
  • 1つのEC2インスタンスにアタッチ(io2のみMulti-Attach対応)
  • SSD(gp3, io2)とHDD(st1, sc1)から選択
  • スナップショットによるバックアップ
  • 暗号化対応

EFS(Elastic File System)

マネージドNFSファイルシステム。複数のEC2インスタンスから同時にマウント可能。

特徴:

  • 複数EC2から同時マウント
  • 自動でストレージ容量が拡縮
  • NFSv4プロトコル
  • スループットモード(バースト/プロビジョニング/エラスティック)
  • ストレージクラス(Standard、IA)

FSx

高性能ファイルシステムのマネージドサービス。複数のタイプがある。

主なタイプ:

  • FSx for Windows File Server: SMBプロトコル、Active Directory統合
  • FSx for Lustre: 高性能コンピューティング向け、S3連携
  • FSx for NetApp ONTAP: エンタープライズNAS
  • FSx for OpenZFS: ZFSベースの高性能ストレージ

比較表

基本特性

項目S3EBSEFSFSx
ストレージタイプオブジェクトブロックファイルファイル
アクセスプロトコルHTTP/HTTPSブロックI/ONFSSMB/NFS/Lustre
同時アクセス無制限1インスタンス(基本)数千インスタンス数千インスタンス
最大容量事実上無制限64TB/ボリューム事実上無制限数百TB
レイテンシ数十ms0.1-1ms数ms0.1-数ms
耐久性99.999999999%99.999%99.999999999%99.999999999%
AZリージョン全体単一AZリージョン全体単一/マルチAZ

料金比較(東京リージョン、月額概算)

項目S3 StandardEBS gp3EFS StandardFSx for Windows
1GBあたり$0.025$0.096$0.36$0.13
100GBの月額$2.50$9.60$36.00$13.00
1TBの月額$25.00$96.00$360.00$130.00
10TBの月額$250.00$960.00$3,600.00$1,300.00

S3ストレージクラス別の料金

クラス1GBあたり/月アクセス特性ユースケース
Standard$0.025頻繁にアクセスホットデータ
Standard-IA$0.0138低頻度アクセス月1回程度
One Zone-IA$0.011低頻度、単一AZバックアップ
Glacier Instant$0.005アーカイブ、即時取得コンプライアンス
Glacier Flexible$0.0045アーカイブ、数分〜数時間長期保存
Glacier Deep Archive$0.002アーカイブ、12時間超長期保存

EBSボリュームタイプ

タイプ種類IOPSスループット用途
gp3汎用SSD3,000(ベース)125MB/s一般的なワークロード
gp2汎用SSDバーストあり---旧世代(gp3推奨)
io2プロビジョニングSSD最大64,0001,000MB/s高IOPS要件
st1スループットHDD---500MB/sビッグデータ
sc1コールドHDD---250MB/sアーカイブ

判断フローチャート

[AWSストレージサービス選定]
    |
    v
[ファイル/オブジェクトの保存? or ディスクとして使う?]
    |
    +-- ファイル/オブジェクト保存
    |       |
    |       v
    |   [複数のサーバーから同時にファイルシステムとしてアクセスが必要?]
    |       |
    |       +-- はい --> [WindowsのSMBが必要?]
    |       |               |
    |       |               +-- はい --> FSx for Windows
    |       |               |
    |       |               +-- いいえ --> [HPCや高スループットが必要?]
    |       |                               |
    |       |                               +-- はい --> FSx for Lustre
    |       |                               |
    |       |                               +-- いいえ --> EFS
    |       |
    |       +-- いいえ --> S3
    |                      (画像、動画、バックアップ、静的サイト等)
    |
    +-- ディスクとして使う
            |
            v
        [EC2のブートボリュームやデータベース用?]
            |
            +-- はい --> EBS
            |           (gp3が標準的な選択)
            |
            +-- いいえ --> S3 or EFS
                          (用途に応じて選択)

ユースケース別の推奨

静的Webサイト

推奨: S3 + CloudFront

[ユーザー] --> [CloudFront (CDN)] --> [S3 Bucket]
                                       HTML, CSS, JS, 画像
  • S3の静的Webサイトホスティング機能を使用
  • CloudFrontでキャッシュ + HTTPS対応
  • 月額: 数百円〜(トラフィックによる)

アプリケーションサーバーのデータ

推奨: EBS (gp3)

  • EC2にアタッチしてデータベースやアプリのデータを保存
  • スナップショットで定期バックアップ
  • パフォーマンスが安定

ログ集約

推奨: S3

  • 複数サーバーからのログをS3に集約
  • ライフサイクルポリシーで古いログを自動的にGlacierに移行
  • Athenaで直接S3上のログを分析
期間ストレージクラス理由
0〜30日Standard頻繁に分析
30〜90日Standard-IAたまに参照
90日〜1年Glacier Instantまれに参照
1年以上Glacier Deep Archiveコンプライアンス保存

コンテナ共有ストレージ

推奨: EFS

[ECS Task 1] --+
               |
[ECS Task 2] --+--> [EFS] (共有ファイルシステム)
               |
[ECS Task 3] --+
  • 複数コンテナから同じファイルにアクセス
  • 設定ファイル、アップロードファイル等の共有

機械学習のトレーニングデータ

推奨: S3 + FSx for Lustre

[S3 Bucket] <--> [FSx for Lustre] <--> [EC2 GPU Instances]
(データ保存)     (高速I/O)              (学習処理)
  • S3にデータを保存(低コスト)
  • FSx for Lustreで高速読み込み(学習時)
  • 学習完了後はFSx for Lustreを削除してコスト削減

S3の実践的な使い方

バケットポリシーの例

S3はデフォルトでは全てのアクセスがブロックされている。公開する場合はバケットポリシーを設定する。

重要なセキュリティポイント:

  • パブリックアクセスブロック設定を適切に行う
  • 不要なパブリックアクセスは絶対に避ける
  • CloudFront経由でのアクセスにはOrigin Access Control(OAC)を使用する

ライフサイクルポリシー

オブジェクトの保存期間に応じてストレージクラスを自動変更する機能。

ルール例動作
30日後にIA移行StandardからStandard-IAに自動変更
90日後にGlacier移行Glacier Instant Retrievalに自動変更
365日後に削除オブジェクトを自動削除

コスト最適化のポイント

S3

  1. ストレージクラスの適切な選択: アクセス頻度に合わせる
  2. S3 Intelligent-Tiering: アクセスパターンが不明な場合に自動最適化
  3. ライフサイクルポリシー: 古いデータを自動的に安いクラスに移行
  4. 不完全なマルチパートアップロードの削除: 忘れがちだがコストの原因になる

EBS

  1. gp3の利用: gp2からgp3に変更するだけでコスト削減(同等以上の性能)
  2. 未アタッチのボリューム削除: EC2を削除してもEBSが残ることがある
  3. スナップショットの定期的なクリーンアップ: 古いスナップショットを削除
  4. ボリュームサイズの最適化: 使用量に対して過大なサイズを避ける

EFS

  1. EFS IA(Infrequent Access)の活用: 30日アクセスされないファイルを自動移行
  2. スループットモードの最適化: エラスティックモードで使用量に応じた課金
  3. 不要なファイルの定期的な削除: EFSは使用量ベースの課金

FSx

  1. 必要な期間だけ起動: ML学習時のみFSx for Lustreを作成
  2. ストレージタイプの適切な選択: SSD vs HDD
  3. データ圧縮/重複排除の活用: FSx for NetApp ONTAPで利用可能

実際の企業事例

Netflix - S3

Netflixは映画やドラマのマスターファイルをS3に保存し、エンコード後の配信用ファイルもS3に格納している。ペタバイト規模のデータをS3で管理し、CloudFrontで世界中に配信している。

Pinterest - EBS/EFS

Pinterestは画像処理パイプラインでEBSを使用し、処理中の中間ファイルをEFSで共有している。大量の画像を効率的に処理するために、ストレージの使い分けを行っている。


まとめ

サービス最適な用途一言で言うと
S3ファイル保存全般、バックアップ、静的サイト万能で安い倉庫
EBSEC2のディスク、データベース高速で安定なSSD/HDD
EFS複数サーバーからの共有アクセス共有ネットワークドライブ
FSxWindows共有、HPC、エンタープライズNAS専門用途の高性能ストレージ

迷ったらまずS3を検討する。ファイルシステムとしてのアクセスが必要な場合にEFS、EC2のディスクにはEBS、特殊要件があればFSxという順序で考えるのが効率的。


参考リンク