Amazon Simple Storage Service
無制限のファイル保存
bucket 内に object(メタデータ付きの任意のファイル)を保存します。容量は無制限、耐久性はイレブンナイン(99.999999999%)で、HTTP API でアクセスします。
- コスト$ 安い
- 難易度●●●●●
- 未使用でも課金?少し
- サーバーレス
- 出題試験CLF · SAA · DVA · SOA
たとえるなら無限の手荷物預かり所のようなものです。預けた品物ごとに引換券(key)を受け取り、その券で取り戻します。
S3 はシステムのどこにある?
具体例でステップごとに
- 学習アプリで、受講生が課題の PDF や動画をアップロードします。
- アプリが署名付き URL を発行し、ブラウザはサーバーを経由せずに S3 バケットへ直接アップロードします。
- 新しいファイルが Lambda を起動してプレビュー画像を作り、CloudFront が各地の受講生へ動画を高速に配信します。
- ライフサイクルルールで 90 日を過ぎたファイルを S3 Glacier に移し、Standard より大幅に安くします。
- バケットは非公開のまま(ブロックパブリックアクセスはデフォルトで有効)で、バージョニングにより誤って削除・上書きしても古い版が残ります。
いつ使う?
✓ 使うべき場面
画像、動画、バックアップ、Web サイトの静的ファイル、データレイク。
✗ 避けるべき場面
OS/DB をインストールするディスクが必要 → EBS、NFS の共有フォルダが必要 → EFS。
よくある使い方
- ユーザーの画像、動画、ドキュメントを保存
- 静的 Web サイトのホスティング(CloudFront と併用)
- バックアップと長期アーカイブ(Glacier クラス)
- Athena、Glue、EMR 向けのデータレイク
S3・EBS・EFS の違い
料金はいくら?
- 課金方式: ストレージクラスごとの GB 月(Standard 約 $0.023/GB)+ request 数(PUT 約 $0.005/1,000、GET 約 $0.0004/1,000)+ インターネットへのデータ転送。
- 無料枠: インターネットへのデータ転送 100 GB/月が無料(全サービス合計)。旧アカウント: 12 か月間 Standard 5 GB が追加。
インターネットへのデータ転送(約 $0.09/GB)— 前段に CloudFront を置くべきです。数百万の小さなファイルで request 料金が増える。versioning ですべての旧バージョンが残る。Glacier/IA から早期に削除しても最低保存期間分は課金される。
「あまりアクセスしないデータを最も安く」なら適切なストレージクラスとライフサイクルルール、「バケットへの直接アクセスを防ぐ」なら CloudFront とオリジンアクセスコントロール、「EC2 からインターネットを経由せず S3 に書き込む」ならゲートウェイ型 VPC エンドポイントです。
本番の試験問題に挑戦
1A company is designing a website that will be hosted on Amazon S3. How should users be prevented from linking directly to the assets in the S3 bucket?
- ACreate a static website, then update the bucket policy to require users to access the resources with the static website URL.
- BCreate an Amazon CloudFront distribution with an origin access control (OAC) and update the bucket policy to grant permission to the OAC only.
- CCreate a static website, then configure an Amazon Route 53 record set with an alias pointing to the static website. Provide this URL to users.
- DCreate an Amazon CloudFront distribution with an AWS WAF web ACL that permits access to the origin server through the distribution only.
答えを見る
正解: B
バケットの前に CloudFront を置き、オリジンアクセスコントロール(OAC)を使って、バケットポリシーで OAC だけに読み取りを許可します。ユーザーはバケットに直接アクセスできず、必ず CloudFront を経由します。
2A company is planning to use Amazon S3 to store images uploaded by its users. The images must be encrypted at rest in Amazon S3. The company does not want to spend time managing and rotating the keys, but it does want to control who can access those keys. What should a solutions architect use to accomplish this?
- AServer-Side Encryption with encryption keys stored in an S3 bucket
- BServer-Side Encryption with Customer-Provided Keys (SSE-C)
- CServer-Side Encryption with encryption keys stored in AWS Systems Manager Parameter Store
- DServer-Side Encryption with AWS KMS-Managed Keys (SSE-KMS)
答えを見る
正解: D
SSE-KMS は KMS のキーを使います。キーの保管とローテーションは AWS が行い、誰がキーを使えるかはキーポリシーと IAM で制御できます。SSE-C ではキーを自分で管理する必要があり、キーをバケットや Parameter Store に置くべきではありません。
よくある質問
S3 のストレージクラスはどれを選べばよいですか?
頻繁に使うデータには Standard、アクセス頻度が予測できない場合は Intelligent-Tiering、あまり使わないデータには Standard-IA や One Zone-IA、長期アーカイブには Glacier 系のクラスを使います。安いクラスほど取り出しに時間がかかり、取り出し料金も発生します。
S3 バケットはインターネットに公開されていますか?
デフォルトでは公開されていません。ブロックパブリックアクセスが有効になっており、新しいバケットには所有者しかアクセスできません。安全に共有するには、バケットを公開するのではなく署名付き URL を使うか、CloudFront を前に置きます。
AWS 認定試験では S3 について何が問われますか?
ストレージクラスとライフサイクルルール、バージョニング、暗号化(SSE-S3、SSE-KMS)、バケットポリシーとブロックパブリックアクセス、クロスリージョンレプリケーション、署名付き URL、S3 Transfer Acceleration、大きなファイルのマルチパートアップロードなどです。