▪️目的
AWSを利用していると、「S3」というサービスをよく目にします。
AWSの代表的なサービスの一つですが、
- S3って何?
- EBSとは何が違うの?
- S3には何を保存するの?
- バケットやオブジェクトって何?
- S3はどうやって利用するの?
- なぜAWSではS3がよく使われるの?
と疑問に思う方も多いのではないでしょうか。
S3は、AWSを理解するうえで非常に重要なサービスです。
この記事では、AWS初心者の方向けに、S3の基本的な仕組みから、バケット・オブジェクト、アクセス方法、EBSとの違いまで分かりやすく解説します。
▪️S3とは?
S3とは、Amazon Simple Storage Serviceの略です。
簡単にいうと、
AWS上でファイルやデータを保存するためのオブジェクトストレージサービス
です。
例えば、
- 画像
- 動画
- ログ
- バックアップ
- ドキュメント
- 静的Webサイトのファイル
- アプリケーションが利用するデータ
など、さまざまなデータを保存できます。
イメージとしては、
S3
│
├─ 画像
├─ 動画
├─ ログ
├─ バックアップ
└─ その他のファイル
という「AWS上のデータ保管場所」のようなものです。
▪️オブジェクトストレージとは?
S3を理解するためには、オブジェクトストレージという言葉を理解しておく必要があります。
オブジェクトストレージでは、データをオブジェクトという単位で管理します。
例えば、
写真.jpg
というファイルをS3に保存するとします。
S3では、このデータをオブジェクトとして管理します。
オブジェクト
│
├─ データ
├─ メタデータ
└─ キー
という形で考えることができます。
EBSのような「ディスク」にデータを書き込むのではなく、データをオブジェクトとして保存するのがS3の特徴です。
▪️S3のバケットとは?
S3では、データを保存するためにバケットを作成します。
バケットは簡単にいうと、
S3上でオブジェクトを保存するための入れ物
です。
例えば、
S3
│
└─ バケット
│
├─ image01.jpg
├─ image02.jpg
├─ document.pdf
└─ backup.zip
という構成になります。
つまり、
バケット
↓
オブジェクトを保存する入れ物
オブジェクト
↓
実際に保存するデータ
と考えると分かりやすいでしょう。
▪️オブジェクトとは?
S3で保存するデータをオブジェクトと呼びます。
例えば、
photo.jpg
という画像ファイルを保存した場合、
バケット
│
└─ photo.jpg
というオブジェクトとして保存されます。
オブジェクトには、データそのものだけではなく、メタデータなどの情報も関連付けられています。
▪️S3の「キー」とは?
S3では、オブジェクトを識別するためにキーという名前を利用します。
例えば、
images/aws/s3.jpg
というキーを持つオブジェクトを考えてみます。
バケット
│
└─ images/aws/s3.jpg
一見すると、
images
└─ aws
└─ s3.jpg
というフォルダ構造に見えます。
しかし、S3では基本的にこの文字列全体がオブジェクトキーです。
つまり、
images/aws/s3.jpg
という名前のオブジェクトが存在している、と考えることができます。
この点は、Linuxなどのファイルシステムとは少し考え方が異なります。
▪️S3にデータを保存するイメージ
例えば、S3に画像を保存するとします。
AWS
│
└─ S3
│
└─ my-bucket
│
├─ image01.jpg
├─ image02.jpg
└─ image03.jpg
このように、バケットの中にオブジェクトを保存していきます。
アプリケーションからS3を利用する場合は、AWS SDKやAWS CLIなどを利用してデータをアップロード・ダウンロードできます。
▪️AWS CLIからS3を利用する
S3はAWS CLIからも操作できます。
例えば、ローカルにあるファイルをS3へアップロードする場合、
aws s3 cp sample.txt s3://example-bucket/
のようなコマンドを利用できます。
逆に、S3に保存されているファイルを取得する場合は、
aws s3 cp s3://example-bucket/sample.txt .
のようにします。
このように、S3はAWSコンソールだけではなく、CLIやプログラムからも利用できます。
▪️S3とEBSの違い
ここはAWS初心者の方が特に混乱しやすいポイントです。
S3とEBSは、どちらもデータを保存するためのサービスですが、役割が異なります。
| 項目 | EBS | S3 |
|---|---|---|
| 種類 | ブロックストレージ | オブジェクトストレージ |
| 主な用途 | EC2のディスク | ファイル・データの保存 |
| EC2との関係 | EC2に接続して利用 | APIやCLIなどから利用 |
| データ単位 | ブロック | オブジェクト |
| 代表的な用途 | OS・アプリ・DB | 画像・ログ・バックアップなど |
簡単に考えると、
EBS
↓
EC2のディスク
S3
↓
AWS上のデータ保管場所
という違いです。
例えばEC2のOSを保存するならEBS。
EC2で生成したログを長期間保存するならS3。
画像ファイルを保存するならS3。
というように、用途に応じて使い分けます。
▪️S3とEC2の関係
S3はEC2に直接「ディスクとして接続する」サービスではありません。
例えば、
EC2
│
│ API / CLI / SDK
▼
S3
│
└─ データ
のように、EC2上のアプリケーションからS3へアクセスできます。
例えばWebアプリケーションでユーザーが画像をアップロードした場合、
ユーザー
│
▼
Webアプリ
│
▼
S3
│
└─ 画像を保存
という構成にできます。
このように、アプリケーションのデータ保存先としてS3を利用できます。
▪️S3の代表的な利用用途
S3は非常に多くの用途で利用されています。
① 画像・動画の保存
Webサービスで利用する画像や動画をS3に保存できます。
ユーザー
│
▼
アプリケーション
│
▼
S3
├─ image01.jpg
├─ image02.jpg
└─ movie01.mp4
例えばECサイトの商品画像などです。
② バックアップ
S3はバックアップデータの保存先としても利用できます。
例えば、
EC2
│
└─ バックアップ
│
▼
S3
のように、サーバー上のデータをS3へ保存できます。
③ ログの保存
システムから出力されるログをS3に保存することもできます。
例えば、
EC2
│
└─ ログ
│
▼
S3
という構成です。
大量のログを長期間保存したい場合などに利用できます。
④ 静的Webサイト
S3では、HTMLやCSS、JavaScriptなどの静的コンテンツを保存することもできます。
例えば、
S3
│
├─ index.html
├─ style.css
└─ script.js
といったファイルを保存します。
これらを利用して、静的Webサイトを構築することもできます。
▪️S3のアクセス制御
S3はAWS上にデータを保存するサービスなので、誰がそのデータにアクセスできるのかを適切に管理する必要があります。
例えば、
ユーザー
│
▼
S3
という構成で、誰でもデータを取得できる状態にしてしまうと、機密情報などが外部へ公開される可能性があります。
そのため、
- IAM
- バケットポリシー
- Block Public Access
- 暗号化
などを利用してアクセスを制御します。
特にS3では、意図せずデータを公開しないことが重要です。
▪️IAMとS3
S3へのアクセス権限を考えるときには、IAMも重要になります。
例えばEC2上のアプリケーションからS3へアクセスさせる場合、
EC2
│
└─ IAMロール
│
▼
S3
という構成にできます。
IAMロールによって、
「このEC2から、このS3バケットのこの操作を許可する」
といったアクセス権限を設定できます。
例えば、
s3:GetObject
s3:PutObject
などの権限を利用します。
このように、S3を理解するにはIAMも重要な要素になります。
▪️S3のデータを守る
S3では、保存されているデータを保護するために暗号化を利用できます。
例えば、
アプリケーション
│
▼
S3
│
▼
暗号化されたデータ
という形でデータを保護できます。
S3では、AWS側で暗号化を行う仕組みを利用できるほか、用途によってはAWS KMSなどと組み合わせることもあります。
▪️S3のストレージクラス
S3には、データの利用頻度などに応じて複数のストレージクラスがあります。
代表的なものとして、
- S3 Standard
- S3 Intelligent-Tiering
- S3 Standard-IA
- S3 One Zone-IA
- S3 Glacier Instant Retrieval
- S3 Glacier Flexible Retrieval
- S3 Glacier Deep Archive
などがあります。
例えば、
頻繁に利用するデータ
↓
S3 Standard
あまり利用しないデータ
↓
低頻度アクセス向けのストレージクラス
長期間保管するデータ
↓
Glacier系
というように、データの利用頻度や保存期間などに応じて選択します。
ただし、単純に「Glacier=バックアップ」と決めつけるのではなく、アクセス頻度・取り出し要件・保存期間・コストなどを考慮して選択することが重要です。
▪️S3のバージョニング
S3にはバージョニングという機能があります。
バージョニングを有効にすると、同じキーのオブジェクトを上書きした場合でも、以前のバージョンを保持できます。
例えば、
sample.txt
│
├─ Version 1
├─ Version 2
└─ Version 3
というように、複数のバージョンを管理できます。
誤ってファイルを上書きした場合などに、以前のバージョンを利用できる可能性があります。
▪️S3とバックアップ
S3はバックアップ先として便利ですが、
S3に保存すれば何でも自動的にバックアップになる
というわけではありません。
例えば、
- 何をバックアップするのか
- どのくらいの期間保存するのか
- いつ削除するのか
- 誤削除にどう備えるのか
- 別リージョンにも保存する必要があるか
などを考える必要があります。
S3のバージョニングやライフサイクル、レプリケーションなどを組み合わせることで、より適切なデータ管理を設計できます。
▪️S3のライフサイクル
S3にはライフサイクルという仕組みがあります。
例えば、
作成
↓
S3 Standard
↓
一定期間経過
↓
低頻度アクセス向けへ移行
↓
さらに期間経過
↓
アーカイブ
↓
不要になったら削除
といったルールを設定できます。
これにより、長期間保存するデータを自動的に適切なストレージクラスへ移行したり、不要になったデータを削除したりできます。
大量のログやバックアップなどを長期間保存する場合に便利な機能です。
▪️S3を利用したWebシステムの例
例えば、ユーザーが画像をアップロードするWebサービスを考えてみます。
Internet
│
▼
ALB
│
▼
アプリケーション
│
▼
S3
│
┌───────┴───────┐
▼ ▼
image01.jpg image02.jpg
このように、アプリケーション本体と画像データを分離できます。
アプリケーションサーバーに画像を直接保存するのではなく、S3に保存することで、サーバーとデータの役割を分けることができます。
▪️S3を理解するとAWSのストレージが見えてくる
ここまで説明してきた、
- EBS
- AMI
- S3
を整理すると、それぞれの役割が分かりやすくなります。
EBS
↓
EC2のディスク
AMI
↓
EC2を作成するためのテンプレート
S3
↓
オブジェクトとしてデータを保存するストレージ
例えば、
AWS
│
┌───────┴────────┐
▼ ▼
EC2 S3
│ │
▼ ▼
EBS オブジェクト
│
▼
OS・アプリ
というように、それぞれ役割が違います。
AWSでは、このようなサービスを組み合わせてシステムを構築します。
▪️まとめ
今回は、AWSのS3について解説しました。
S3は、AWS上でデータを保存するためのオブジェクトストレージサービスです。
ポイントを整理すると、
- S3はAmazon Simple Storage Serviceの略
- オブジェクトストレージとしてデータを保存する
- データを保存する入れ物をバケットという
- 保存するデータをオブジェクトという
- オブジェクトを識別する名前をキーという
- AWS CLIやSDKなどから利用できる
- 画像・動画・ログ・バックアップなど幅広い用途で利用できる
- IAMやバケットポリシーなどを利用してアクセスを制御する
- ストレージクラスによってデータの利用頻度や保存要件に対応できる
- バージョニングやライフサイクルなど、データ管理に関する機能も用意されている
特に、
EBS=EC2のディスク
AMI=EC2を作成するためのテンプレート
S3=オブジェクトとしてデータを保存するストレージ
という3つの違いを理解しておくと、AWSのストレージ周りがかなり分かりやすくなります。
AWSでは、単純に「データを保存する」というだけではなく、どのようなデータを、どこに、どのように保存し、誰がアクセスできるようにするのかまで考えて設計していきます。
次回は、AWSでユーザやサービスの認証をするときに利用される代表的なサービス、IAMについて解説します。
*「IAM」の記事はこちら
→「https://lovelabengineer.com/2026/10/08/awsのiamとは?ユーザーやサービスのアクセス権限を/」

No responses yet