S3とは

# S3とは

**S3**は「Simple Storage Service」の略で、AWSが提供するオブジェクトストレージサービスです。オブジェクトストレージとは、ファイルや画像、動画などのデータを「オブジェクト」として保存する仕組みのことです。

S3の最大の特徴は、**高い耐久性、可用性、スケーラビリティ**です。
* **耐久性（Durability）**: データの紛失リスクが極めて低く、非常に高い耐久性を誇ります（イレブンナイン、99.999999999%）。これは、データを複数のアベイラビリティゾーンにわたって自動的に複製して保存しているためです。
* **可用性（Availability）**: いつでもどこからでもデータにアクセスできる、非常に高い可用性を実現しています。
* **スケーラビリティ（Scalability）**: 保存できるデータ量に実質的な上限がなく、必要に応じて容量を自動的に拡張してくれます。

つまり、データの保存に関するあらゆる悩みを解決してくれる、頼れるストレージサービスです。

## 目次

* S3バケット
* S3オブジェクト
* オブジェクトの管理（バージョニング、ライフサイクル管理）
* S3のアクセス制御（バケットポリシー、ACL）
* S3ストレージクラス
* S3の便利な機能（静的ウェブサイトホスティング、イベント通知など）

## S3バケット：データをしまう「入れ物」

「**S3バケット**」は、S3にデータを保存するための「入れ物」です。ファイルを保存するには、まずバケットを作成する必要があります。バケット名はAWS全体でユニークである必要があり、インターネット上のURLとしても利用されます。

例えるなら、データを整理するための大きな引き出しのようなものです。その引き出しの中に、さらにたくさんのファイル（オブジェクト）をしまっていくイメージです。

## S3オブジェクト：バケットに保存される「データ本体」

「**S3オブジェクト**」は、S3バケットに保存されるデータ本体のことです。写真、動画、ドキュメント、バックアップファイルなど、様々な形式のデータをオブジェクトとして保存できます。

各オブジェクトには、データ本体と、そのデータを記述するメタデータ（最終更新日時、コンテンツタイプなど）が含まれます。オブジェクトは、キーと呼ばれる一意の識別子（ファイル名のようなもの）によってバケット内で管理されます。

## オブジェクトの管理：データを賢く扱う機能

S3には、保存したオブジェクトを効率的に管理するための便利な機能が備わっています。

### バージョニング：データの「タイムマシン」

「**バージョニング**」は、S3バケット内でオブジェクトの複数のバージョンを保持する機能です。これにより、誤ってオブジェクトを上書きしたり削除したりした場合でも、以前のバージョンに復元することができます。まるで、データのタイムマシンを持っているようなものです。

### ライフサイクル管理：データの「自動整理整頓」

「**ライフサイクル管理**」は、オブジェクトの保存期間やストレージクラスの変更を自動化する機能です。例えば、「30日経過したオブジェクトは低頻度アクセスストレージクラスに移動し、1年経過したら削除する」といったルールを設定できます。これにより、ストレージコストを最適化し、データの管理手間を削減できます。

## S3のアクセス制御：データの「鍵と番人」

S3に保存されたデータは、デフォルトではプライベートです。アクセス制御メカニズムを設定することで、誰がどのオブジェクトにアクセスできるかを細かく制御できます。

### バケットポリシー：バケット全体の「門番」

「**バケットポリシー**」は、S3バケット全体に対してアクセス権限を設定するJSON形式のポリシーです。特定のIPアドレスからのアクセスを許可したり、特定のIAMユーザーに読み取り権限を与えたりと、バケットレベルでのアクセス制御を強力に行えます。

### アクセスコントロールリスト（ACL）：個別の「扉の鍵」

「**アクセスコントロールリスト（ACL）**」は、個々のバケットやオブジェクトに対してアクセス権限を設定するレガシーな仕組みです。現在は、バケットポリシーやIAMポリシーで細かくアクセス制御を行うことが推奨されていますが、一部のシナリオではACLも引き続き利用されます。

### S3ストレージクラス：用途に合わせた「データの置き場所」

S3には、アクセス頻度やデータの重要度に応じて、いくつかの「ストレージクラス」が用意されています。これらを使い分けることで、コストを最適化できます。

* **S3 Standard**：汎用的な利用に適した、高耐久性・高可用性・高性能なストレージクラスです。頻繁にアクセスされるデータに最適です。
* **S3 Intelligent-Tiering**：アクセスパターンが不明なデータや変化するデータに最適です。アクセス頻度に応じて自動的にストレージクラスを移動してくれるため、コストを最適化できます。
* **S3 Standard-IA（Infrequent Access）**：アクセス頻度は低いが、必要な時にすぐに取得したいデータに適しています。アーカイブやバックアップ用途でコストを抑えられます。
* **S3 One Zone-IA**：Standard-IAと同様に低頻度アクセスですが、データを1つのアベイラビリティゾーンにのみ保存するため、Standard-IAよりもさらに低コストです。ただし、AZ障害時にはデータが失われる可能性があります。
* **S3 Glacier**：長期的なデータアーカイブに適した、非常に低コストなストレージクラスです。データの取り出しに数分から数時間かかる場合があります。
* **S3 Glacier Deep Archive**：最も低コストなアーカイブストレージクラスです。データの取り出しに最大12時間かかる場合がありますが、非常に長期間のデータ保存に最適です。

## S3の便利な機能：データの活用を広げる

S3は、単にデータを保存するだけでなく、様々な機能と連携してデータを活用できます。

* **静的ウェブサイトホスティング**：HTML、CSS、JavaScriptなどの静的コンテンツをS3にアップロードするだけで、簡単にウェブサイトを公開できます。
* **イベント通知**：S3バケット内でオブジェクトが作成されたり削除されたりした際に、Lambda関数やSNSトピックなどにイベントを通知できます。これにより、データアップロードをトリガーに処理を自動化するといったことが可能です。
* **S3 Select & Glacier Select**：オブジェクト全体のダウンロードなしに、必要なデータだけをS3やGlacierから直接クエリできる機能です。大規模なデータセットから特定の情報を抽出する際に、転送量を削減し、効率を高めます。
* **クロスリージョンレプリケーション (CRR)**：あるリージョンのS3バケットにアップロードされたオブジェクトを、自動的に別のリージョンのバケットにレプリケート（複製）する機能です。DR（災害対策）やデータコンプライアンスの要件を満たすのに役立ちます。

## まとめ

S3は、高い耐久性とスケーラビリティを持ち、あらゆる種類のデータを柔軟に保存・管理できるAWSの主要なストレージサービスです。Webサイトホスティングからデータ分析、バックアップ、災害対策まで、さまざまな用途で利用できる。