FOR LEARNERS学習中向け

Iストレージとデータベース段1入口層とは

S3 とは何か|バケットとオブジェクト・ストレージクラス・公開設定を「ディスクではない置き場」で理解する

S3 とは何か|バケットとオブジェクト・ストレージクラス・公開設定を「ディスクではない置き場」で理解する

S3 は「ファイルを置ける場所」として最初に紹介されることが多く、それ自体は正しいのですが、「サーバーのディスクとどう違うのか」が曖昧なまま使うと、あとで DynamoDB や EFS が出てきたときに位置づけが混乱します。そして S3 は、AWS で一番多い事故「公開設定の間違い」の舞台でもあります。この記事は、S3 を「ディスクではない置き場」として位置づけ、ストレージクラスと公開設定までを扱います。

この記事の結論

  • S3(Simple Storage Service)は、ファイルをオブジェクトとして API で出し入れするストレージです。OS からマウントして使うディスク(EBS)ではありません。
  • 置き場の単位はバケット、中のファイルはキー(名前)で指定します。フォルダのように見える階層は、キーの中の「/」の見せ方に過ぎません。
  • 容量の上限を気にせず置け、AWS は 99.999999999%(イレブンナイン)の耐久性を設計目標としています。
  • ストレージクラスは「取り出す頻度」で選びます。よく読むなら Standard、たまになら IA、ほぼ読まないなら Glacier 系。
  • 一番多い事故は公開設定です。ブロックパブリックアクセスをアカウント単位で有効にしたまま、公開が要るときは CloudFront を前に置きます。

S3 は「API で出し入れする置き場」で、ディスクではない

S3(Amazon Simple Storage Service)は、2006 年に AWS が最初に出したサービスの1つです。ファイルをオブジェクトとして置き、HTTP の API(PutObject・GetObject)で出し入れします。

「ディスクではない」が最初に押さえる点です。EC2 とは何かで扱った EBS は、インスタンスに付けて OS がマウントし、ファイルシステムとして読み書きするディスクです。S3 はマウントするものではなく、アプリが「このキーのオブジェクトをください」と API で頼むものです。

項目 S3 EBS
位置づけ オブジェクトストレージ ブロックストレージ(ディスク)
使い方 API(PutObject / GetObject)で出し入れ OS がマウントしてファイルシステムとして使う
誰から見えるか 権限があればどこからでも 付けた1つのインスタンスから
容量 上限を気にしない(オブジェクトは1つ 5 TB まで) 作るときにサイズを決める
向くもの 画像・動画・ログ・バックアップ・配信物・データレイク OS・データベースのデータファイル
料金 置いた容量+リクエスト回数+外への転送 確保した容量(使っていなくても)

「複数のサーバーから同じファイルを見たいか」で迷いが消えます。見たいなら S3、1台のディスクとして使うなら EBS です。

S3 VS EBSディスクではない

複数のサーバーから同じファイルを見たいなら S3

EBS

ブロックストレージ(ディスク)

  • OS がマウントしてファイルシステムとして使う
  • 付けた1つのインスタンスから見える
  • 作るときにサイズを決める
  • OS・データベースのデータファイル

S3

オブジェクトストレージ

  • API(PutObject / GetObject)で出し入れ
  • 権限があればどこからでも見える
  • 容量の上限を気にしない
  • 画像・ログ・バックアップ・配信物
出典: Amazon S3 ユーザーガイド・Amazon EBS ユーザーガイド

バケットとキー: フォルダに見えるが、フォルダではない

BUCKET AND KEY置き場の構造

バケットの中に、キーという名前でオブジェクトを置く

  1. バケット

    入れ物。名前は全世界で一意。リージョンを選んで作る

  2. キー

    logs/2026/09/app.log のような名前。/ は階層に見えるだけ

  3. オブジェクト

    本体とメタデータ。API で出し入れ。ディスクではない

出典: Amazon S3 ユーザーガイド「Amazon S3 とは」
  • バケットは、オブジェクトを入れる入れ物です。リージョンを選んで作り、名前は全世界の AWS アカウントをまたいで一意です。
  • オブジェクトは、置いた1つ1つのファイルです。本体(データ)と、メタデータ(サイズ・更新日時・Content-Type など)を持ちます。
  • キーは、バケットの中でのオブジェクトの名前です。logs/2026/09/26/app.log のように書けます。

コンソールでは logs/ 2026/ とフォルダのように表示されますが、実体は「logs/2026/09/26/app.log」という1つの長い名前です。フォルダを「作る」操作は、その名前で空のオブジェクトを置いているだけです。この理解があると、「フォルダを消したのに中身が残る」「一覧の API に prefix を渡す」といった動きが読めます。

耐久性について、AWS は 99.999999999%(イレブンナイン)を設計目標として公表しています。これは「置いたオブジェクトが失われる確率が極めて低い」という意味で、複数の AZ に自動で複製されることで実現しています。ただし、耐久性が高いことと、自分が間違って消さないことは別です。誤削除への備えは、後述するバージョニングで持ちます。

CHECK 1ここまでの確認

「複数のサーバーから同じファイルを見たい」。置き場はどちら?

答えと解説

答え: 2. S3

EBS は1つのインスタンスに付けて使うディスクです。S3 は API で出し入れし、権限があればどこからでも同じものを見られます。

ストレージクラスは「取り出す頻度」で選ぶ

S3 の料金は、置いた容量に対する単価がストレージクラスで変わります。クラスは「どれくらいの頻度で取り出すか」で選び、取り出す頻度が低いクラスほど、置く単価は安く、取り出しの単価と待ち時間は増えます。

クラス 向くもの 取り出し
S3 Standard よく読むデータ(Web の配信物、アプリのデータ) すぐ、追加料金なし
S3 Standard-IA(Infrequent Access) たまに読むが、読むときはすぐ要る(バックアップ、古いログ) すぐ、取り出しに料金
S3 Glacier Instant Retrieval 四半期に1回程度、すぐ要る すぐ、取り出しに料金
S3 Glacier Flexible Retrieval 年に1〜2回、数分〜数時間待てる 分〜時間、取り出しに料金
S3 Glacier Deep Archive ほぼ読まない。規制で保管が要るもの 12 時間程度、取り出しに料金
S3 Intelligent-Tiering 頻度が読めないもの アクセスのパターンで自動で移動

各クラスの単価と取り出し時間は変わるので、ここには書きません。公式の料金ページで確認してください。選び方の考え方だけ持てば十分です。

クラスは手で変えるのではなく、ライフサイクルルールで「30 日経ったら IA に、90 日経ったら Glacier に、365 日で削除」のように自動で移すのが基本です。

バージョニングと削除保護

バージョニングを有効にすると、同じキーに上書きしても前の版が残り、削除しても「削除マーカー」が付くだけで元の版は残ります。誤って上書き・削除したときに戻せる、一番簡単な保険です。

その代わり、残った版の分だけ容量の料金がかかります。ライフサイクルルールで「古い版は 30 日で消す」を組み合わせるのが定石です。

WHAT YOU PROTECT耐久性と、自分で守るもの

耐久性が高いことと、自分が消さないことは別

AWS が守る: 耐久性

自分で守る:

  1. バージョニング(誤削除・上書き)
  2. ライフサイクル(古い版と要らない物の削除)
  3. ブロックパブリックアクセス(公開事故)
  4. バケットポリシーの Principal の点検

置いた物を失う原因は、たいてい自分の操作

CHECK 2ここまでの確認

コンソールで「logs/2026/」というフォルダを作った。実体はどれ?

答えと解説

答え: 2. 「logs/2026/」という名前の空のオブジェクトが置かれただけ

S3 のキーは平らな名前の一覧で、「/」は階層に見える見せ方に過ぎません。フォルダを作る操作は、その名前で空のオブジェクトを置いているだけです。

一番多い事故: 公開設定

S3 の事故の大半は、「公開するつもりの無いバケットが、インターネットから読める状態になっていた」です。原因はたいてい、バケットポリシーや ACL で Principal: "*"(誰でも)に読み取りを許可してしまうことです。

これを防ぐために、AWS はブロックパブリックアクセスという設定を用意しています。これが有効なら、たとえポリシーで公開を許可しても、公開は止められます。新しく作るバケットでは既定で有効です。

公開設定で守ること

  • ブロックパブリックアクセスは、アカウント単位で有効にしたままにする。 バケット単位で外すのは、公開が要ると分かっている1つだけ
  • 公開が要るときは、バケットを直接公開しない。 CloudFront を前に置き、S3 は CloudFront からだけ読める設定(OAC)にする
  • 一時的に渡したいだけなら、署名付き URL を使う。 期限付きの URL を発行し、その間だけ読める
  • バケットポリシーの Principal: "*" を見たら、まず疑う。 意図した公開でなければ消す

IAM とは何かで扱ったポリシーの読み方(Effect・Action・Resource に加えて Principal)が、ここでそのまま使えます。バケットポリシーは「このバケットに対して、誰が、何をしてよいか」をバケット側に書いたものです。

PUBLISH SAFELY公開が要るときの形

バケットは直接公開せず、CloudFront を前に置く

  1. 利用者

    ブラウザから画像を取りに来る

  2. CloudFront

    CDN。公開されているのはここだけ

  3. S3

    CloudFront からだけ読める(OAC)。ブロックパブリックアクセスは有効のまま

一時的に渡すだけなら、署名付き URL

CHECK 3ここまでの確認

公開が要る静的サイトを S3 で配信する、基本の形はどれ?

答えと解説

答え: 2. ブロックパブリックアクセスは有効のまま、CloudFront を前に置いて S3 は CloudFront からだけ読める設定にする

バケットの直接公開は、公開設定の事故と同じ構造です。CloudFront(OAC)を前に置くか、一時的なら署名付き URL を使います。

まとめ

S3 は、ファイルをオブジェクトとして API で出し入れする置き場で、ディスク(EBS)ではありません。バケットの中にキーで名前を付けて置き、フォルダに見える階層は名前の見せ方です。ストレージクラスは取り出す頻度で選び、ライフサイクルで自動で移します。バージョニングで誤削除に備え、ブロックパブリックアクセスを有効にしたまま、公開は CloudFront か署名付き URL で行います。ここまでで段1「入口」の4つ(EC2・IAM・VPC・S3)が揃いました。次はCloud Practitioner の位置づけで、この4つを資格の地図に置きます。

参照ソース

SCOREこの記事の確認テスト

0/3問 正解

各章の「ここまでの確認」に答えると、ここに集まります。結果はこの端末のブラウザにだけ残り、サーバには送りません。

FAQよくある質問

S3 と EBS はどちらにファイルを置けばいいですか?

OS やアプリが「ディスク」として直接読み書きするものは EBS、アプリが API で出し入れする画像・ログ・バックアップ・配信物は S3 です。EBS は1つのインスタンスに付けて使うもので、S3 はどこからでも同じものを見られます。迷ったら「複数のサーバーから同じファイルを見たいか」で決めます。

バケットの名前は何でもいいですか?

バケット名は全世界の AWS アカウントをまたいで一意でなければなりません。「test」のような名前はすでに使われています。会社名やプロジェクト名を含めて、小文字・数字・ハイフンで付けます。名前は後から変えられないので、命名の規則を先に決めておきます。

静的な Web サイトを S3 だけで公開できますか?

できます。ただし公開するときは、バケット全体を公開するのではなく、CloudFront(CDN)を前に置いて、S3 は CloudFront からだけ読める設定にするのが基本です。バケットを直接公開する形は、公開設定の事故と同じ構造になるので、学習で試したら必ず戻します。

SAME TRACK同じ領域の記事

Cloud Practitioner(CLF-C02)の位置づけ|何ができる証明か、暗記にしない勉強の順番
Cloud Practitioner(CLF-C02)の位置づけ|何ができる証明か、暗記にしない勉強の順番 段1 入口とは
VPC とは何か|サブネット・ルートテーブル・ゲートウェイ・セキュリティグループと NACL の関係を1枚で
VPC とは何か|サブネット・ルートテーブル・ゲートウェイ・セキュリティグループと NACL の関係を1枚で 段1 入口とは
IAM とは何か|ユーザー・ロール・ポリシーを「誰が・何に・何をしてよいか」で読み解く
IAM とは何か|ユーザー・ロール・ポリシーを「誰が・何に・何をしてよいか」で読み解く 段1 入口とは