Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS S3のInfrequent Accessへ、コスト超過なく移行する方法

By Avi KeinanAug 14, 20243 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

DoiT Internationalでお客様向けに行っているクラウドアドバイザリーの現場では、コスト削減のつもりで実施した施策が、かえってS3のストレージコストを押し上げてしまう極端なケースに出会うことがあります。本記事では、そうした事態を避けるためのポイントを解説します。

S3バケットにファイル(オブジェクト)を保存する際に選択できるストレージクラスは、Standard(デフォルト)、Infrequent Access(Standard-IAとも呼ばれます)、Intelligent-TieringGlacierS3 Outpostsの5種類です。

ストレージクラスはアップロード時にも、後からでも設定できます。よく使われる手法のひとつが、バケットにライフサイクルルールを設定し、オブジェクトのライフサイクルに応じてAmazon S3に実行させたい操作(例:ファイル作成から30日経過後にStandardからInfrequent Accessへクラスを変更する)を定義する方法です。

Infrequent Accessは、Standardよりも安価にファイルを保管できるストレージクラスです。ダウンロード速度、耐久性、レイテンシはStandardと同等ですが、ダウンロード時のコストはStandardより高くなります。その名のとおり、アクセス頻度の低いファイルの保管に適したクラスです。

ライフサイクルルールでファイルをStandardからIntelligent tierへ移行した例。移行コストは2,000ドル。移行から5か月後にはストレージ費用が移行前を下回ります。

S3コストでよくある落とし穴

バケットのストレージコストを押し上げる代表的な要因は、次の2つです。

  1. ストレージクラスの切り替えに費用がかかることは、あまり知られていません。AWSはStandardからInfrequent Accessへの移行に対し、1,000リクエストあたり0.01ドルを課金します。
  2. 一部のS3ストレージクラスには最小ファイルサイズが設定されています。Infrequent Accessの場合、最小ファイルサイズは128Kbです。

S3の料金

S3ストレージクラスの仕様

その結果、S3バケットに数億件もの小さなファイルを保管しているお客様では、一度きりとはいえ高額な移行費用が発生するケースがあります。

バケット内のファイル数を確認するには

バケット内のファイル数とサイズを把握する方法は、次の2つです。

  1. ファイル単位 — S3 Inventoryを使うと、バケット内のファイル一覧、ファイルサイズ、ストレージクラスを記載したレポートを日次で生成できます。
  2. バケット単位 — CloudWatchメトリクスから、ファイル数とバケットサイズを確認できます。これらのメトリクスはS3コンソールの「Management」→「Metrics」からも参照可能です。

S3バケットのサイズ

S3バケット内のファイル数

ライフサイクルルールはいつ設定すべきか

まずは、S3バケットのサイズをファイル数で割り、(加重なしの)平均ファイルサイズを算出します。

たとえば、本記事のスクリーンショットで使用しているバケットは、サイズ22.1Tb、ファイル数630万件で、平均ファイルサイズは3.42Mbとなります。

Infrequent Accessへの切り替えは、一時的に高額なコスト負担を招く可能性があります。

ライフサイクル移行コストと費用対効果を試算する

この22.1Tbのバケットでライフサイクルルールを使い、ストレージクラスをInfrequent Accessへ変更した場合、630万件のファイル移行に対する一時的な移行費用は63ドル(6,300,000ファイル ÷ 1,000 × 0.01ドル)、その後のストレージコストは月額282.88ドルとなります。

上記の試算からわかるとおり、クラス間の移行は初月からコスト削減効果をもたらします

まとめ

AWS S3には多彩なストレージクラスが用意されており、適切に使い分けることで効率化とコスト削減を実現できます。