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ベースの高性能ストレージ
比較表
基本特性
| 項目 | S3 | EBS | EFS | FSx |
|---|---|---|---|---|
| ストレージタイプ | オブジェクト | ブロック | ファイル | ファイル |
| アクセスプロトコル | HTTP/HTTPS | ブロックI/O | NFS | SMB/NFS/Lustre |
| 同時アクセス | 無制限 | 1インスタンス(基本) | 数千インスタンス | 数千インスタンス |
| 最大容量 | 事実上無制限 | 64TB/ボリューム | 事実上無制限 | 数百TB |
| レイテンシ | 数十ms | 0.1-1ms | 数ms | 0.1-数ms |
| 耐久性 | 99.999999999% | 99.999% | 99.999999999% | 99.999999999% |
| AZ | リージョン全体 | 単一AZ | リージョン全体 | 単一/マルチAZ |
料金比較(東京リージョン、月額概算)
| 項目 | S3 Standard | EBS gp3 | EFS Standard | FSx 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 | 汎用SSD | 3,000(ベース) | 125MB/s | 一般的なワークロード |
| gp2 | 汎用SSD | バーストあり | --- | 旧世代(gp3推奨) |
| io2 | プロビジョニングSSD | 最大64,000 | 1,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
- ストレージクラスの適切な選択: アクセス頻度に合わせる
- S3 Intelligent-Tiering: アクセスパターンが不明な場合に自動最適化
- ライフサイクルポリシー: 古いデータを自動的に安いクラスに移行
- 不完全なマルチパートアップロードの削除: 忘れがちだがコストの原因になる
EBS
- gp3の利用: gp2からgp3に変更するだけでコスト削減(同等以上の性能)
- 未アタッチのボリューム削除: EC2を削除してもEBSが残ることがある
- スナップショットの定期的なクリーンアップ: 古いスナップショットを削除
- ボリュームサイズの最適化: 使用量に対して過大なサイズを避ける
EFS
- EFS IA(Infrequent Access)の活用: 30日アクセスされないファイルを自動移行
- スループットモードの最適化: エラスティックモードで使用量に応じた課金
- 不要なファイルの定期的な削除: EFSは使用量ベースの課金
FSx
- 必要な期間だけ起動: ML学習時のみFSx for Lustreを作成
- ストレージタイプの適切な選択: SSD vs HDD
- データ圧縮/重複排除の活用: FSx for NetApp ONTAPで利用可能
実際の企業事例
Netflix - S3
Netflixは映画やドラマのマスターファイルをS3に保存し、エンコード後の配信用ファイルもS3に格納している。ペタバイト規模のデータをS3で管理し、CloudFrontで世界中に配信している。
Pinterest - EBS/EFS
Pinterestは画像処理パイプラインでEBSを使用し、処理中の中間ファイルをEFSで共有している。大量の画像を効率的に処理するために、ストレージの使い分けを行っている。
まとめ
| サービス | 最適な用途 | 一言で言うと |
|---|---|---|
| S3 | ファイル保存全般、バックアップ、静的サイト | 万能で安い倉庫 |
| EBS | EC2のディスク、データベース | 高速で安定なSSD/HDD |
| EFS | 複数サーバーからの共有アクセス | 共有ネットワークドライブ |
| FSx | Windows共有、HPC、エンタープライズNAS | 専門用途の高性能ストレージ |
迷ったらまずS3を検討する。ファイルシステムとしてのアクセスが必要な場合にEFS、EC2のディスクにはEBS、特殊要件があればFSxという順序で考えるのが効率的。