Amazon S3の基本とストレージクラス
Amazon S3のオブジェクトストレージの特徴、用途、ストレージクラスの選び方、S3 Glacierのアーカイブ階層、Lifecycleによる自動移行を整理します。
Amazon S3の役割と基本特性
Amazon Simple Storage Service(Amazon S3)は、データをオブジェクトとして保存するオブジェクトストレージサービスです。EBSのようにボリューム容量を先に割り当ててから使うのではなく、バケットにオブジェクトを保存します。保存容量を事前に予約する必要はなく、使用したストレージやリクエストなど、実際の利用状況に応じて料金が発生します。料金の対象や単価はストレージクラス、リージョン、操作の種類などによって変わるため、設計時には Amazon S3の料金ページで確認します。
S3は、アプリケーションのログやバックアップ、データレイク、静的Webコンテンツ、アーカイブなど幅広い用途に適しています。たとえば、画像変換サービスが処理前後の画像をオブジェクトとして保管したり、分析基盤が複数システムから届くイベントデータを長期保存したりできます。
S3は新規書き込みや上書き、削除に対する強い読み取り後書き込み整合性を提供します。これは耐久性や可用性とは別の性質です。耐久性は保存したデータを失いにくいこと、可用性は必要なときにサービスから利用できることを表します。高い耐久性があるからといって、アプリケーション全体の可用性や誤操作からの復旧が自動的に保証されるわけではありません。
バケット、オブジェクト、GlacierのVault
S3ではオブジェクトを格納するコンテナをバケットと呼びます。バケット内に保存されるデータ本体とメタデータのまとまりがオブジェクトです。バケット名やリージョン、アクセス権限、ライフサイクル設定などは、データの配置と管理を考えるときの基本要素になります。
「Vault(ボールト)」はS3バケットの別名ではありません。Vaultは、Amazon S3に用意されているS3 Glacierストレージクラスとは別の、ボールトを管理単位とするAmazon S3 Glacierサービスで使われる用語です。現在のS3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archiveは、通常のS3オブジェクトとしてバケットに保存するストレージクラスです。試験問題で「バケット」と「Vault」が出てきたら、S3のストレージクラスと、VaultベースのGlacierサービスを区別してください。
ストレージクラスを選ぶ観点
S3ではオブジェクトごとにストレージクラスを選択できます。クラスを比較するときは、保存単価だけで決めず、次の条件をまとめて確認します。
- アクセス頻度:頻繁に読み出すのか、まれにしか参照しないのか。
- 取り出しに許容できる時間:ミリ秒での取得が必要か、復元に分・時間をかけられるか。
- データ取得料金:低頻度・アーカイブ系の一部クラスでは、取得データ量に応じた料金が発生する。
- 最低保存期間:期間内に削除や別クラスへの移行を行うと、残存期間相当の料金が発生するクラスがある。
- 可用性とAZ障害への耐性:単一AZに保存するクラスか、複数AZにまたがる設計か。
- リクエストや監視の費用:クラス移行リクエストやIntelligent-Tieringの監視・自動化料金も考慮する。
よく使うストレージクラス
| ストレージクラス | 主なアクセスパターン | 取り出し | 耐久性・AZ構成の要点 | 最低保存期間など |
|---|---|---|---|---|
| S3 Standard | 頻繁にアクセスするデータ | ミリ秒 | 耐久性99.999999999%(イレブンナイン)、複数AZ。設計上の可用性99.99% | 最低保存期間なし。アップロード時にクラスを指定しなければ通常これが使われる |
| S3 Intelligent-Tiering | アクセスパターンが不明、または変化するデータ | 自動階層のうち3つはミリ秒。任意のアーカイブ階層は復元が必要 | 高い耐久性を備え、単一のストレージクラス内でアクセス階層を管理する。アクセス階層により可用性が異なる | 最低保存期間なし。128 KB未満のオブジェクトは自動階層化されずFrequent Accessに残り、監視・自動化料金も発生しない |
| S3 Standard-IA | 低頻度だが、必要時にはすぐ取得したいデータ | ミリ秒 | 耐久性99.999999999%、複数AZ。設計上の可用性99.9% | 最低30日。取得料金が発生し、128 KBの最小課金サイズがある |
| S3 One Zone-IA | 再作成可能な低頻度アクセスデータ | ミリ秒 | 耐久性99.999999999%、単一AZ。設計上の可用性99.5%で、AZ全体の障害に対する耐性が低い | 最低30日。取得料金が発生し、128 KBの最小課金サイズがある |
| S3 Glacier Instant Retrieval | 四半期に一度程度参照する長期アーカイブ | ミリ秒 | 耐久性99.999999999%、3つ以上のAZ。設計上の可用性99.9% | 最低90日。取得料金が発生し、128 KBの最小課金サイズがある |
| S3 Glacier Flexible Retrieval | 年に一度程度参照するアーカイブ | 復元後に利用。取得オプションにより分から時間 | 耐久性99.999999999%、3つ以上のAZ。復元後の設計上の可用性99.99% | 最低90日。取得料金が発生し、復元前のオブジェクトは直接読めない |
| S3 Glacier Deep Archive | 年に一度未満の参照が想定される長期保管 | 復元後に利用。時間単位の待ち時間を想定 | 耐久性99.999999999%、3つ以上のAZ。復元後の設計上の可用性99.99% | 最低180日。取得料金が発生し、復元前のオブジェクトは直接読めない |
上の用途頻度は選定の目安です。特に、耐久性の数値が同じでも可用性やAZ障害への耐性が同じとは限りません。たとえばOne Zone-IAは単一AZにデータを保存するため、AZ障害に対する回復性が必要なデータの第一候補にはなりません。Standard-IAもOne Zone-IAも、必要時にすぐ取得できる一方で、取得料金や最低保存期間を考慮します。
S3 Standard、Standard-IA、One Zone-IA、Glacier Instant Retrieval、Glacier Flexible Retrieval、Deep Archiveの耐久性は高く設計されていますが、クラス間で可用性、冗長化の範囲、読み出し方法、料金は異なります。S3のデータ耐久性だけでは、誤削除やアプリケーションの論理障害からの復旧要件を満たさない場合があります。必要に応じて、バージョニングやレプリケーション、バックアップ方針も別途設計します。
S3 Intelligent-Tieringの階層
Intelligent-Tieringは複数の別ストレージクラスを行き来する機能ではなく、S3 Intelligent-Tieringクラスの中でオブジェクト単位にアクセス階層を切り替える仕組みです。アクセス頻度が読めないデータの保存コストを、運用者が手動でクラス変更せず最適化したい場合に選択肢になります。
| アクセス階層 | 設定 | 移動の目安 | 取り出し方 |
|---|---|---|---|
| Frequent Access | 標準 | 保存直後、およびアクセスが継続している間 | ミリ秒でアクセス |
| Infrequent Access | 自動 | 30日連続でアクセスがない | ミリ秒でアクセス |
| Archive Instant Access | 自動 | 90日連続でアクセスがない | ミリ秒でアクセス |
| Archive Access | 任意で有効化 | 最低90日連続でアクセスがない場合。しきい値は要件に応じて設定 | 非同期の復元が必要。標準の復元は通常3〜5時間 |
| Deep Archive Access | 任意で有効化 | 最低180日連続でアクセスがない場合。しきい値は要件に応じて設定 | 非同期の復元が必要。標準の復元は通常12時間以内 |
Frequent、Infrequent、Archive Instant Accessの3階層は自動で利用されます。Archive AccessとDeep Archive Accessはアーカイブ機能を明示的に有効化した場合に使われる任意の階層です。アーカイブ階層に移動したオブジェクトを読むときは、先に復元リクエストを行います。Intelligent-Tieringではデータ取り出し料金はかかりませんが、オブジェクトの監視と自動階層化には月額料金がかかるため、アクセス状況やオブジェクトサイズを踏まえて採算を判断します。
Glacier系アーカイブの使い分け
Glacier系では、データにアクセスする頻度と、復元を待てる時間の組み合わせでクラスを選びます。
- Glacier Instant Retrieval:長期保存しつつ、たまに発生する参照にはミリ秒で応答したい場合に向きます。保存料金だけでなくデータ取得料金も考慮します。
- Glacier Flexible Retrieval:すぐに読めなくてもよいアーカイブ向けです。復元方法により所要時間と費用が変わります。復元後の一時コピーが利用可能になってからオブジェクトを読み出します。
- Glacier Deep Archive:アクセス頻度が最も低い長期保管に向き、保管コストを重視する代わりに復元に時間がかかります。
概ね、即時アクセスできるクラスほど保存料金が高くなり、低コストのアーカイブ階層ほど取得にかかる待ち時間や料金が大きくなります。削除・移行時に最低保存期間の条件を満たしているかも確認してください。料金の具体額はリージョンや時期で変わるため、設計時に公式の料金表を参照します。
S3 Lifecycleによるクラス移行と削除
S3 Lifecycleは、バケット内のオブジェクトにルールを適用し、経過日数などの条件に応じてストレージクラスを移行したり、不要になったオブジェクトを期限切れとして削除したりする機能です。たとえば、ビルド成果物を一定期間Standardで配信し、その後は参照頻度の低下に合わせてIA系やアーカイブ系へ移し、保管期限が過ぎたら削除する運用を自動化できます。
Lifecycleルールは、設定後にアップロードしたオブジェクトだけでなく、ルールの条件に一致する既存オブジェクトにも適用されます。移行や削除の実行には時間差があり得ますが、対象となる条件を満たした後の課金は、物理的な処理完了より先に移行先クラス等の条件へ切り替わる場合があります。Lifecycleによる移行リクエストにも費用がかかるため、小さなオブジェクトを大量に移行する場合などは、保存料の削減とリクエスト費用を合わせて評価します。
ただし、Lifecycleはすべてのクラス間で自由に移行できるわけではありません。AWSが定める対応経路に従う必要があり、たとえばStandardからIA系や各種Glacierクラスへ移行できますが、Glacier Flexible RetrievalからはDeep Archiveへの移行が基本的な次段階です。Intelligent-Tieringからの移行先も、元オブジェクトが現在どのアクセス階層にあるかによって異なります。また、既定では128 KB未満のオブジェクトはストレージクラス移行の対象になりません。小さなオブジェクトを含める場合はサイズフィルター等の設定を確認し、最低課金サイズやリクエスト料金も踏まえて移行の効果を見積もります。
保護機能との組み合わせ
S3にはバージョニング、暗号化、アクセス制御など、保存データを保護する機能があります。バージョニングを有効にすると同じキーへの更新履歴を保持し、誤操作後の復旧に役立ちます。MFA Deleteは、対応する重要なバージョン操作に追加のMFA確認を求めます。暗号化ではS3管理キーを使う方式やAWS KMSキーを使う方式を要件に応じて選択できます。
ストレージクラスの選択と、アクセス権限・暗号化・誤削除対策は別の設計軸です。具体的な設定や制約は、S3のバージョニング・ライフサイクル・レプリケーション、S3の暗号化、S3のアクセス制御で確認してください。
公式ドキュメント
重要ポイント
- ▸Amazon S3は容量を事前確保せずオブジェクトを保存し、利用量やリクエストなどに応じて課金される
- ▸バケットとオブジェクトはAmazon S3の基本単位であり、S3 GlacierストレージクラスのアーカイブもS3バケットに格納する
- ▸ストレージクラスごとにアクセス頻度、取り出し時間、取得料金、耐久性、可用性、最低保存期間が異なる
- ▸S3 Intelligent-Tieringは単一のストレージクラス内でアクセス階層を自動変更し、アーカイブ階層は任意で有効化する
- ▸S3 Lifecycleはクラス遷移や期限切れ削除を自動化できるが、遷移先やオブジェクトサイズに制約がある
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
この試験ドメイン内の次
Compute Optimizer →
AWS Compute Optimizer のベストプラクティス