Amazon S3
Amazon S3(Simple Storage Service)は、ファイルをほぼ無制限に保存できるオブジェクトストレージです。SAA では「アクセス頻度と取り出し時間の要件から、最もコストの低いストレージクラスを選ぶ」問題が繰り返し出ます。
ひとことで言うと: 容量無制限で、置き場所(料金プラン)を選べる巨大な倉庫です。
たとえるなら、よく使う物は出し入れしやすい手前の棚(Standard)に、めったに使わない物は安い奥の倉庫(Glacier)に置きます。奥の倉庫ほど保管料は安いですが、取り出すのに時間や手数料がかかります。
このページで押さえる論点
オブジェクトストレージの基本
S3 では、データをオブジェクト(ファイル本体 + メタデータ)としてバケット(保存先の入れ物)に保存します。フォルダのような階層はなく、オブジェクトはキー(ファイル名にあたる文字列)で区別します。キーの先頭部分(例: logs/2026/ の部分)をプレフィックスと呼び、ルールの対象指定や性能の単位に使われます。
S3 Standard は、1 年間に 99.999999999%(イレブンナイン)の耐久性(データが失われにくさ)と、99.99% の可用性(使える時間の割合)を提供するよう設計されています。耐久性と可用性は別の指標なので混同しないようにしましょう。
S3 は、すべてのリージョンで強力な書き込み後の読み取り整合性を提供します。新しいオブジェクトを書き込んだ直後、既存のオブジェクトを上書きした直後、削除した直後に読み取っても、必ず最新の結果が返ります(一覧表示にもすぐ反映されます)。同じキーへの同時書き込みは、最後に書いたものが優先されます。
1 回の PUT でアップロードできるのは 5 GB まで、マルチパートアップロードを使うと 1 オブジェクト最大 50 TB まで保存できます。
| ストレージの種類 | サービス | 特徴と使いどころ |
|---|---|---|
| オブジェクト | Amazon S3 | HTTP(API)でオブジェクト単位に読み書き。容量の上限を気にせず、静的ファイル・バックアップ・データレイクに使う |
| ブロック | Amazon EBS | EC2 にディスクとして接続する。OS 領域やデータベース |
| ファイル | Amazon EFS | 複数の EC2 から同時にマウントできる共有ファイルシステム |
ストレージクラスの選び方
オブジェクトごとにストレージクラスを選べます。保存料金が安いクラスほど、取り出しに料金や時間がかかります。判断の軸は「どれくらいの頻度で読むか」「読むときにどれだけ待てるか」「1 つの AZ が失われても再作成できるか」の 3 つです。まずは下のフローチャートで試してみましょう。
質問に答えてストレージクラスを選ぶ
データの使い方を思い浮かべて「はい / いいえ」で答えてください。答えた経路が上から順に表示されます。
※簡略化しています: 最低保存期間・最小オブジェクトサイズ・料金の細かい差は分岐に含めていません。S3 Express One Zone など一部のクラスは省いています。
| クラス | 想定するアクセス | 取り出し時間 | 保存先の AZ |
|---|---|---|---|
| Standard | 頻繁(月 2 回以上) | ミリ秒 | 3 つ以上 |
| Intelligent-Tiering | 不明・変化する(自動で階層を移動) | ミリ秒(オプションのアーカイブ階層を除く) | 3 つ以上 |
| Standard-IA | 低頻度(月 1 回程度) | ミリ秒 | 3 つ以上 |
| One Zone-IA | 低頻度・再作成できるデータ | ミリ秒 | 1 つ |
| Glacier Instant Retrieval | 四半期に 1 回程度 | ミリ秒 | 3 つ以上 |
| Glacier Flexible Retrieval | 年 1 回程度 | 数分〜12 時間(復元が必要) | 3 つ以上 |
| Glacier Deep Archive | 年 1 回未満 | 12 時間以内(大容量取り出しは 48 時間以内) | 3 つ以上 |
Intelligent-Tiering は、オブジェクトごとのアクセス状況を監視して自動で階層を移します。30 日間連続でアクセスがないと低頻度アクセス階層へ、90 日間連続でアクセスがないとアーカイブインスタントアクセス階層へ移り、アクセスされると高頻度アクセス階層に戻ります。取り出し料金はかからない代わりに、監視と自動化の月額料金がかかります。128 KB 未満のオブジェクトは監視されず、常に高頻度アクセス階層に置かれます。
フローチャートで省いた S3 Express One Zone は、1 つの AZ に保存するクラスです。One Zone-IA と同じく、AZ が失われるとデータも失われる前提で選びます。
最低保存期間・最小サイズ・取り出し料金
安いクラスには「この日数分は必ず課金する」という最低保存期間があります。期間より前に削除したり別のクラスへ移したりしても、残りの日数分の料金がかかります。短期間で消すデータを安いクラスに置くと、かえって高くつくことがあります。
| クラス | 最低保存期間 | 最小課金サイズ | 取り出し料金(GB 単位) |
|---|---|---|---|
| Standard | なし | なし | なし |
| Intelligent-Tiering | なし | なし | なし(監視・自動化料金あり) |
| Standard-IA | 30 日 | 128 KB | あり |
| One Zone-IA | 30 日 | 128 KB | あり |
| Glacier Instant Retrieval | 90 日 | 128 KB | あり |
| Glacier Flexible Retrieval | 90 日 | — | あり |
| Glacier Deep Archive | 180 日 | — | あり |
最小課金サイズとは、それより小さいオブジェクトでもそのサイズ分の料金がかかる、という意味です。小さなファイルが大量にある場合は IA 系のクラスが割高になります。
Glacier Flexible Retrieval と Deep Archive の取り出し時間
この 2 つのクラスのオブジェクトは、そのままでは読めません。先に復元(一時的なコピーを作る操作)が必要で、速さを 3 つのオプションから選びます。
| 取り出しオプション | Glacier Flexible Retrieval | Glacier Deep Archive |
|---|---|---|
| 迅速(Expedited) | 1〜5 分 | 利用できない |
| 標準(Standard) | 3〜5 時間 | 12 時間以内 |
| 大容量(Bulk) | 5〜12 時間 | 48 時間以内 |
ライフサイクルルール
ライフサイクルルールは、「作成から何日たったオブジェクトをどうするか」を決めておく仕組みです。移行アクション(安いクラスへ移す)と有効期限アクション(削除する)の 2 種類があります。ルールはプレフィックスやタグで対象を絞って適用できます。
日数の経過とともにオブジェクトが移動する
※簡略化しています: 1 つのオブジェクトだけを動かしています。実際はルールの対象(プレフィックスやタグで指定)に当てはまるすべてのオブジェクトが非同期で処理されるため、日数ぴったりに移るとは限りません。最低保存期間や移行時のリクエスト料金は省略しています。
図で省いた点のうち、試験で問われるものを補足します。
- ルールは非同期に処理されるため、対象になった日から実際に移るまでに遅れることがあります。料金は対象になった時点から新しいクラスで計算されます
- 移行は安いクラスへ向かう一方向(ウォーターフォール)です。Glacier Deep Archive からライフサイクルで他のクラスへ戻すことはできません。Glacier 系から出すには、まず復元が必要です
- 移行にはオブジェクトごとにリクエスト料金がかかります。そのため 128 KB 未満のオブジェクトは、既定では移行されません
- 移行先の最低保存期間より前に削除や再移行をすると、残りの日数分が課金されます
- 完了していないマルチパートアップロードの断片も課金され続けるため、ライフサイクルで一定日数後に削除するのがおすすめです
データ保護(バージョニング・Object Lock・レプリケーション)
バージョニングと MFA Delete
バージョニングを有効にすると、同じキーのオブジェクトを上書き・削除しても以前のバージョンが残り、誤操作から復元できます。バージョニングを有効にしたバケットで削除すると、オブジェクトは消されず削除マーカー(「削除済み」という目印)が最新バージョンになります。一度有効にすると無効の状態には戻せず、一時停止だけができます。
MFA Delete を有効にすると、バージョニングの状態を変える操作と、オブジェクトのバージョンを完全に削除する操作に、多要素認証(MFA)が必要になります。MFA Delete を有効にできるのはバケット所有者(ルートアカウント)だけです。
Object Lock(ガバナンスモードとコンプライアンスモード)
Object Lock は、オブジェクトを一定期間(または無期限に)削除・上書きできなくする機能です。一度書いたら読むだけにする WORM(Write Once Read Many)方式で保存します。バージョニングが有効なバケットでのみ使えます。
| 種類 | 削除・上書きできる人 | 向いている場面 |
|---|---|---|
| ガバナンスモード | 特別な権限(s3:BypassGovernanceRetention)を持つユーザーだけが、明示的に指定して解除できる | 誤削除を防ぎたいが、管理者による例外対応は残したい |
| コンプライアンスモード | ルートユーザーを含め誰もできない。保持期間の短縮やモードの変更もできない | 法令で改ざん不可の保管が求められる記録 |
| リーガルホールド | 保持期間と同じ保護だが期限がなく、明示的に外すまで続く | 訴訟などで期限を決めずに保全したい |
レプリケーション
レプリケーションは、オブジェクトを別のバケットへ自動でコピーする機能です。別リージョンへコピーするクロスリージョンレプリケーション(CRR)と、同じリージョン内でコピーする同一リージョンレプリケーション(SRR)があります。CRR は災害対策や遠くの利用者への低遅延化、SRR はログの集約や本番・テストアカウント間のコピーに使います。
- コピー元とコピー先の両方のバケットでバージョニングを有効にする必要がある
- 設定前からあるオブジェクトは自動ではコピーされない。既存のオブジェクトは S3 バッチレプリケーションでコピーする
- コピーにかかる時間の目安が必要なら S3 Replication Time Control(S3 RTC)。新しいオブジェクトの 99.99% を 15 分以内にレプリケートする(SLA 付き)
暗号化
2023 年 1 月 5 日以降、S3 にアップロードされるすべての新しいオブジェクトは、追加料金なしで自動的に暗号化されます(既定は SSE-S3)。問題文で「キーの管理」「監査」の要件が出たら、方式の違いで選び分けます。
| 方式 | キーを管理するのは | 特徴と使いどころ |
|---|---|---|
| SSE-S3 | S3 | 既定の暗号化。AES-256 で自動的に暗号化し、利用者はキーを意識しない |
| SSE-KMS | AWS KMS(利用者がキーのポリシーを制御) | キーごとにアクセスを制御でき、キーの使用を CloudTrail で監査できる。「キーの使用履歴を記録」「キーへのアクセスを分離」の要件に |
| DSSE-KMS | AWS KMS | 独立した 2 層の暗号化をかける。二重の暗号化が求められる場合に |
| SSE-C | 利用者(リクエストのたびにキーを渡す) | 暗号化・復号の処理は S3 が行い、キーは利用者が自社で管理する。2026 年 4 月以降、新しいバケットでは既定で無効になっており、使うには明示的に有効にする |
| クライアント側の暗号化 | 利用者 | アップロード前に利用者側で暗号化する。暗号化の処理・キー・ツールをすべて利用者が管理する。「AWS に平文を渡さない」要件に |
ここまでは保存時の暗号化です。転送中のデータは SSL/TLS(HTTPS)で保護します。
アクセス制御
パブリックアクセスブロック
新しいバケットとオブジェクトは、既定でパブリック(インターネットの誰でも)アクセスを許可しません。パブリックアクセスブロックは、ACL やバケットポリシーでうっかり公開してしまうのを防ぐ安全装置で、次の 4 つの設定があります。アクセスポイント・バケット・アカウント・組織の単位で設定でき、複数の単位で設定したときは最も厳しい組み合わせが適用されます。
- BlockPublicAcls: パブリックな ACL を付ける操作を拒否する
- IgnorePublicAcls: 既存のパブリックな ACL を無視する
- BlockPublicPolicy: パブリックアクセスを許可するバケットポリシーの設定を拒否する
- RestrictPublicBuckets: パブリックなポリシーを持つバケットへのアクセスを、所有者のアカウント内などに制限する
バケットポリシーと ACL
バケットポリシーは、バケットに付ける JSON 形式のリソースベースのポリシーです。「どのアカウント・ユーザーに、どの操作を許可するか」を書き、他のアカウントとの共有にも使います。ACL(アクセスコントロールリスト)は古い仕組みで、オブジェクト単位で権限を付けます。
新しいバケットはオブジェクト所有者の設定が「バケット所有者の強制」になっており、ACL は無効です。AWS は、オブジェクトごとに個別の制御が必要な場合を除き、ACL を無効のままにしてバケットポリシーで権限を管理することを推奨しています。
署名付き URL
署名付き URL は、非公開のオブジェクトを、期限付きで他の人にダウンロードさせるための URL です。バケットを公開せずに、特定のファイルだけを一時的に共有できます。有効期限は、S3 コンソールで作ると最大 12 時間、AWS CLI で作ると最大 7 日です。
イベント通知
イベント通知は、「オブジェクトが作られた」「削除された」などの出来事を、他のサービスに知らせる機能です。たとえば画像がアップロードされたら Lambda 関数でサムネイルを作る、といった処理を自動化できます。
- 送信先: Amazon SNS トピック、Amazon SQS キュー、AWS Lambda 関数、Amazon EventBridge
- 対象イベントの例: オブジェクトの作成、削除、復元、レプリケーション、ライフサイクルによる移行・期限切れ
- SQS の FIFO キューは送信先に直接指定できない。FIFO キューに送りたいときは EventBridge を経由する
パフォーマンス
S3 は、プレフィックスごとに 1 秒あたり PUT/COPY/POST/DELETE を 3,500 回以上、GET/HEAD を 5,500 回以上処理できます。プレフィックスの数に上限はないので、プレフィックスを分けて並列に読み書きすれば性能を伸ばせます(例: 10 個のプレフィックスに分けて読み取ると、1 秒あたり 55,000 回の読み取り)。
| 課題 | 使う機能 | ポイント |
|---|---|---|
| 大きなファイルのアップロードが遅い・途中で失敗する | マルチパートアップロード | ファイルを分割して並列に送り、失敗したパートだけ再送できる。100 MB 以上なら使うのがベストプラクティス。パート番号は 1〜10,000 |
| 世界中の拠点から 1 つのバケットへのアップロードが遅い | Transfer Acceleration | CloudFront のエッジロケーションで受け取り、最適化された経路で S3 へ送る |
| 同じオブジェクトが何度も読まれて遅い | CloudFront(または ElastiCache) | S3 の前にキャッシュを置いて、遅延を減らしスループットを上げる |
| リクエスト数が多すぎる | プレフィックスの分散 | プレフィックスごとの上限を、プレフィックスを増やして並列化することで超える |
リクエスタ支払い
通常、バケットの保存料金とデータ転送料金はすべてバケット所有者が払います。リクエスタ支払いを有効にすると、リクエストとダウンロードの料金を、データを取りに来た側(リクエスタ)が払います。保存料金は引き続きバケット所有者が払います。大きなデータセットを他の組織に配るときに、配る側の費用を抑えられます。リクエスタ支払いのバケットには匿名アクセスできず、リクエストには認証が必要です。
問題文のキーワード → 選ぶべき答え
| 問題文によく出る言い回し | 選ぶべき答えと理由 |
|---|---|
| 「アクセスパターンが予測できない」「運用の手間をかけずにコスト最適化」 | Intelligent-Tiering。アクセス状況を見て自動で階層を移し、取り出し料金もない |
| 「まれにしか使わないが、すぐに(ミリ秒で)取り出す」「AZ 障害に耐える」 | Standard-IA(四半期に 1 回程度なら Glacier Instant Retrieval) |
| 「再作成できるデータ」「低頻度」「コストを最小に」 | One Zone-IA。1 つの AZ にだけ保存する分安い |
| 「数分以内に取り出せればよいアーカイブ」 | Glacier Flexible Retrieval の迅速取り出し(1〜5 分) |
| 「長期保管」「ほぼ参照しない」「48 時間以内に取り出せればよい」「最安」 | Glacier Deep Archive |
| 「○日後に安いクラスへ」「○日後に削除」「手作業なしで」 | ライフサイクルルール |
| 「誤って削除・上書きしたデータを戻したい」 | バージョニング(完全削除に MFA を求めるなら MFA Delete も) |
| 「ルートユーザーを含め誰も削除できない」「WORM」「規制対応」 | Object Lock のコンプライアンスモード |
| 「キーの使用を監査したい」「キーへのアクセスを制御したい」 | SSE-KMS。KMS のキーポリシーで制御し、CloudTrail に記録される |
| 「AWS に平文のデータを渡さない」 | クライアント側の暗号化 |
| 「非公開のファイルを期限付きで外部の人に共有」 | 署名付き URL |
| 「誤ってバケットを公開しないようにしたい」「アカウント全体で公開を防ぐ」 | パブリックアクセスブロック(アカウント単位で設定) |
| 「アップロードされたら自動で処理」 | イベント通知で Lambda / SQS / SNS / EventBridge へ |
| 「別リージョンに自動でコピー」「災害対策」 | クロスリージョンレプリケーション(両方のバケットでバージョニングが必要) |
| 「大きなファイルのアップロードを速く・確実に」 | マルチパートアップロード |
| 「世界中から 1 つのバケットへ速くアップロード」 | Transfer Acceleration |
| 「ダウンロードする側に転送料金を払わせたい」 | リクエスタ支払い |
引っかけポイント
- 「One Zone-IA は複数 AZ に保存されるので AZ 障害にも耐える」→ ✕。1 つの AZ にしか保存しない。失っても再作成できるデータ向け
- 「Glacier Flexible Retrieval / Deep Archive のオブジェクトはすぐ読める」→ ✕。先に復元が必要。ミリ秒で読めるのは Glacier Instant Retrieval
- 「Deep Archive でも迅速取り出しで数分で取り出せる」→ ✕。Deep Archive に迅速取り出しはない(標準で 12 時間以内)
- 「数日で消す一時データを Standard-IA に置けば安い」→ ✕。最低保存期間(30 日)分の料金がかかる
- 「Object Lock のガバナンスモードなら誰も削除できない」→ ✕。特別な権限があれば解除できる。誰にも消させないのはコンプライアンスモード
- 「バージョニングは不要になったら無効に戻せる」→ ✕。一度有効にすると一時停止しかできない
- 「レプリケーションを設定すれば既存のオブジェクトもコピーされる」→ ✕。既存分は S3 バッチレプリケーションが必要
- 「他のアカウントとの共有にはオブジェクトの ACL を使う」→ ✕(推奨ではない)。ACL は無効のままにし、バケットポリシーで許可する
- 「耐久性 99.999999999% だから可用性も 99.999999999%」→ ✕。S3 Standard の可用性は 99.99% で、耐久性とは別の指標
まとめ: SAA 試験で押さえるポイント
- アクセスパターンが読めない → Intelligent-Tiering。まれにしか使わないがすぐ必要 → Standard-IA(再作成できるなら One Zone-IA)。四半期に 1 回程度でミリ秒取り出し → Glacier Instant Retrieval
- 長期アーカイブ: 数分〜数時間で取り出せればよい → Glacier Flexible Retrieval、12 時間以上待てて最安にしたい → Glacier Deep Archive
- 安いクラスには最低保存期間(IA 系 30 日、Glacier IR・Flexible 90 日、Deep Archive 180 日)と取り出し料金がある
- ライフサイクルルールで「○日後に安いクラスへ移す」「○日後に削除する」を自動化できる
- 誤削除・上書き対策 → バージョニング。削除の多要素認証(MFA Delete)や、一定期間削除できなくする Object Lock(誰にも消させないならコンプライアンスモード)も選択肢
- 別リージョンへの自動コピー(クロスリージョンレプリケーション)には、コピー元とコピー先の両方でバージョニングが必要
- 暗号化: 既定は SSE-S3。キーの制御・監査が必要なら SSE-KMS、AWS に平文を渡さないならクライアント側の暗号化
- 公開事故の防止はパブリックアクセスブロック、権限はバケットポリシーで管理(ACL は無効が推奨)
- 非公開のオブジェクトを期間限定で共有 → 署名付き URL。遠くの利用者からのアップロードを速く → Transfer Acceleration。大きなファイル → マルチパートアップロード
確認問題
参考リンク
AWS 公式ドキュメント(外部サイトが開きます)。
- Amazon S3 とは(データ整合性モデル)
- Amazon S3 のデータ保護(耐久性・可用性)
- オブジェクトのアップロード(サイズの上限)
- Amazon S3 ストレージクラスの理解と管理
- S3 Intelligent-Tiering の仕組み
- アーカイブ取得オプション
- オブジェクトのライフサイクルの管理
- ライフサイクル設定を使用したオブジェクトの移行
- S3 バケットでのバージョニングの使用
- MFA 削除の設定
- S3 Object Lock を使用したオブジェクトのロック
- リージョン内およびリージョン間でのオブジェクトのレプリケート
- 暗号化によるデータの保護
- サーバー側の暗号化によるデータの保護
- Amazon S3 ストレージへのパブリックアクセスのブロック
- オブジェクトの所有権の制御とバケットの ACL の無効化
- 署名付き URL を使用したオブジェクトの共有
- Amazon S3 イベント通知
- Amazon S3 のパフォーマンスの最適化
- マルチパートアップロードを使用したオブジェクトのアップロードとコピー
- Amazon S3 Transfer Acceleration
- リクエスタ支払いバケット