ウェブエンジニア問題集
第11章

ストレージ選択 — S3・EBS・EFS・FSxを使い分ける

10
この章の目次開く
保存先の選択に迷う人のイラスト
学習者学習者

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画像、ログ、バックアップ、静的ファイル、データレイク
ブロックストレージEBSEC2のディスク、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

サービス特徴
EBSEC2にアタッチするブロックストレージ。gp3、io2などを選ぶ
EFSLinux向け共有ファイルストレージ。複数AZからアクセス可能
FSx for Windows File ServerWindowsファイル共有
FSx for LustreHPCや機械学習など高性能ファイルシステム
FSx for NetApp ONTAPONTAP互換機能が必要な場合

複数EC2から同じファイルを共有したい要件では、EBSではなくEFSやFSxが候補になります。


オンプレミス連携

オンプレミスからAWSストレージを使う要件では、AWS Storage GatewayAWS DataSync が出ます。

要件選択肢
オンプレミスからS3をファイル共有のように使いたいFile Gateway
オンプレミスデータをAWSへ高速移行したいDataSync
大量データを物理的に移行したいSnow Family

まとめ

ストレージ選択では、データの形とアクセスパターンを見ます。

  • 画像・ログ・バックアップなどのオブジェクトデータはS3を選ぶ
  • EC2のディスクならEBS
  • 複数サーバー共有ならEFSやFSx
  • アーカイブはS3 Glacier系
  • オンプレ連携はStorage GatewayやDataSync

次の章では、EC2、Lambda、ECS、Fargateなどのコンピューティング選択を扱います。

AWSクイズに挑戦するこの章で学んだAWSの知識を、4択クイズでアウトプットして定着させよう