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. アーキテクチャおよび技術要素¶
- クライアントが S3 API や SDK、CLI を介してオブジェクトを PUT/GET。
- データは複数 AZ に冗長保存され高耐久性を確保。
- 必要に応じてバージョニング、レプリケーション(クロスリージョンレプリケーション)、ライフサイクルポリシーでデータ管理。
- アクセスは IAM、バケットポリシー、Access Points によって制御。
- 暗号化とログ機能でセキュリティとコンプライアンスニーズに対応。
完全マネージドで、大規模データ分の拡張も自動的に対応。
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. 設定・デプロイ手順(ハンズオン例)¶
- S3 コンソールで新規バケットを作成(バケット名、リージョン指定)。
- 暗号化設定やパブリックブロック設定などのオプションを選択。
- オブジェクトをアップロード(GUI、CLI、SDK)。
- 必要に応じてバケットポリシーや IAM ポリシーでアクセス制御。
- ライフサイクルポリシーやバージョニング、イベント通知、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 は整合性遅延の場合有)