Amazon S3とは?バケット・オブジェクト・キー名・プレフィクスの違いを初心者向けに解説

AWS

はじめに

さて今回は、Amazon S3についてまとめたいと思います。

AWSのサービスとして有名なS3、名前だけ聞いたことある人もいるかもしれません。

私も元々、名前は知っているし、何となくどんなことができるサービスかも知っていたのですが、実際に仕事で使って見て、詳しくは全然理解できていなかったと改めて感じたので、今回ちゃんと調べてまとめようと至った背景でこの記事を書いています。

エクスプローラーなどをイメージしていると少し感覚がずれるのでちゃんとS3の特徴を理解し、正しく利用できるようにしましょう。

S3とは??

それではまず、そもそもS3とは何??と言ったところからスタートしたいと思います。

Amazon S3は、正式にはAmazon Simple Storage ServiceというAWSのストレージサービスです。AWS公式ドキュメントでは、S3はデータをオブジェクトとしてバケットの中に保存する「オブジェクトストレージサービス」と説明されています。

ストレージサービスなのでデータを蓄えておくためのサービスということですね。例えば画像ファイルを保存したり、システムが吐き出すログを保存したり、機械学習用のデータを保存したり、と様々な用途で使われます。

さて、ではどのような構造でデータを蓄えておくのでしょうか?

S3の基本構造は以下のようになっています。

バケット
  └── オブジェクト
        ├── データ本体
        ├── キー名
        └── メタデータ

バケットと呼ばれるものの中にオブジェクトがあり、オブジェクトはデータ本体やキー名(オブジェクトキー)、メタデータなどで構成されます・・・

と説明されても意味わからないですよね。分かります、私も同じ気持ちでした。

なのでこの次のステップとして、バケットやオブジェクトなどについて説明していきます。

まずはS3 = データを蓄えるためのストレージサービスとして覚えておきましょう!

バケット・オブジェクト・キー名(オブジェクトキー)・プレフィクスとは??

さて、S3とは何かという基本的なお話は理解できたと思います。次はさらに深堀し、S3を構成する要素について理解しましょう。

オブジェクト

まずはオブジェクトです。

オブジェクトは、S3に保存されるデータの単位です。AWS公式ドキュメントでは、S3のオブジェクトは「ファイルと、そのファイルを説明するメタデータ」と説明されています。

なので、オブジェクト = データ、ファイルのようなものと簡単にイメージしておきましょう。例えば、次のようなものはそれぞれ1つのオブジェクトになり得ます。皆さんがイメージするような、The データのようなものですね。

sample.jpg
sales.csv
app.log
user-data.json
backup-2026-05-16.zip
movie.mp4

ただし、厳密には上記だと少し雑な説明になります。

というのも普通のファイルは、パソコンやサーバーのファイルシステム上にある一方、S3のオブジェクトは、S3というオブジェクトストレージ上にあります。このオブジェクトは、単なるデータ本体だけでなく、次のような情報も持っているということには注意しましょう。

キー名
サイズ
更新日時
Content-Type
メタデータ
タグ
ストレージクラス
バージョンID

AWS公式ドキュメントでも、S3オブジェクトはキー、バージョンID、値、メタデータなどから構成されると説明されています。冒頭、オブジェクトはデータ本体、キー名、メタデータで構成されると記載したのはまさしくこれが理由です。

ちなみに、オブジェクトの中身は何でもOKです。S3は中身を「Excelファイル」や「画像」や「ログ」として特別に理解しているわけではありません。S3から見ると基本的には以下のようなものです。

キー名: reports/2026/05/sales.csv
データ本体: バイト列
メタデータ: Content-Type = text/csv など

つまりS3は、「これはCSVだから表として管理しよう」とか、「これはJPEGだから画像フォルダに入れよう」とかを考えているわけではありません。単に「このキー名に、このデータ本体とメタデータを紐づけて保存する」というサービスです。

バケット

さて、それでは次にバケットです。構成上はバケットの中にオブジェクトが入っているようなイメージになっていたかと思います。

バケット名は、S3でオブジェクトを保存するための入れ物の名前です。AWS公式ドキュメントでも、S3は多数のオブジェクトを保存するオブジェクトストアであり、オブジェクトはバケットに保存される、と説明されています。

バケット(bucket)は”バケツ”という意味です。「S3 バケット」など検索してみてください。バケツのようなアイコン画像が出てくると思います。要はオブジェクト(データ)を入れておくための入れ物(バケツ)がバケットです。

イメージ的に、バケットは、ファイルシステムでいう「ドライブ」や「最上位ディレクトリ」に少し似ていますが、完全に同じではありません。以下のように、バケットとキー名(オブジェクトキー)でオブジェクトを指定するということは覚えておきましょう。

バケット + キー名(オブジェクトキー) -> オブジェクト

キー名(オブジェクトキー)

次はキー名(オブジェクトキー)です。

キー名(オブジェクトキー)は、バケット内のオブジェクトを識別する名前です。AWS公式ドキュメントでは、キー名(オブジェクトキー)は、S3バケット内のオブジェクトを一意に識別すると説明されています。

オブジェクトを特定するための”鍵”、すなわち”キー”となるような値ということですね。

プレフィクス

最後にプレフィクスです。

プレフィクスは、キー名の先頭部分です。AWS公式ドキュメントでは、プレフィクスは、キー名(オブジェクトキー)の先頭にある文字列と説明されています。

一般的に、プレフィックス(prefix)とは、単語、データ、文字列の先頭に付け加えられる要素のことです。日本語では「接頭辞」とも呼ばれます。

ファイル名やデータ名の先頭に特定の文字を付けて分類しやすくできるようにしています。

具体例

具体例があるとイメージしやすいので、例を見ながら理解を深めましょう。

例えば、「sales.csv」というデータが以下のように保存されていたとします。S3は以下のように保存されるので何となく見覚えだけでもつけておくようにしましょう。

s3://my-company-prod/reports/2026/05/sales.csv

このうち、バケット、キー名(オブジェクトキー)、プレフィクスはそれぞれ以下のような対応付けになります。

s3://my-company-prod/reports/2026/05/sales.csv
     └─────────────┘ └──────────────────────────┘
        バケット              キー名(オブジェクトキー)

                     └──────┘
                    プレフィクスの例

                     └────────────┘
                    プレフィクスの例

                     └────────────────┘
                    プレフィクスの例

                                      └───────┘
                             人間が「ファイル名」と呼びがちな部分

バケット:
  my-company-prod

キー名(オブジェクトキー):
  reports/2026/05/sales.csv

プレフィクス:
  reports/
  reports/2026/
  reports/2026/05/

人間がファイル名のように見る部分:
  sales.csv

オブジェクト:
 reports/2026/05/sales.csvというキー名(オブジェクトキー)で保存されたsales.csvのデータ本体、キー名(オブジェクトキー)、メタデータなど

データ本体:
 csvファイルの中身

メタデータ:
 データサイズ、更新日時など

バケットは最上位にある入れ物です。その中にオブジェクトが入っています。

オブジェクトは、データ本体だけでなく、キー名(オブジェクトキー)、メタデータなども含めて構成されます。

キー名(オブジェクトキー)がバケット内のオブジェクトを一意に識別するための”キー(鍵)”となる値です。

重要な理解として、キー名(オブジェクトキー)は以下ということです。

reports/2026/05/sales.csv

人間の感覚では、

reports/
  2026/
    05/
      sales.csv

のようなフォルダ構成に見えますが、ここが混乱しやすいポイントで、S3から見ると実体は端に1つの文字列なので注意しましょう。

S3から見ると、

キー名(オブジェクトキー)reports/2026/05/sales.csvのオブジェクトが1個ある

というだけです。階層構造で情報を持っているわけではなく、階層構造に見えるだけです。

最後にプレフィクスは単に分類しやすいように文字列を追加したものです。例の通り、「reports」もプレフィクスですし、「reports/2026/05/」もプレフィクスです。分類するための文字列として理解しましょう。

例えば、

Prefix = reports/2026/

でS3に一覧取得をすると、キー名が「reports/2026/」で始まるオブジェクトだけを取得できます。

以下は取得できる
reports/2026/01/sales.csv
reports/2026/02/sales.csv
reports/2026/05/sales.csv

以下は一致しない
reports/2025/12/sales.csv
images/2026/logo.png

ちなみにAWSも「プレフィクスはディレクトリのように整理する方法として考えられるが、ディレクトリではない」と明記しています。ディレクトリに似てるけど実際は違うよと言ってるわけですね。

上記で分かりにくい場合は、S3を巨大な倉庫だと考えてみましょう。以下のようなイメージですかね。

AWSアカウント = 会社
バケット = 倉庫
オブジェクト = 荷物
キー名 = 荷物番号・置き場所ラベル
メタデータ = 荷物に貼られた情報ラベル

※おまけ

複数バケット・複数オブジェクトはOK??

S3の中には複数バケット、複数オブジェクトを入れ込むことももちろん可能です。

階層で示すならば、以下のようなイメージです。

AWSアカウント
  └── Amazon S3
        ├── バケットA
        │     ├── オブジェクト1
        │     ├── オブジェクト2
        │     └── オブジェクト3
        │
        ├── バケットB
        │     ├── オブジェクト1
        │     └── オブジェクト2
        │
        └── バケットC
              └── オブジェクト1

なので、

S3 : バケット = 1 : 多
バケット : オブジェクト = 1 : 多

と考えましょう。

バケット名はグローバルに一意

バケットは複数作れますが、重要な制約があります。

S3のバケットは、特定の名前空間内で世界中で一意である必要があります。つまり、他のAWS利用者がすでに使っているバケット名は、自分のAWSアカウントでは作れません。AWS公式ドキュメントでも、バケット作成後、その名前は他の人が同じ名前で作れなくなると説明されています。

最後に

さて今回は、Amazon S3についてまとめました。

S3とはそもそも何か、データの持ち方、バケット・オブジェクト・キー名(オブジェクトキー)・プレフィクスの違いなどについて理解できたかと思います。

一般的なファイルサーバーをイメージしていると混乱しますので、正しい理解をしておきましょう。

以上!

AWS関連は資格勉強記事もあげていますのでご覧いただければと思います。

AWS以外の勉強記事も是非!

コメント

タイトルとURLをコピーしました