AWS CLF(Cloud Practitioner)対策

S3

S3

このレッスンを終えると、Amazon Simple Storage Service (S3) がどんな置き場なのかを説明でき、要件の文からストレージクラスを選べるようになります。

まず、自分でサーバーを建てるなら

サーバーを1台借りて、ユーザーがアップロードした画像を保存する場面を思い出してください。あなたは /var/www/uploads のようなディレクトリを作り、そこにファイルを置きました。そして次のことを自分で気にする必要がありました。

  • ディスクが満杯になったらどうするか
  • そのディスクが壊れたらどうするか。バックアップを別の場所に取っているか
  • 3年前の画像も同じ高価なディスクに置き続けるのか

S3 はこの3つを丸ごと引き受ける置き場です。容量の上限を意識せず、置いたものは AWS が複数の場所に自動で複製します。あなたがやることは「どのバケットに置くか」と「誰に見せるか」と「どのクラスで持つか」の3つだけになります。

オブジェクトストレージという考え方

S3 はファイルシステムではありません。オブジェクトストレージと呼ばれる形式です。ディレクトリの階層を掘っていくのではなく、バケットという入れ物の中に、キーという名前でオブジェクトを1つずつ置きます。

  • バケット — オブジェクトを入れる最上位の入れ物。名前は全世界で重複できません
  • キー — オブジェクトの名前。photos/2026/cat.jpg のようにスラッシュを含められますが、これは見た目上のフォルダで、実体は1本の長い名前です
  • オブジェクト — 中身のデータと、それに付くメタデータの組

ここが効いてくるのは、S3 は OS からドライブとしてマウントして使うものではないという点です。アプリケーションは HTTP 経由の API でオブジェクトを出し入れします。だから画像・動画・ログ・バックアップ・静的な Web サイトの置き場には向きますが、データベースのデータファイルを置いて頻繁に一部だけ書き換える用途には向きません。それは次のレッスンの EBS の仕事です。

耐久性と可用性は別のもの

S3 の説明でよく出てくる言葉が2つあります。混同しやすいので分けて覚えます。

言葉何を保証するか崩れたときに起きること
耐久性 (Durability)預けたデータが失われないことデータそのものが消える
可用性 (Availability)預けたデータに今すぐアクセスできることデータはあるが一時的に取り出せない

S3 は標準クラスで、1つのオブジェクトを1つのリージョン内の複数のアベイラビリティゾーンに自動で複製します。だから耐久性は非常に高く設計されています。本記事執筆時点で AWS は「イレブンナイン」と呼ばれる水準を掲げていますが、試験で問われるのは桁の暗記ではなく「S3 は複数の AZ に自動複製されるので、利用者がバックアップの複製を自分で組む必要はない」という理解のほうです。

ストレージクラスは要件から選ぶ

クラスの名前を丸暗記しても解けません。問題文は必ず「どういう使われ方をするデータか」を書いてきます。そこから逆算します。

問題文にこう書いてあったら選ぶクラス
頻繁に読まれる。Web サイトの画像などS3 Standard
アクセス頻度が読めない。自動で最適化したいS3 Intelligent-Tiering
アクセスは少ないが、必要になったら即座に取り出したいS3 Standard-IA (低頻度アクセス)
アクセスは少なく、再作成できるデータ。単一 AZ でよいS3 One Zone-IA
保管が目的。取り出しに時間がかかってよい。法令で長期保存が要るS3 Glacier 系
数年に一度あるかどうか。最も安く、取り出しは数時間待てるS3 Glacier Deep Archive

判断の軸は次の3つです。読む頻度はどのくらいか取り出しに待てるか消えても作り直せるか。この3つのどれが問題文に書いてあるかを探すのが解き方になります。

なお、アクセスの少ないクラスは保管の単価が下がる代わりに、取り出すときに費用がかかります。「めったに読まないから」と Glacier に入れたデータを毎日読むと、かえって高くつきます。料金の考え方はここに現れます。

手作業でクラスを移し替えない

「90日経ったら Standard-IA へ、1年経ったら Glacier へ」といった移行は、ライフサイクルポリシーとして設定しておけば S3 が自動で行います。試験で「古くなったデータのコストを下げたい。運用の手間をかけずに」と来たら、答えはライフサイクルポリシーです。

もう1つ、バージョニングを有効にすると、上書きや削除をしても以前の版が残ります。誤って消した事故から戻したいという要件はこれで受けます。

試験ではこう出る

出題者は、サービス名ではなく状況の言い換えを仕込んできます。対応表を頭に入れてください。

  • 「静的な Web サイトをホストしたい」「大量の画像を安く置きたい」 → S3
  • 「アクセスは少ないが、必要なときはすぐ取り出したい」 → Standard-IA。ここで Glacier を選ぶと引っ掛かります。Glacier は取り出しに待ち時間があるためです
  • 「監査のために7年間保管する。読むことはまず無い」 → Glacier Deep Archive
  • 「アクセスパターンが予測できない」 → Intelligent-Tiering。「一番安いクラスにする」と考えて Glacier を選ばせるのが罠です
  • 「一定期間後に自動で安いクラスへ移したい」 → ライフサイクルポリシー
  • 「誤削除から復旧したい」 → バージョニング
  • 「複数の AZ に自動で複製される」 → S3 の標準的な性質。One Zone-IA だけが単一 AZである点が例外です

もう1つの頻出は、S3 と EBS の取り違えです。「OS のブートボリューム」「データベースが使うディスク」と書かれていたら S3 ではありません。S3 はネットワーク越しに API で読み書きするオブジェクトの置き場である、と線を引いておきます。

まとめ

  • S3 はバケットとキーでオブジェクトを管理する置き場。容量を気にせず、複数 AZ への複製は AWS がやる
  • 耐久性は「消えない」、可用性は「今すぐ使える」。別の指標です
  • クラスは「読む頻度」「取り出しを待てるか」「作り直せるか」の3点から選ぶ
  • 即時に取り出したいなら Standard-IA、待てるなら Glacier 系。ここが最頻出の分かれ目です
  • 移行はライフサイクルポリシー、誤削除対策はバージョニング
生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部

復習ミニクイズ

ある会社が、過去の取引明細を保管しています。監査対応で年に数回だけ参照されますが、参照が発生した際は担当者を待たせずその場で取り出す必要があります。コストは可能な限り抑えたいです。最も適したストレージクラスはどれですか。