Amazon S3には複数のストレージクラスが用意されており、データのアクセス頻度や保管要件に応じて最適なものを選択できます。さらに、ライフサイクルルールを設定することで、時間の経過とともにストレージクラスを自動で移行したり、不要なオブジェクトを削除したりできます。この記事では、S3のストレージクラスの特徴と、ライフサイクル管理によるコスト最適化の方法を解説します。
S3ストレージクラスの全体像
S3には用途に応じた複数のストレージクラスがあり、アクセス頻度、取り出し時間、コストのバランスが異なります。適切なストレージクラスを選択することで、パフォーマンスを維持しながらストレージコストを最適化できます。
ストレージクラスの分類
S3のストレージクラスは、大きく以下のカテゴリに分類されます。
graph TB
subgraph "汎用"
S3S[S3 Standard]
end
subgraph "アクセスパターン不明"
INT[S3 Intelligent-Tiering]
end
subgraph "高性能"
EXP[S3 Express One Zone]
end
subgraph "低頻度アクセス"
SIA[S3 Standard-IA]
OIA[S3 One Zone-IA]
end
subgraph "アーカイブ"
GIR[Glacier Instant Retrieval]
GFR[Glacier Flexible Retrieval]
GDA[Glacier Deep Archive]
end
S3S -->|アクセス減少| INT
S3S -->|アクセス減少| SIA
SIA -->|さらに減少| GIR
GIR -->|長期保管| GFR
GFR -->|超長期保管| GDA各ストレージクラスの主な特徴を整理します。
| ストレージクラス | ユースケース | 最小保管期間 | 取り出しレイテンシー |
|---|---|---|---|
| S3 Standard | 頻繁にアクセスするデータ | なし | ミリ秒 |
| S3 Intelligent-Tiering | アクセスパターンが不明なデータ | なし | ミリ秒 |
| S3 Express One Zone | 超低レイテンシーが必要なデータ | 1時間 | 1桁ミリ秒 |
| S3 Standard-IA | 低頻度アクセスだが即時取得が必要 | 30日 | ミリ秒 |
| S3 One Zone-IA | 再作成可能な低頻度アクセスデータ | 30日 | ミリ秒 |
| Glacier Instant Retrieval | 四半期に1回程度のアクセス | 90日 | ミリ秒 |
| Glacier Flexible Retrieval | 年に1〜2回のアクセス | 90日 | 分〜時間 |
| Glacier Deep Archive | ほとんどアクセスしない長期保管 | 180日 | 時間 |
耐久性と可用性
すべてのS3ストレージクラスは、99.999999999%(イレブンナイン)の耐久性を提供するように設計されています。ただし、可用性とAZ(アベイラビリティゾーン)の構成は異なります。
| ストレージクラス | 可用性(設計値) | AZ数 |
|---|---|---|
| S3 Standard | 99.99% | 3以上 |
| S3 Intelligent-Tiering | 99.9% | 3以上 |
| S3 Standard-IA | 99.9% | 3以上 |
| S3 One Zone-IA | 99.5% | 1 |
| Glacier Instant Retrieval | 99.9% | 3以上 |
| Glacier Flexible Retrieval | 99.99% | 3以上 |
| Glacier Deep Archive | 99.99% | 3以上 |
One Zoneストレージクラスは単一AZにデータを保存するため、AZ障害時にデータが失われるリスクがあります。再作成可能なデータや、他リージョンにレプリカがあるデータに適しています。
汎用ストレージクラス
S3 Standard
S3 Standardは、頻繁にアクセスするデータ向けの汎用ストレージクラスです。デフォルトのストレージクラスであり、以下の特徴があります。
- 高いスループットと低レイテンシーのデータアクセス
- 最小保管期間や最小オブジェクトサイズの制限なし
- 取り出し料金なし
S3 Standardは以下のユースケースに適しています。
- Webサイトの静的コンテンツ
- コンテンツ配信
- モバイルアプリやゲームのアセット
- ビッグデータ分析のアクティブデータセット
S3 Express One Zone
S3 Express One Zoneは、2023年に追加された高性能ストレージクラスです。1桁ミリ秒のレイテンシーを実現し、リクエストコストもS3 Standardより50%削減されています。
S3 Express One Zoneの特徴は以下の通りです。
- 専用のディレクトリバケットを使用
- 単一AZ内にデータを保存
- 機械学習のトレーニングや金融モデリングなど、超低レイテンシーが求められるワークロード向け
ディレクトリバケットは汎用バケットとは異なり、S3 Express One Zone専用のバケットタイプです。
アクセスパターン不明なデータ向け
S3 Intelligent-Tiering
S3 Intelligent-Tieringは、アクセスパターンが不明または変化するデータに最適なストレージクラスです。データのアクセス頻度を監視し、自動的に最もコスト効率の良い階層にオブジェクトを移動します。
graph TB
subgraph "S3 Intelligent-Tiering"
FA[高頻度アクセス層]
IA[低頻度アクセス層]
AA[アーカイブアクセス層<br/>オプション]
DA[ディープアーカイブアクセス層<br/>オプション]
end
Upload[オブジェクトアップロード] --> FA
FA -->|30日アクセスなし| IA
IA -->|アクセス発生| FA
IA -->|90日アクセスなし| AA
AA -->|180日アクセスなし| DA
AA -->|アクセス発生| FA
DA -->|アクセス発生| FAIntelligent-Tieringの階層構成は以下の通りです。
| 階層 | 移行条件 | 取り出し時間 | 料金 |
|---|---|---|---|
| 高頻度アクセス層 | デフォルト | ミリ秒 | S3 Standard相当 |
| 低頻度アクセス層 | 30日アクセスなし | ミリ秒 | S3 Standard-IA相当 |
| アーカイブアクセス層 | 90日アクセスなし(オプション) | 数分〜数時間 | Glacier Flexible Retrieval相当 |
| ディープアーカイブアクセス層 | 180日アクセスなし(オプション) | 数時間 | Glacier Deep Archive相当 |
Intelligent-Tieringには以下の特徴があります。
- 取り出し料金なし(アーカイブ層からの復元を除く)
- 少額のモニタリング・オートメーション料金が発生(オブジェクトあたり月額約0.0025USD/1,000オブジェクト)
- 128KB未満のオブジェクトは常に高頻度アクセス層に保存され、モニタリング料金は発生しない
低頻度アクセスデータ向け
S3 Standard-IA(Infrequent Access)
S3 Standard-IAは、アクセス頻度は低いものの、アクセス時には即座にデータを取得したいケースに適しています。
S3 Standard-IAの特徴は以下の通りです。
- S3 Standardと同等の耐久性と可用性
- ストレージ料金はS3 Standardより約40%低い
- 取り出し料金(GBあたり)が発生
- 最小保管期間30日、最小オブジェクトサイズ128KB
適したユースケースは以下の通りです。
- バックアップデータ
- 災害復旧用データ
- 古いログファイル
S3 One Zone-IA
S3 One Zone-IAは、S3 Standard-IAと同様の低頻度アクセス向けですが、単一AZにのみデータを保存します。
S3 One Zone-IAの特徴は以下の通りです。
- S3 Standard-IAより約20%低コスト
- 単一AZ障害時にデータ損失のリスクあり
- 再作成可能なデータや、別リージョンにレプリカがあるデータ向け
適したユースケースは以下の通りです。
- サムネイル画像(オリジナルから再生成可能)
- クロスリージョンレプリケーションの送信先
- オンプレミスデータのセカンダリバックアップ
アーカイブストレージクラス
長期保管が必要でアクセス頻度が非常に低いデータ向けに、3種類のGlacierストレージクラスが提供されています。
S3 Glacier Instant Retrieval
Glacier Instant Retrievalは、四半期に1回程度のアクセスがあるアーカイブデータ向けです。
- ミリ秒単位でのデータ取り出しが可能
- S3 Standard-IAより約68%低コスト
- 最小保管期間90日
医療画像やニュースメディアのアーカイブなど、即時アクセスが必要なアーカイブデータに適しています。
S3 Glacier Flexible Retrieval
Glacier Flexible Retrieval(旧S3 Glacier)は、年に1〜2回程度のアクセスがあるアーカイブデータ向けです。
取り出しオプションは3種類あります。
| オプション | 取り出し時間 | 用途 |
|---|---|---|
| 迅速(Expedited) | 1〜5分 | 緊急時のアクセス |
| 標準(Standard) | 3〜5時間 | 通常のアクセス |
| 大容量(Bulk) | 5〜12時間 | コスト重視の大量取り出し |
コンプライアンス要件でのデータ保持や、メディアアセットのアーカイブに適しています。
S3 Glacier Deep Archive
Glacier Deep Archiveは、S3で最も低コストのストレージクラスです。7〜10年以上の長期保管が必要なデータ向けに設計されています。
- Glacier Flexible Retrievalより約75%低コスト
- 取り出し時間は12時間(標準)または48時間(大容量)
- 最小保管期間180日
規制対応のためのデータ保持や、テープバックアップの代替として適しています。
ストレージクラスの選択フロー
データの特性に応じて適切なストレージクラスを選択するためのフローチャートです。
flowchart TD
A[データを保存] --> B{アクセス頻度は?}
B -->|頻繁| C{超低レイテンシーが必要?}
C -->|はい| D[S3 Express One Zone]
C -->|いいえ| E[S3 Standard]
B -->|不明/変動| F[S3 Intelligent-Tiering]
B -->|低頻度| G{即時取得が必要?}
G -->|はい| H{再作成可能?}
H -->|はい| I[S3 One Zone-IA]
H -->|いいえ| J[S3 Standard-IA]
G -->|数分〜数時間OK| K{アクセス頻度は?}
K -->|四半期に1回程度| L[Glacier Instant Retrieval]
K -->|年に1〜2回| M[Glacier Flexible Retrieval]
K -->|ほぼアクセスなし| N[Glacier Deep Archive]ライフサイクル管理の基本
S3ライフサイクル管理を使用すると、オブジェクトのライフサイクル全体を通じて、ストレージクラスの移行やオブジェクトの削除を自動化できます。
ライフサイクルルールでできること
ライフサイクルルールでは、以下の2種類のアクションを定義できます。
移行アクション(Transition Actions)
オブジェクトを別のストレージクラスに移行します。例えば、作成から30日後にS3 Standard-IAに移行し、90日後にGlacierに移行するといった設定が可能です。
有効期限アクション(Expiration Actions)
オブジェクトを削除します。一定期間経過後に自動的にオブジェクトを削除したり、バージョニング有効時に古いバージョンを削除したりできます。
graph LR
subgraph "ライフサイクル例"
direction LR
A[オブジェクト作成] -->|0日| B[S3 Standard]
B -->|30日後| C[S3 Standard-IA]
C -->|90日後| D[Glacier Flexible Retrieval]
D -->|365日後| E[削除]
endライフサイクルルールの構成要素
ライフサイクルルールは以下の要素で構成されます。
| 要素 | 説明 |
|---|---|
| ルール名 | ルールを識別するための名前 |
| ステータス | ルールの有効/無効 |
| フィルター | ルールを適用するオブジェクトの条件(プレフィックス、タグ等) |
| 移行アクション | ストレージクラスの移行設定 |
| 有効期限アクション | オブジェクトの削除設定 |
ストレージクラス移行の制約
ストレージクラス間の移行には、いくつかの制約があります。
graph TD
S3S[S3 Standard] --> INT[Intelligent-Tiering]
S3S --> SIA[S3 Standard-IA]
S3S --> OIA[S3 One Zone-IA]
S3S --> GIR[Glacier Instant Retrieval]
S3S --> GFR[Glacier Flexible Retrieval]
S3S --> GDA[Glacier Deep Archive]
INT --> SIA
INT --> OIA
INT --> GIR
INT --> GFR
INT --> GDA
SIA --> OIA
SIA --> GIR
SIA --> GFR
SIA --> GDA
OIA --> GFR
OIA --> GDA
GIR --> GFR
GIR --> GDA
GFR --> GDA主な制約は以下の通りです。
- S3 Express One Zoneへはライフサイクルで移行できない
- より高コストのストレージクラスへは移行できない(例:Glacier → S3 Standard)
- One Zone-IAからGlacier Instant Retrievalへは移行できない
ライフサイクルルールの設定
マネジメントコンソールでの設定
マネジメントコンソールからライフサイクルルールを設定する手順は以下の通りです。
- S3コンソールでバケットを選択
- 「管理」タブを選択
- 「ライフサイクルルール」セクションで「ライフサイクルルールの作成」をクリック
- ルール名、フィルター、アクションを設定
AWS CLIでの設定
AWS CLIを使用してライフサイクルルールを設定する場合、JSON形式の設定ファイルを作成します。
|
|
この設定ファイルを使用してライフサイクルルールを適用します。
|
|
フィルターの種類
ライフサイクルルールでは、以下の条件でオブジェクトをフィルタリングできます。
| フィルター | 説明 | 例 |
|---|---|---|
| プレフィックス | キーの先頭文字列で絞り込み | logs/、backup/ |
| タグ | オブジェクトタグで絞り込み | archive=true |
| オブジェクトサイズ | サイズ範囲で絞り込み | 128KB以上 |
フィルターを組み合わせることも可能です。
|
|
バージョニングとライフサイクル管理
バージョニングが有効なバケットでは、現行バージョンと非現行バージョン(旧バージョン)に対して、それぞれ異なるライフサイクルアクションを設定できます。
非現行バージョンの管理
非現行バージョンに対するライフサイクルルールの設定例です。
|
|
この設定では、非現行バージョンになってから30日後にS3 Standard-IAに移行し、60日後にGlacierに移行、365日後に削除します。
削除マーカーの自動削除
バージョニングが有効なバケットでオブジェクトを削除すると、削除マーカーが作成されます。期限切れの削除マーカー(対応するバージョンが存在しない削除マーカー)を自動的に削除できます。
|
|
未完了マルチパートアップロードの削除
大きなファイルをアップロードする際、マルチパートアップロードが使用されます。アップロードが中断された場合、未完了のマルチパートアップロードがバケットに残り、ストレージコストが発生します。
ライフサイクルルールで未完了のマルチパートアップロードを自動的に削除できます。
|
|
この設定により、開始から7日以上経過した未完了のマルチパートアップロードが自動的に中止され、アップロードされたパーツが削除されます。
ライフサイクルルールの実行タイミング
ライフサイクルルールは非同期で実行され、以下の点に注意が必要です。
- ライフサイクルルールは1日1回実行される
- 移行日や有効期限は翌日のUTC午前0時に丸められる
- 大量のオブジェクトがある場合、すべての処理が完了するまで時間がかかることがある
- 移行・削除のタイミングが正確に指定日時にならない場合がある
ただし、課金については条件を満たした時点から変更されます。たとえば、移行アクションの条件を満たした時点で、実際の移行が完了していなくても移行先のストレージクラスの料金が適用されます。
コスト最適化のベストプラクティス
S3のストレージコストを最適化するためのベストプラクティスを紹介します。
S3ストレージクラス分析の活用
S3ストレージクラス分析を使用して、オブジェクトのアクセスパターンを分析できます。この分析結果を基に、最適なライフサイクルルールを設計します。
ストレージクラス分析では、以下の情報が得られます。
- オブジェクトへのアクセス頻度
- 取り出しデータ量
- IAやGlacierへの移行による推定コスト削減額
推奨されるライフサイクル設定パターン
一般的なユースケースに対する推奨設定パターンです。
ログファイル
graph LR
A[作成] -->|30日| B[S3 Standard-IA]
B -->|90日| C[Glacier Flexible Retrieval]
C -->|1年| D[削除]バックアップデータ
graph LR
A[作成] -->|即時| B[S3 Standard-IA]
B -->|30日| C[Glacier Deep Archive]
C -->|7年| D[削除]アクセスパターン不明のデータ
graph LR
A[作成] -->|即時| B[Intelligent-Tiering<br/>アーカイブ層有効化]コスト試算の考慮点
ストレージクラスを選択する際は、以下のコストを総合的に考慮します。
| コスト項目 | 説明 |
|---|---|
| ストレージ料金 | GB/月あたりの保管コスト |
| リクエスト料金 | PUT、GET等のAPIリクエストコスト |
| 取り出し料金 | データ取り出し時のGBあたりコスト |
| 最小保管期間料金 | 最小保管期間前に削除した場合の追加コスト |
| 移行料金 | ストレージクラス移行時のリクエストコスト |
まとめ
S3のストレージクラスとライフサイクル管理について解説しました。重要なポイントは以下の通りです。
- ストレージクラスの選択: データのアクセス頻度、取り出し時間の要件、コストを考慮して適切なストレージクラスを選択する
- Intelligent-Tieringの活用: アクセスパターンが不明または変化するデータには、自動的にコストを最適化するIntelligent-Tieringが有効
- ライフサイクルルールの自動化: 手動でのストレージクラス移行は非効率であり、ライフサイクルルールで自動化することでコスト最適化と運用負荷軽減を両立
- バージョニングとの連携: バージョニングが有効なバケットでは、非現行バージョンに対するライフサイクルルールも重要
- 定期的な見直し: S3ストレージクラス分析を活用し、実際のアクセスパターンに基づいてライフサイクルルールを定期的に見直す
適切なストレージクラスとライフサイクル管理を組み合わせることで、データの可用性を維持しながらストレージコストを大幅に削減できます。