ストレージ選択 — S3・EBS・EFS・FSxを使い分ける
この章の目次開く

学習者S3、EBS、EFSは全部データを保存するサービスですよね。問題文ではどう見分ければいいですか?
AWSのストレージ選択では、オブジェクト、ブロック、ファイルの違いを理解することが重要です。SAA-C03では、S3、EBS、EFS、FSx、Storage Gatewayの使い分けが頻出です。
Amazon S3とは
Amazon S3(Simple Storage Service)は、AWSが提供するオブジェクトストレージサービスです。ファイルを「オブジェクト」として保存し、容量の上限なく、高い耐久性(99.999999999% = イレブンナイン)でデータを保管できます。
学習者オブジェクトストレージって、普通のファイルシステムと何が違うんですか?
通常のファイルシステム(EBSやEFS)はディレクトリ構造でファイルを管理します。一方、オブジェクトストレージはフラットな構造で、各オブジェクトに一意のキーとメタデータを付けて管理します。フォルダのように見える /images/photo.jpg も、実際にはフォルダが存在するのではなく、images/photo.jpg という1つのキーです。

S3の基本用語
| 用語 | 説明 |
|---|---|
| バケット(Bucket) | オブジェクトを入れる器。グローバルで一意な名前が必要。リージョンを指定して作成する |
| オブジェクト(Object) | S3に保存されるデータの単位。ファイル本体 + メタデータで構成される |
| オブジェクトキー(Key) | バケット内でオブジェクトを一意に識別する名前。logs/2024/access.log のようにスラッシュで階層を表現できる |
| バージョンID | バージョニング有効時に付与される識別子。同じキーに上書きしても過去のバージョンを保持・復元できる |
| メタデータ | オブジェクトに付随する情報。Content-Type、暗号化方式、カスタムヘッダーなど |
| ライフサイクルルール | 一定期間後にストレージクラスを変更したり、オブジェクトを自動削除するルール |
| バケットポリシー | バケット単位のアクセス制御。JSON形式のIAMポリシーで、誰がどの操作を許可・拒否されるかを定義する |
| ACL(アクセス制御リスト) | オブジェクトやバケット単位の旧式なアクセス制御。現在はバケットポリシーの使用が推奨されている |
S3の構造を図で見る
バケットの中にオブジェクトがフラットに並び、各オブジェクトはキー・データ本体・メタデータ・バージョンIDで構成されます。ディレクトリ構造に見える / はキー名の一部にすぎません。
バケットポリシーの実務と試験
バケットポリシーはS3のアクセス制御の中核で、試験でも頻出です。JSON形式でPrincipal(誰が)、Action(何を)、Resource(どのバケット/オブジェクトに)、Effect(許可/拒否)を指定します。
学習者IAMポリシーでもS3のアクセス制御はできますよね。バケットポリシーとどう使い分けるんですか?
IAMポリシーは「ユーザーやロールに対して何を許可するか」、バケットポリシーは「バケットに対して誰のアクセスを許可するか」という視点の違いがあります。
| 方式 | 視点 | 主な用途 |
|---|---|---|
| IAMポリシー | ユーザー/ロール側 | 自アカウント内のユーザーにS3の操作権限を付与 |
| バケットポリシー | リソース(バケット)側 | クロスアカウントアクセス、パブリックアクセス制御、特定IPからの制限 |
試験でよく問われるバケットポリシーのパターン
| パターン | ポリシーの要点 |
|---|---|
| 特定アカウントにのみ読み取りを許可 | PrincipalにクロスアカウントのARNを指定し s3:GetObject を許可 |
| HTTPS通信のみを許可 | Conditionで aws:SecureTransport: false のリクエストを Deny |
| 特定のVPCエンドポイントからのみアクセス | Conditionで aws:sourceVpce を指定して Deny |
| CloudFrontからのみアクセス(OAC) | Principalに cloudfront.amazonaws.com を指定 |
| Data Firehoseからの書き込みを許可 | Principalに firehose.amazonaws.com を指定し s3:PutObject を許可 |
先生バケットポリシーの具体的な書き方は S3 バケットポリシーの例(公式) を参照してください。試験では書き方の暗記よりも「どのパターンでバケットポリシーを使うか」の判断が問われます。
参考リンク
ストレージの大分類
| 種類 | サービス | 使いどころ |
|---|---|---|
| オブジェクトストレージ | S3 | 画像、ログ、バックアップ、静的ファイル、データレイク |
| ブロックストレージ | EBS | EC2のディスク、DBのストレージ |
| ファイルストレージ | EFS、FSx | 複数サーバーで共有するファイルシステム |
S3はファイルシステムではなくオブジェクトストレージです。EC2にマウントする通常のディスクが必要ならEBS、複数EC2から共有したいならEFSやFSxを検討します。
S3の設計判断
S3は可用性、耐久性、スケーラビリティに優れたマネージドストレージです。
よく使う機能:
- S3 Standard、Standard-IA、One Zone-IA、Glacier Instant Retrieval、Glacier Flexible Retrieval、Deep Archive
- S3 Lifecycle
- S3 Versioning
- S3 Replication
- S3 Object Lock
- S3 Transfer Acceleration
EBS、EFS、FSx
| サービス | 特徴 |
|---|---|
| EBS | EC2にアタッチするブロックストレージ。gp3、io2などを選ぶ |
| EFS | Linux向け共有ファイルストレージ。複数AZからアクセス可能 |
| FSx for Windows File Server | Windowsファイル共有 |
| FSx for Lustre | HPCや機械学習など高性能ファイルシステム |
| FSx for NetApp ONTAP | ONTAP互換機能が必要な場合 |
複数EC2から同じファイルを共有したい要件では、EBSではなくEFSやFSxが候補になります。
オンプレミス連携
オンプレミスからAWSストレージを使う要件では、AWS Storage Gateway や AWS DataSync が出ます。
| 要件 | 選択肢 |
|---|---|
| オンプレミスからS3をファイル共有のように使いたい | File Gateway |
| オンプレミスデータをAWSへ高速移行したい | DataSync |
| 大量データを物理的に移行したい | Snow Family |
まとめ
ストレージ選択では、データの形とアクセスパターンを見ます。
- 画像・ログ・バックアップなどのオブジェクトデータはS3を選ぶ
- EC2のディスクならEBS
- 複数サーバー共有ならEFSやFSx
- アーカイブはS3 Glacier系
- オンプレ連携はStorage GatewayやDataSync
次の章では、EC2、Lambda、ECS、Fargateなどのコンピューティング選択を扱います。
