概要
Amazon S3(Simple Storage Service)は、AWS が提供するオブジェクトストレージサービスです。インターネット経由でどこからでもデータを保存・取得でき、容量の制限を意識することなく利用できます。
クラウド上でアプリケーションを構築する際、画像・動画・ログ・バックアップデータなど、さまざまなファイルを保管する場所が必要になります。S3 はこうしたデータの保存先として最も広く使われるサービスであり、高い耐久性(99.999999999%)と可用性を備えています。この記事では、S3 バケットの作成からオブジェクトのアップロード・ダウンロード・削除までの基本操作を体験します。

この記事のメリット
- Amazon S3 の基本概念(バケット、オブジェクト、キー、ストレージクラス)を理解できる
- AWS マネジメントコンソールからバケットを作成する手順を習得できる
- オブジェクトのアップロード・ダウンロード・削除の基本操作を体験できる
- バケットポリシーとアクセス制御の基本的な考え方を把握できる
- バージョニングの有効化と動作を確認できる
キャラクター紹介
クラウド資格実践ラボの基礎学習記事では、ルクシーちゃんと代表の土肥が対話形式で AWS 認定試験で必要な知識をハンズオンとともに解説していくブログです。これからこのブログを案内する2人を紹介します。

ルクシーちゃん
クラウド資格に挑戦中の好奇心旺盛なナビゲーター。初学者目線で「これってなんだろう?」と素朴な疑問を投げかけ、知識を引き出していく役どころ。難しい内容も、ルクシーちゃんと一緒なら一歩ずつ理解できると思います!
土肥(とひ)
株式会社Luxyの代表であり同社の元エンジニア。これまでオンプレとAWS環境のインフラを担当。AWS認定資格の学習で得た知識をハンズオンとともに解説するのが得意。直近では新人の教育なども行っており、これから技術を学ぼうという方が納得できるように解説できることに喜びを感じているとのこと。

技術解説
Luxyちゃんとひさん、Amazon S3 ってよく聞くんですけど、どんなサービスなんですか?
S3 は「オブジェクトストレージ」と呼ばれる種類のストレージサービスだよ。普通のファイルシステムみたいなディレクトリ階層は持たず、データを「オブジェクト」として一意のキーで管理するんだ。容量制限が実質的に存在しなくて、保存したデータ量と転送量に応じて課金される従量課金モデルだね。



ファイルシステムとは違うんですね。データの管理はどういう仕組みになってるんですか?
S3 のデータ管理は「バケット」と「オブジェクト」の2つの概念で構成されるよ。
| 要素 | 説明 |
|---|---|
| バケット | オブジェクトを格納するコンテナ。グローバルに一意な名前が必要 |
| オブジェクト | S3 に保存されるデータの単位。ファイルの実体(データ)とメタデータで構成される |
| キー | バケット内でオブジェクトを一意に識別する名前。パス区切り(/)を含めることでフォルダのように整理できる |
例えば、バケット名が my-app-bucket、キーが images/photo.jpg の場合、このオブジェクトの S3 URI は s3://my-app-bucket/images/photo.jpg となるんだ。





なるほど、バケットがフォルダみたいなもので、その中にオブジェクトが入ってるイメージですね!ところで、保存するデータの種類によってコストを最適化できたりするんですか?
いいところに気づいたね。S3 はデータのアクセス頻度や要件に応じて複数のストレージクラスを提供しているよ。
| ストレージクラス | 特徴 | ユースケース |
|---|---|---|
| S3 Standard | 高頻度アクセス向け。高い可用性と耐久性 | 頻繁にアクセスするデータ |
| S3 Standard-IA | 低頻度アクセス向け。Standard より保存コストが低い | バックアップ、災害復旧データ |
| S3 One Zone-IA | 単一 AZ に保存。IA よりさらに低コスト | 再作成可能なデータの低頻度アクセス |
| S3 Glacier Instant Retrieval | アーカイブ向け。ミリ秒単位の取り出し | 四半期に1回程度アクセスするアーカイブ |
| S3 Glacier Flexible Retrieval | アーカイブ向け。取り出しに数分〜数時間 | 年に1〜2回アクセスするアーカイブ |
| S3 Glacier Deep Archive | 最も低コスト。取り出しに12時間以内 | 長期保存が必要なコンプライアンスデータ |
| S3 Intelligent-Tiering | アクセスパターンに基づき自動でクラスを移動 | アクセスパターンが予測できないデータ |



こんなに種類があるんですね。アクセス頻度が低いデータほどコストを抑えられるってことですね。



でも、間違えてファイルを上書きしちゃったらどうなるんですか?元に戻せるんでしょうか……。
そういう心配に対応できるのが「バージョニング」だよ。バージョニングを有効にすると、同じキーのオブジェクトを上書きアップロードしても、以前のバージョンが保持されるんだ。誤った上書きや削除からデータを保護する仕組みだね。バージョニングの状態は以下の3つがあるよ。
| 状態 | 説明 |
|---|---|
| 無効(デフォルト) | バージョニングが設定されていない |
| 有効 | すべてのオブジェクトのバージョンが保持される |
| 一時停止 | 新しいバージョンの作成が停止されるが、既存のバージョンは保持される |



バージョニングがあれば安心ですね!あと、S3 に保存したデータのアクセス制御はどうやって管理するんですか?
S3 のアクセス制御にはいくつかの仕組みがあるんだ。
| 仕組み | 説明 |
|---|---|
| バケットポリシー | バケット単位で JSON 形式のポリシーを設定する。パブリックアクセスの許可・拒否など |
| IAM ポリシー | IAM ユーザーやロールに対して S3 操作の権限を付与する |
| パブリックアクセスブロック | バケットやアカウントレベルでパブリックアクセスを一括でブロックする |
| ACL(アクセス制御リスト) | オブジェクト単位での制御。現在は無効化が推奨されている |



けっこういろいろあるんですね……。どれを使えばいいか迷いそうです。
基本的にはバケットポリシーと IAM ポリシーを使い分けるのが一般的だよ。パブリックアクセスブロックはデフォルトで有効になっているから、意図しない公開を防いでくれるんだ。ACL は今は無効化が推奨されているから、新規で使うことはほとんどないね。



わかりました!それでは実際にバケットを作って触ってみましょう!
実践
ここでは、S3 バケットを作成し、オブジェクトのアップロード・ダウンロード・削除と、バージョニングの動作を体験します。
前提条件
- リージョン:
ap-northeast-1(東京) - AWS マネジメントコンソールにログイン済み
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| S3 バケット | my-first-s3-bucket-<アカウントID> | ハンズオン用バケット |
バケット名はグローバルに一意である必要があるため、AWS アカウント ID などを付与して重複を避けてください。
バケットを作成する
- AWS マネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
S3と入力し、表示された「S3」を選択します - 「バケットを作成」をクリックします
- 以下を設定します
- バケット名:
my-first-s3-bucket-<アカウントID>(例:my-first-s3-bucket-123456789012) - AWS リージョン:
アジアパシフィック(東京)ap-northeast-1 - 「パブリックアクセスをすべてブロック」がチェックされていることを確認します
- その他の項目はデフォルトのままにします
- 「バケットを作成」をクリックします


バケット一覧画面に戻り、作成したバケットが表示されていることを確認します。


オブジェクトをアップロードする
- バケット一覧から作成したバケット名をクリックして開きます
- 「アップロード」をクリックします
- 「ファイルを追加」をクリックし、任意のファイル(テキストファイルや画像など)を選択します
- その他の設定はデフォルトのままにします
- 「アップロード」をクリックします


アップロード完了画面が表示されたら「閉じる」をクリックします。バケット内にアップロードしたオブジェクトが表示されていることを確認します。


オブジェクトをダウンロードする
- バケット内のオブジェクト一覧から、ダウンロードしたいオブジェクトのチェックボックスを選択します
- 「ダウンロード」をクリックします
ファイルがローカルにダウンロードされます。
フォルダを作成してオブジェクトを整理する
S3 には実際のフォルダ構造はありませんが、コンソール上ではフォルダのようにオブジェクトを整理できます。
- バケット内で「フォルダの作成」をクリックします
- フォルダ名に
imagesと入力します - 「フォルダの作成」をクリックします
作成した images フォルダをクリックして中に入り、「アップロード」から任意のファイルをアップロードします。このオブジェクトのキーは images/<ファイル名> となります。
バージョニングを有効にする
- バケットのトップ画面に戻り、「プロパティ」タブを選択します
- 「バケットのバージョニング」セクションの「編集」をクリックします
- 「有効にする」を選択します
- 「変更の保存」をクリックします


バージョニングの動作を確認する
- 「オブジェクト」タブに戻ります
- 最初にアップロードしたファイルと同じファイル名で、内容を変更したファイルをアップロードします
- アップロード完了後、オブジェクト一覧で「バージョンの表示」トグルをオンにします
同じキーのオブジェクトに対して複数のバージョンが保持されていることが確認できます。


オブジェクトを削除する
- オブジェクト一覧で削除したいオブジェクトのチェックボックスを選択します
- 「削除」をクリックします
- 確認画面で「完全に削除」と入力し、「オブジェクトの削除」をクリックします
バージョニングが有効な場合、「バージョンの表示」がオフの状態で削除すると、削除マーカーが付与されるだけでデータ自体は残ります。「バージョンの表示」をオンにすると、削除マーカーと以前のバージョンが確認できます。


まとめ
- Amazon S3 はオブジェクトストレージサービスであり、バケットとオブジェクト(キー)の2層構造でデータを管理する
- バケット名はグローバルに一意である必要がある
- ストレージクラスを使い分けることで、アクセス頻度に応じたコスト最適化が可能
- バージョニングを有効にすると、オブジェクトの上書き・削除時に以前のバージョンが保持される
- パブリックアクセスブロックはデフォルトで有効であり、意図しない公開を防止する
- バージョニング有効時の削除は削除マーカーの付与であり、データ自体は残る









