コンテンツにスキップ

Simple Storage Service (S3)

1. サービス概要

Amazon Simple Storage Service (S3)は、インターネット規模で高い耐久性・可用性・スケーラビリティを提供するオブジェクトストレージサービス。 任意のデータ(画像、動画、ログファイル、バックアップなど)を格納し、Web 経由でアクセス可能。 事実上無制限のスケールアウト、99.999999999% (11 ナイン)の耐久性、地域冗長を実現している。

主なユースケースには、

  • バックアップ・アーカイブ、
  • 静的ウェブサイトホスティング、
  • ビッグデータ分析基盤のストレージ、
  • メディア配信

などがある。

2. 主な特徴と機能

2.1 ストレージクラス

Amazon S3 はアクセス頻度やデータ保持ポリシーに応じて複数のストレージクラスを提供する。

  • S3 Standard: 頻繁アクセス向け、低遅延高スループット。
  • S3 Intelligent-Tiering: アクセスパターンに応じて自動的に最適コスト層にデータを移動。
  • S3 Standard-IA / S3 One Zone-IA: 低頻度アクセスデータ向け、取り出し頻度が少ないが即時アクセス必要な場合に最適。
  • S3 Glacier / Glacier Deep Archive: アーカイブ用途。取り出しに数分~数時間かかるが、極めて低コスト。

2.2 バケットとオブジェクト

データは「バケット」と呼ばれるコンテナに格納される。 バケット内にオブジェクト(ファイル)を保存し、キー(パスのような文字列)でアクセスする。 バケット名はグローバルユニークで、リージョン単位でデータが冗長化される。

2.3 バージョニングとライフサイクル管理

バージョニングを有効にすることで、オブジェクト更新履歴を保持可能。 ライフサイクルポリシーを使うと、一定期間後にストレージクラスをより低コスト層へ自動移行したり、削除したりできる。

2.4 暗号化とセキュリティ

保存時暗号化(SSE-S3, SSE-KMS)、クライアント側暗号化、トランジット時の HTTPS 利用など、総合的なセキュリティを提供。 アクセスコントロールには IAM ポリシー、バケットポリシー、ACL、S3 Access Point などの手法が活用できる。

2.5 イベント通知と統合

S3 のオブジェクト操作(作成、削除)をトリガーに、Amazon SQS、SNS、AWS Lambda へイベント通知可能。 データアクセスログ、サーバーアクセスログ、S3 Inventory による監査と可視化も可能。

3. アーキテクチャおよび技術要素

  1. クライアントが S3 API や SDK、CLI を介してオブジェクトを PUT/GET。
  2. データは複数 AZ に冗長保存され高耐久性を確保。
  3. 必要に応じてバージョニング、レプリケーション(クロスリージョンレプリケーション)、ライフサイクルポリシーでデータ管理。
  4. アクセスは IAM、バケットポリシー、Access Points によって制御。
  5. 暗号化とログ機能でセキュリティとコンプライアンスニーズに対応。

完全マネージドで、大規模データ分の拡張も自動的に対応。

4. セキュリティと認証・認可

  • IAM ポリシー: ユーザやロールに対して S3 リソースへのアクセス権限を付与/制限。
  • バケットポリシー: バケット単位でアクセス制御。特定 IP アドレス制限やクロスアカウントアクセス許可など。
  • アクセスコントロールリスト(ACL): より粗い粒度での権限設定(非推奨傾向)。
  • SSE-S3 / SSE-KMS 暗号化: SSE-S3 は AWS 管理キー、SSE-KMS は顧客管理キーで暗号化。
  • VPC エンドポイント: パブリックインターネットを経由せずに VPC から S3 へプライベート接続。

5. 料金形態

Amazon S3 は主に以下に基づく従量課金モデル:

  • ストレージ使用量: GB/月単位で料金が発生。ストレージクラスにより単価は異なる。
  • リクエスト数: PUT、GET、LIST リクエストなど、要求回数に応じて課金。
  • データ転送料: リージョン外へのデータ転送時に別途料金発生。
  • オプション機能: S3 Inventory、Replicas の転送、S3 Batch Operations などで追加コスト。

6. よくあるアーキテクチャ・設計パターン

  • 静的ウェブホスティング: S3 に静的ファイルを格納し、CloudFront で CDN 配信。
  • ビッグデータ基盤: S3 をデータレイクとして活用し、Athena や EMR、Redshift Spectrum で解析。
  • バックアップ・アーカイブ: 定期バックアップ、ライフサイクル管理による低コストアーカイブ。
  • マルチリージョンレプリケーション: グローバル分散、災害対策で CRR(Cross-Region Replication)を利用。

7. 設定・デプロイ手順(ハンズオン例)

  1. S3 コンソールで新規バケットを作成(バケット名、リージョン指定)。
  2. 暗号化設定やパブリックブロック設定などのオプションを選択。
  3. オブジェクトをアップロード(GUI、CLI、SDK)。
  4. 必要に応じてバケットポリシーや IAM ポリシーでアクセス制御。
  5. ライフサイクルポリシーやバージョニング、イベント通知、Inventory を有効化して管理性・コスト最適化を高める。

8. 試験で問われやすいポイント

8.1 ストレージクラス選択

  • Q: 高頻度アクセスで低遅延が必要な場合は?
  • A: S3 Standard。
  • Q: アクセス頻度が不明・変動する場合、コスト最適化は?
  • A: S3 Intelligent-Tiering。
  • Q: 長期保管でコストを最小化し、アクセスはごく稀な場合?
  • A: S3 Glacier や Glacier Deep Archive。

8.2 アクセス制御とセキュリティ

  • Q: パブリックアクセスを防ぐには?
  • A: バケットポリシーで拒否、パブリックアクセスブロック機能を有効化。
  • Q: 暗号化するには?
  • A: SSE-S3、SSE-KMS を選択。KMS を用いる場合は鍵ポリシーも確認。

8.3 バージョニング・ライフサイクル・レプリケーション

  • Q: 削除したオブジェクトを復元可能にする方法は?
  • A: バージョニング有効化。
  • Q: 一定期間後に自動で低コスト層へ移行するには?
  • A: ライフサイクルルール設定。
  • Q: 別リージョンに自動的にオブジェクトをコピー?
  • A: クロスリージョンレプリケーション(CRR)。

8.4 パフォーマンスと最適化

  • Q: 高並行アクセスのボトルネック解消には?
  • A: プレフィックス分散。オブジェクトキー名にランダム化や日時ディレクトリで並列化。
  • Q: 高速アップロード/ダウンロード?
  • A: S3 Transfer Acceleration を有効化。

8.5 イベント通知と他サービス統合

  • Q: オブジェクトが追加されるたびに Lambda で処理?
  • A: S3 イベント通知を Lambda に設定。
  • Q: オブジェクトメタデータやアクセス権をまとめて取得?
  • A: S3 Inventory で定期的に CSV レポート出力。

8.6 コスト管理

  • Q: コスト削減には?
  • A: 不要なオブジェクト削除、低アクセスデータを IA や Glacier へ移行、ライフサイクル活用。

8.7 類似・関連サービスとの比較

  • Q: EBS や EFS と S3 の違いは?
  • A: S3 はオブジェクトストレージ(HTTP アクセス)、EBS はブロックストレージ、EFS は NFS ファイルシステム共有。

8.8 その他細かな試験ポイント

  • S3 URL 形式 (バケット名、リージョン名、オブジェクトキー)
  • バケット名のグローバルユニーク性
  • データ整合性モデル (PUT 後の READ は即時整合性、DELETE 後の READ は整合性遅延の場合有)