S3(Amazon Simple Storage Service)とは
データを保存、管理、取得するオブジェクトストレージサービス
S3の基本概念
バケット
オブジェクトを整理するためのコンテナのようなもの
オブジェクト
バケット内に保存されるデータそのもの
キー
オブジェクトの一意の識別子。オブジェクトのファイルパスと考えることができます。
各オブジェクトは 「バケット名 + キー」 の組み合わせで一意に識別されます
メリット
耐久性と可用性が高い
- 耐久性99.999999999%(11 9’s):データが失われるリスクは非常に低いです
- 可用性99.99%(S3 Standard):アクセスできなくなる可能性がほぼないです
- 自動的に複数のAZ(アベイラビリティゾーン)にレプリケーションできます
保管先を自由に設定できる
データの配置を分散管理することで、リスクの軽減につながります
デメリット
動的処理を要するWebサービスに使用できない
- データの部分更新ができず、新規作成 or 削除しかできない
対策
- 画像アップロード・変換ではS3 + Lambdaを使う
レイテンシがある(ディスクストレージより遅い)
- S3はオブジェクトストレージのため、ブロックストレージ(EBS, EFS)よりもアクセス速度が遅い
- 高速な読み書きが必要なデータには不向き
- 画像や動画の保存・配信なら問題なし
対策
- 頻繁にアクセスするデータはEC2 + EBSを使う
- CloudFront(CDN)を使ってキャッシュすることで高速化
ディレクトリ構造がない(キーで管理)
- S3にはフォルダの概念がなく、「キー(Key)」でオブジェクトを管理する
- ファイル一覧取得(ListObjects)に時間がかかる
対策
- 「プレフィックス(例:
logs/2025/03/
)」を工夫して整理 - DynamoDBと組み合わせてメタデータを管理する
S3のストレージクラス
- Standard: 高速アクセス向け(デフォルト)
- Standard-IA: 低頻度アクセス向け(コスト削減)
- One Zone-IA: 低頻度+単一AZ(コスト最安)
- Intelligent-Tiering: 自動で最適なクラスに移行
- Glacier: アーカイブ用(取り出しに時間がかかるが安価)
- Glacier Deep Archive: 超長期保存向け(最安)
機能
ストレージ機能
オブジェクトストレージ
ファイルをオブジェクトとして保存
バケット管理
バケット内にオブジェクトを整理して保存
マルチパートアップロード
大容量ファイルを分割して効率的にアップロード
データライフサイクル管理
- ストレージクラスの自動移行(ライフサイクルルール)
- 不要なデータの自動削除
バージョン管理
オブジェクトのバージョニング
変更前のデータを保存して復元可能
静的Webサイトホスティング
- S3で静的ウェブサイトを公開可能(HTML, CSS, JavaScriptなど)
- カスタムドメイン + CloudFrontで高速CDN対応
アクセス管理
- IAMポリシー:S3へのアクセス権限をAWS IAMで管理
- バケットポリシー:バケットごとにアクセス制御を設定可能
- パブリックアクセスブロック:誤ってインターネット公開しないように保護
- S3オブジェクトロック:特定の期間データを変更不可にする(WORM: Write Once Read Many)
- 暗号化:
- SSE-S3(S3管理のキーで暗号化)
- SSE-KMS(AWS KMSを使った暗号化)
- SSE-C(ユーザー管理のキーで暗号化)
ログ管理・監視
- S3アクセスログ:S3バケットへのアクセス履歴を記録
- CloudTrail統合:AWS CloudTrailでS3の操作履歴を確認
- S3 Event Notifications:オブジェクトの変更を通知(SNS, SQS, Lambdaと連携)
使用場面
ストレージとしての使用
- RDSバックアップの保存
- ログデータのアーカイブ
- 画像や動画のアップロード
静的ウェブサイトのホスティング
- ポートフォリオサイトやブログ
- SPA(シングルページアプリケーション)
- 企業ウェブサイト
まとめ
S3は、高耐久・高可用性のオブジェクトストレージで、データの保存や管理に優れています。ストレージ用途や静的ウェブサイトホスティングなど多様な場面で活用され、コスト最適化も可能です。