Amazon S3とは何か
Amazon S3(Amazon Simple Storage Service)は、AWSの代表的なオブジェクトストレージです。画像、動画、バックアップ、ログ、静的Webサイトの配信元、データレイク用データなどを保存できます。S3は「サーバーのディスクを増やすサービス」ではなく、バケットという入れ物の中に、オブジェクト(ファイル本体+メタデータ)を保存する仕組みです。Cloud Practitioner試験では、この「S3はオブジェクトストレージである」という前提が最重要です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
最初に押さえるべき試験ポイント
- S3はオブジェクトストレージ。OS用のディスクではない。
- 高い耐久性を前提に設計されている。
- 保存先はバケット、保存物はオブジェクト。
- デフォルトの保存クラスはS3 Standard。
- 公開はデフォルトでは許可されず、Block Public Accessが強く効く。
- 現在はすべての新規オブジェクトがデフォルトで暗号化される。
用語を短く整理
- バケット: オブジェクトを保存する入れ物。
- オブジェクト: S3に保存されるデータ本体。ファイルに近いが、内部的にはメタデータも持つ。
- ストレージクラス: 保存コスト・取り出し速度・最小保存期間などの特性を決める区分。
- ライフサイクル: 一定日数後に別クラスへ移行したり削除したりする自動ルール。
- Versioning: 上書きや削除の前の版を保持する機能。
S3でできること
S3は単なるファイル置き場ではなく、試験でよく問われる機能が多くあります。代表的なものは次のとおりです。(参考: https://aws.amazon.com/s3/features/)
1. 大量データの保存
バックアップ、アーカイブ、ログ保管、アプリの画像ファイル、静的コンテンツ配信元などに使えます。用途が幅広いため、問題文で「大量データ」「長期保存」「Webコンテンツ保存」「低コスト保存」が見えたら、まずS3を候補に入れます。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
2. バージョニング(Versioning)
オブジェクトを上書き・削除したときに、以前の版を残せます。誤削除や誤上書き対策として非常に重要です。試験では「うっかり消しても戻せるようにしたい」という要件で問われやすい機能です。(参考: https://aws.amazon.com/s3/features/)
3. ライフサイクル管理
一定期間経過後に、S3 StandardからS3 Standard-IAやS3 Glacier Flexible Retrievalなどへ自動移行したり、不要になったデータを自動削除したりできます。コスト最適化の定番機能です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
4. レプリケーション
同一リージョン内または別リージョンへ自動複製できます。災害対策やコンプライアンス要件に関連して問われることがあります。(参考: https://aws.amazon.com/s3/features/)
5. 静的Webサイトホスティング
HTML、CSS、JavaScriptなどの静的サイトをS3で公開できます。ただし、S3のWebsite endpointはHTTPSをサポートしません。本番運用でHTTPSが必要なら、CloudFrontやAmplify Hostingを併用するのが基本です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html)
6. イベント通知
オブジェクト作成や削除などをきっかけに、通知や後続処理を実行できます。たとえば、S3に画像が置かれたらLambdaでサムネイルを作る、といった設計です。通知先としてSQS、SNS、Lambdaなどを使えます。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html)
ストレージクラスを試験向けに整理
Cloud Practitionerでは、S3の出題でどのストレージクラスを選ぶべきかが非常に重要です。全部を細かく暗記するより、用途で整理すると分かりやすいです。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)
| ストレージクラス | 向いている用途 | 取り出し性 | 試験での覚え方 |
|---|---|---|---|
| S3 Standard | 頻繁に使うデータ | 即時 | まず基本形 |
| S3 Intelligent-Tiering | アクセス頻度が読めない | 即時中心 | 自動最適化 |
| S3 Standard-IA | 低頻度アクセスだがすぐ取り出したい | 即時 | たまに読む保管用 |
| S3 One Zone-IA | 低頻度アクセスで単一AZでもよい | 即時 | さらに安くしたいが冗長性要件に注意 |
| S3 Glacier Instant Retrieval | アーカイブ寄りだが即時取得したい | 即時 | アーカイブと即時性の中間 |
| S3 Glacier Flexible Retrieval | バックアップ、長期保管 | 復元後に取得 | 「すぐでなくてよい」保管 |
| S3 Glacier Deep Archive | 最安重視の長期アーカイブ | 復元後に取得 | めったに読まない最安候補 |
試験でのコツは次の通りです。
- 頻繁に読む → S3 Standard
- アクセス頻度が読めない → S3 Intelligent-Tiering
- 低頻度だがすぐ取得したい → S3 Standard-IA
- 長期保管で復元待ち可能 → S3 Glacier Flexible Retrieval / Deep Archive
課金される条件を整理
S3は「保存容量だけ」で課金されるわけではありません。試験ではここが混乱しやすいポイントです。料金の考え方は、主に保存容量、リクエスト回数、データ転送、取り出し、付加機能です。(参考: https://aws.amazon.com/s3/pricing/)
1. 保存容量
保存したデータ量に応じて課金されます。ストレージクラスごとに単価が異なります。一般に、即時アクセス性が高いクラスほど高く、アーカイブ寄りほど安くなります。(参考: https://aws.amazon.com/s3/pricing/)
2. リクエスト回数
PUT、COPY、POST、LIST、GETなどの操作回数にも課金が発生します。小さいファイルを大量に扱う設計では、保存容量よりリクエスト課金が効くことがあります。ライフサイクルによる移行にも関連するリクエスト料金があります。(参考: https://aws.amazon.com/s3/pricing/)
3. 取り出し料金(Retrieval)
S3 Standardは単純な保存用の基本クラスですが、Standard-IAやGlacier系では取得時に追加料金が発生する場合があります。つまり、「保存単価が安いから得」とは限らず、読む回数が多いなら逆に不利になることがあります。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html、https://aws.amazon.com/s3/pricing/)
4. データ転送料金
一般に、インターネットへのデータ送信などは課金対象になります。問題文で「大量配信」「外部ユーザーが大量ダウンロード」とあれば、S3の保存料金だけでなく転送料金も意識します。(参考: https://aws.amazon.com/s3/pricing/)
5. 最小保存期間
ここは試験でよく問われます。たとえば、S3 Standard-IAやS3 One Zone-IAでは30日の最小保存期間、S3 Glacier Flexible Retrievalでは90日、S3 Glacier Deep Archiveでは180日が設けられています。早く削除しても、残り期間分に相当する課金が発生する点が重要です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)
6. SSE-KMS利用時の追加料金
S3は新規オブジェクトをデフォルトでSSE-S3により暗号化しますが、より厳密な鍵管理や監査が必要でSSE-KMSを使う場合、AWS KMS側の料金が追加で発生します。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)
アクセス可能な条件を整理
S3は「URLを知っていれば誰でも見られる」サービスではありません。アクセスには権限設定が必要です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
1. IAMポリシーまたはバケットポリシーで許可されている
もっとも基本的なアクセス条件です。社内システムやEC2、LambdaなどからS3を使うときは、IAMロールやユーザーに適切な権限を与えます。バケット単位で条件付き公開を制御したい場合はバケットポリシーがよく使われます。
2. Block Public Accessにより公開が止められていない
現在のS3では、新規のバケット、アクセスポイント、オブジェクトはデフォルトで公開されません。また、Block Public Access設定はポリシーや権限より優先して公開を止められます。試験では「公開できない原因」としてここが頻出です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
3. ACL中心ではなく、現在はポリシー中心
S3ではACLも歴史的には使われてきましたが、現在はObject Ownership の Bucket owner enforced がデフォルトで、ACLは無効化されます。つまり、現在の試験対策では「S3の権限制御はIAMポリシーとバケットポリシー中心」と整理しておくと安全です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
4. 期限付き共有ならPresigned URL
オブジェクトをpublicにせず、一時的に共有したいときはPresigned URLを使います。コンソールから作る場合は最長12時間、CLIやSDKでは最長7日です。「外部の一時利用者にダウンロードさせたい」という問題でよく使う考え方です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)
5. VPCからプライベートにアクセスする方法
VPC内のEC2などからS3へプライベート接続したい場合、Gateway VPC Endpointが重要です。これはインターネットゲートウェイやNATを必要とせず、追加料金もありません。一方で、オンプレミスや別リージョンVPCなどからの要件では、追加料金のかかるInterface VPC Endpointが必要になることがあります。(参考: https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html、https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)
6. 静的Webサイト公開時の条件
S3を静的Webサイトとして公開する場合は、通常の非公開設定のままでは閲覧できません。公開読み取りを許可するバケットポリシーが必要で、さらにBlock Public Accessの設定も見直す必要があります。ただし、S3 website endpointはHTTPS非対応なので、本番の公開サイトではCloudFrontの併用を考えるのが自然です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html)
暗号化の理解
現在のS3では、すべてのバケットで暗号化がデフォルト設定となっており、新規アップロードされるオブジェクトは自動的に保存時暗号化されます。試験では「S3は暗号化できる」ではなく、今はデフォルトで暗号化されると理解しておくと正確です。(参考: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html、https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)
- SSE-S3: S3管理キーによる暗号化。デフォルト。
- SSE-KMS: AWS KMSを使う。監査性や鍵管理が強いが追加料金に注意。
S3と他ストレージの違い
| サービス | 種類 | 典型用途 | 試験での見分け方 |
|---|---|---|---|
| Amazon S3 | オブジェクトストレージ | 画像、バックアップ、ログ、アーカイブ、静的サイト | ファイルをまとめて安定保管 |
| Amazon EBS | ブロックストレージ | EC2のディスク | OSやデータベース用の仮想ディスク |
| Amazon EFS | ファイルストレージ | 複数EC2から共有するファイルシステム | 共有ファイルシステムが必要 |
問題文で「EC2インスタンスの起動ディスク」「OSを置く」「ファイルシステム共有」とあれば、S3ではなくEBSやEFSを疑います。逆に「画像保管」「バックアップ」「ログアーカイブ」「静的コンテンツ配信」であればS3が有力です。
試験でよくあるひっかけ
- S3はデフォルトで公開されていない。むしろ公開防止が強い。
- S3 Website endpointはHTTPS非対応。HTTPSが必要ならCloudFrontを考える。
- 安いストレージクラスが常に得とは限らない。取得料金や最小保存期間を確認する。
- Versioningは削除・上書き対策として頻出。
- Presigned URLは一時共有であり、public化ではない。
- ACL中心で考えない。現在はポリシー中心で整理する。
- VPCからS3へ私設接続したいならGateway Endpointが定番。
直前復習用まとめ
- S3はAWSの代表的なオブジェクトストレージ。
- バケットにオブジェクトを保存する。
- 代表機能はVersioning、Lifecycle、Replication、静的サイト、イベント通知、暗号化。
- ストレージクラス選択は頻度・即時性・保管期間で判断する。
- 課金は容量、リクエスト、転送、取得、最小保存期間、KMSなどで決まる。
- アクセス制御はIAM、バケットポリシー、Block Public Access、Presigned URLが中心。
- 静的サイトはできるが、S3単体のwebsite endpointはHTTPS非対応。
参考情報(AWS公式)
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html
- https://aws.amazon.com/s3/features/
- https://aws.amazon.com/s3/pricing/
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html
- https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html
