S3 ストレージクラス比較 — Standard から Glacier Deep Archive まで

読了 5分

S3 の料金削減で最初のレバーはストレージクラスです。Standard と Deep Archive では保存単価が 23 倍違うので、データをどのクラスに置くかがバケット料金の大半を決めます。ところが安いクラスには取り出し料金と最低保存期間という逆方向の条件が付いていて、やみくもに移すとかえって高くつきます。結論を先に書くと、アクセスパターンが分かっているデータはライフサイクルルールで段階的に配置し、分からないデータは Intelligent-Tiering に任せます。 S3 の基本的な使い方は AWS 中級 #3 で扱いました。料金は us-east-1 基準です。

全体マップ — 単価と条件を一緒に見ます #

クラス保存(GB・月)取り出し(GB あたり)最低保存アクセス速度
Standard約 $0.023なしなし即時
Intelligent-Tiering階層ごとに自動なしなし即時
Standard-IA約 $0.0125約 $0.0130 日即時
One Zone-IA約 $0.01約 $0.0130 日即時
Glacier Instant Retrieval約 $0.004約 $0.0390 日即時
Glacier Flexible Retrieval約 $0.0036無料〜約 $0.0390 日数分〜数時間
Glacier Deep Archive約 $0.00099約 $0.0025〜0.02180 日12〜48 時間

読み方は一つです。表の下に行くほど保存は安くなり、取り出す作業は高くなるか遅くなります。 つまり選択基準は「どれだけ長く置くか」ではなく「どれだけ頻繁に、どれだけ急いで取り出すか」です。

Standard-IA の三つの落とし穴 #

Standard-IA は保存単価が Standard の半分ほどなので、最初に目に入る削減対象です。ただし三つの条件を一緒に計算する必要があります。

  • 取り出し料金: 取り出すときに GB あたり約 $0.01 が付きます。毎月データ全体のかなりの部分を読み直すパターンだと、節約した保存料を取り出し料金が上回ります。境界はおよそ月 1 回未満のアクセスです。
  • 最低保存 30 日: 30 日より前に削除や移動をしても 30 日分が請求されます。寿命の短い一時ファイルを IA に送るライフサイクルルールは損になります。
  • 最低課金サイズ 128KB: 128KB 未満のオブジェクトも 128KB として計算されます。小さいオブジェクトが数百万個あるバケットでは、IA 移行の実際の削減は表よりずっと小さくなります。

One Zone-IA にはさらに単一 AZ の条件が加わります。AZ 障害でデータが失われる可能性があるので、再生成できる派生データ(サムネイル、キャッシュ、再ビルド可能な成果物)にだけ使います。

Glacier の 3 クラス — 名前は同じでも性格が違います #

  • Glacier Instant Retrieval: 名前に反してアクセスはミリ秒単位の即時です。保存は IA の 3 分の 1 なのに、取り出しは GB あたり約 $0.03 と IA の 3 倍です。四半期に一度くらい取り出すバックアップ、古いログ、元メディアが対象です。
  • Glacier Flexible Retrieval: 即時アクセスはできず、復元リクエストを経ます。標準の復元が数時間、バルク復元は半日ほどかかる代わりに、取り出しを無料にできます。「取り出すことはほぼないが、取り出すときに 1 日待てる」データ用です。
  • Glacier Deep Archive: GB・月あたり約 $0.00099 で最安です。復元は標準 12 時間、バルク 48 時間で、最低保存が 180 日です。規制対応の保管(監査ログ、医療・金融記録)のように、実際には取り出さないデータの終着点です。

三つとも最低課金サイズ(128KB)と最低保存(90 日または 180 日)があるので、小さくて寿命の短いオブジェクトは送りません。

Intelligent-Tiering — パターンが不明ならこれが正解です #

Intelligent-Tiering はオブジェクトごとのアクセスを監視し、30 日アクセスがなければ IA 単価の階層へ、90 日なければ Glacier Instant 単価の階層へ自動で下げ、再びアクセスがあれば即座に元の階層へ戻します。重要な特徴は取り出し料金と階層移動の料金がないことです。IA の落とし穴の一つ目が丸ごと消えます。

対価は監視料金(1,000 オブジェクトあたり月 $0.0025)です。だから合わない条件も明確です。オブジェクトが小さく数が多いと監視料金が削減を侵食し、128KB 未満のオブジェクトはそもそも監視対象から外れて常に Standard 単価のままです。逆に数百 KB 以上のオブジェクトが数万〜数百万個あり、どれがいつ読まれるか分からないバケット(ユーザーアップロード、データレイク)なら、分析なしで有効にするだけで料金が下がります。パターンが分かっているデータまで Intelligent-Tiering に置くのは監視料金の無駄なので、その場合はライフサイクルルールが正解です。

ライフサイクルの実務 — 移行にも料金が付きます #

アクセスパターンが分かっているデータの定石は、ライフサイクルの階段です。たとえばログなら Standard 30 日 → Standard-IA 90 日 → Glacier Flexible 1 年 → 失効という形です。二つを計算に入れます。

  • 移行リクエスト料金: クラス移動は件数課金で、1,000 件あたり $0.01〜0.05 が付きます。GB 単価の削減はオブジェクトサイズに比例する一方、移行料金は個数に比例するので、小さいオブジェクトを数百万個移すと、移行料金が数か月分の削減を先に食いつぶします。 こうしたバケットは移す前にオブジェクトをまとめてサイズを大きくする(ログの集約)か、失効だけ設定して移行はあきらめるほうが安くつきます。
  • 判断の根拠は実測: どのプレフィックスがどれだけ読まれているかは Storage Class Analysis や Storage Lens で確認し、ルールはプレフィックス単位で設定します。バケット全体に一括ルールを掛けて、頻繁に読むデータまで IA に下がってしまうのがよくある失敗パターンです。

移行されずに残っている古いデータ、未完了のマルチパートアップロード、古いバージョンの整理は 常時点検リスト と重なる作業です。

まとめ #

  • クラス選択の基準は保存期間ではなくアクセスの頻度と緊急度です。保存が安くなるほど、取り出しは高くなるか遅くなります。
  • Standard-IA は取り出し料金、最低保存 30 日、最低課金 128KB の三つの条件を一緒に計算します。月 1 回以上読むデータは Standard に置きます。
  • Glacier は三つに分かれます。即時アクセスが必要なら Instant Retrieval、半日待てるなら Flexible、実際には取り出さない規制対応の保管は Deep Archive です。
  • アクセスパターンが不明なら Intelligent-Tiering が基本です。取り出し料金なしで自動階層移動を行い、対価はオブジェクトあたりの監視料金です。
  • ライフサイクル移行は個数比例の料金が付きます。小さいオブジェクトが大量のバケットは、移行より集約と失効が先です。
X