はじめに
AWS Solutions Architect Associate (SAA) の学習中に整理した Amazon EFS 関連の知識をまとめました。
EFS は「複数 EC2 から同時アクセスできるファイルストレージ」という特徴を持ち、EBS や S3 との使い分けが試験で頻繁に問われます。
本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。
サービス概要
EFS の特徴
- NFS プロトコル(SMB は非対応)
- Linux 専用(Windows は非対応)
- 複数 EC2 から同時アクセス可能
- リージョナルサービス(複数 AZ にマウントターゲットを配置)
- POSIX 準拠
「NFS + Linux + 複数 EC2 から同時アクセス」というキーワードが揃ったら EFS を選びましょう。Windows や SMB が出てきたら FSx for Windows の出番です。
ストレージクラス
| クラス | 用途 |
|---|---|
| Standard | 頻繁アクセス(複数 AZ) |
| Standard-IA | 低頻度アクセス(複数 AZ、コスト削減) |
| One Zone | 低頻度アクセス(単一 AZ、さらに安い) |
パフォーマンスモード
| モード | 用途 |
|---|---|
| General Purpose(デフォルト) | レイテンシー重視(Web サーバー、CMS、ホームディレクトリ) |
| Max I/O | スループット・IOPS 重視(ビッグデータ、メディア処理、ゲノム解析) |
スループットモード
| モード | 動作 |
|---|---|
| Bursting | ファイルシステムのサイズに比例してスループットがスケール |
| Provisioned | サイズに関係なくスループットを明示的に指定 |
| Elastic | ワークロードに応じて自動スケール(追加料金) |
試験では パフォーマンスモード と スループットモード を混同させる問題が出ます。この2つは別の設定軸です。
- パフォーマンスモード → レイテンシー vs スループットの優先度
- スループットモード → スループットの確保方法
マウントターゲット
- VPC レベルの ENI(Elastic Network Interface)
- 各 AZ に1つ作成 → 同一 AZ 内アクセスで低レイテンシー + クロス AZ 料金なし
- EFS サービスが管理するもの(EC2 上に作成するものではない)
クロスリージョンアクセス
- EFS はリージョナルサービスだが、VPC ピアリングでクロスリージョンアクセスが可能
- 単一のファイルシステムを複数リージョンから共有 → コラボレーション用途に有効
試験で問われる設計パターン
SAA の試験では「EFS と EBS と S3 のどれを選ぶか?」「EFS のどのモードを選ぶか?」というシナリオ問題が出題されます。
アクセスパターン系
クロスリージョンアクセス → Inter-Region VPC Peering
シナリオ: us-east-1 に構築した EFS に、アジアや欧州のチームからもアクセスしたいです。ファイルの共同編集が必要です。どの方法が適切でしょうか?
正解: Inter-Region VPC ピアリングで EFS にクロスリージョンアクセス
- S3 はインプレース編集ができず、POSIX 非準拠
- 各リージョンに EFS をコピーすると別ファイルになり、共同編集ができない
低レイテンシーアクセス → 各 AZ にマウントターゲット
シナリオ: 複数の AZ に配置された EC2 インスタンスから EFS にアクセスしています。レイテンシーを最小化し、クロス AZ のデータ転送料金も抑えたいです。どのように設定すべきでしょうか?
正解: 各 AZ にマウントターゲットを作成 → EC2 は同一 AZ のマウントターゲットにマウント
- マウントターゲットは EFS 側の ENI(EC2 上に作成するものではない)
- 同一 AZ 内アクセス → 低レイテンシー + クロス AZ 料金なし
- S3 Mountpoint は POSIX 準拠ではない
低頻度アクセス + 数百 EC2 から同時アクセス → EFS Standard-IA
シナリオ: 数百台の EC2 インスタンスから同時にアクセスされるファイルストレージが必要です。アクセス頻度は低いですが、アクセス時はすぐに読み書きできる必要があります。コストを最小化する構成はどれでしょうか?
正解: Amazon EFS Standard-IA
- ファイルストレージ + 同時アクセス → EFS(S3 はオブジェクトストレージ)
- EBS は基本的に単一 EC2 向け
- EFS Standard-IA は EFS Standard より安価
スループットモードの選択
散発的バースト + 低平均スループット → Burst Throughput Mode
シナリオ: EFS を使ったアプリケーションがあります。普段のスループットは低いですが、時折バースト的なアクセスが発生します。手動でのプロビジョニングは避けたいです。どのモードが適切でしょうか?
正解: EFS Burst Throughput Mode + General Purpose Performance Mode + Standard
- 散発的バースト + 低平均 → Burst Mode
- 常時高スループット + データ量が少ない → Provisioned Mode
- ストレージクラス(Standard / IA / One Zone)とスループットモードは別の設定軸
ECS タスクの高頻度読み書き + 共有ストレージ → EFS Provisioned Throughput
シナリオ: 数百の ECS タスクが同時実行され、各タスクが20MBのデータを出力します。高頻度の読み書きが発生する共有ストレージに、どのモードを選ぶべきでしょうか?
正解: EFS Provisioned Throughput
- データ量は少ないが高スループットが必要 → Provisioned
- EBS は共有アクセスに不向き
- DynamoDB のアイテムサイズ上限は400KB(20MBは格納不可)
他サービスとの組み合わせ
ECS Fargate + POSIX 共有 + マルチ AZ + クロスリージョンバックアップ → EFS + AWS Backup
シナリオ: ECS Fargate のコンテナに POSIX 準拠の共有ストレージが必要です。マルチ AZ で高可用性を確保しつつ、クロスリージョンでバックアップも取りたいです。どの構成が適切でしょうか?
正解: EFS Standard + AWS Backup
- S3 は POSIX 非準拠
- FSx for Lustre は HPC 向け
- FSx for ONTAP のクロスリージョンには SnapMirror が必要
EFS Standard-IA からのコスト最適化(アーカイブ用途)→ S3 Intelligent-Tiering
シナリオ: EFS Standard-IA にアーカイブ用途のデータを保存していますが、さらにコストを削減したいです。どの方法が最もコスト効率が良いでしょうか?
正解: S3 Intelligent-Tiering + S3 API でアプリケーションを更新
- アーカイブ用途では EFS より S3 の方が GB 単価が安い
- リファクタリングが不可能な場合は EFS 内で最適化
オンプレ NFS → EFS へのレプリケーション → DataSync + Direct Connect + PrivateLink
シナリオ: オンプレミスの NFS ファイルサーバーのデータを AWS の EFS に定期的にレプリケーションしたいです。接続は Direct Connect を使用します。どの構成が最適でしょうか?
正解: DataSync Agent → Direct Connect(Private VIF)→ PrivateLink Interface VPC Endpoint for EFS → DataSync スケジュール
- S3 Gateway Endpoint は Direct Connect 経由のオンプレミスからは使えない
- VPC Peering は Direct Connect 経由の転送には使えない
おわりに
EFS は「NFS + Linux + 複数 EC2 から同時アクセス」というユースケースで選択するサービスです。パフォーマンスモードとスループットモードの2つの設定軸を混同しないこと、EBS や S3 との使い分けを正確に理解しておくことが、試験対策として重要です。
間違いや補足があればぜひコメントで教えてください。