S3は「使った分だけ課金される」便利なストレージですが、だからこそ、放置しているだけで課金が発生するという特性があります。
とくにアクセス頻度の低いデータを標準ストレージ(S3 Standard)で保存し続けている場合、本来なら不要なコストを積み上げてしまっているケースが少なくありません。
この記事では、アクセス頻度に応じてストレージクラスを自動で最適化する方法を紹介します。
ファイル単位で手作業による見直しを行うのではなく、AWSの仕組みを活用して「仕組みで節約」する方法に焦点を当てて解説していきます。
この記事はこんな人にオススメ!
- S3に古いバックアップやログを溜めたままにしている
- ストレージコストが年々増えているけれど、原因が分からない
- S3 Intelligent-TieringやGlacierを使ったことがない
背景:アクセスされないデータを「割高なストレージ」で保持していませんか?
S3のストレージは、同じ容量でもストレージクラスによって課金額が大きく異なります。
たとえば、S3 StandardとGlacier Deep Archiveでは、コストに20倍以上の差が出ることもあります。
にもかかわらず、「消さないけどめったに見返さないデータ」が大量にS3 Standardに残っているケースは珍しくありません。
しかし、こうしたデータの見直しを人手で一つひとつ行うのは非現実的です。
だからこそ、AWSが提供するライフサイクルルールやIntelligent-Tieringといった自動化の仕組みを活用することで、手間をかけずにコストを抑えることが可能になります。
検証:
今回は以下の3つの活用パターンを想定し、実際にどのように設定するかを検証しました。
想定パターン | アクション | 説明 |
パターン1 「ログの保存期間が4か月の要件とした場合、ライフサイクルによるログ管理の自動化」 | アップロードから30日後に S3 Standard-IA へ移行さらに90日後に削除 | 初期の閲覧ニーズをIAでカバーしつつ、長期保存は削除しコストを押さえる |
パターン2 「6か月前のDBバックアップや古いアプリバージョンのZIP」 | アップロードから180日後に S3 Glacier Deep Archive に直接移行 | 「まず見返さない」と割り切れるデータは一気に最安ストレージへ |
パターン3 「マーケティング用画像・動画、資料共有用PDFなど」 | S3アップロード時に Intelligent-Tiering を指定(別途ルール設定不要) | アクセス状況をAWSが自動判定してくれるため、最適化がラク。小ファイルが多い場合は若干割高になる可能性も |
パターン1
S3バケットの作成とファイルをアップロードは省略しました。
S3バケットの「管理」から新しい[ライフサイクルルール]を作成します。
では実際に作成してみましょう。
任意のライフサイクル名を命名します。ルールスコープは「このルールは、バケット内のすべてのオブジェクトに適用されます」をチェックします。
ライフサイクルルールのアクションを設定します。 5個のアクションを複数選択もできます。
今回は①30日後のクラス移行と②90日後の削除の2つのルールを作成したいので以下の2つにチェックを入れます。
💡現行バージョンと非現行バージョンの違い
S3ではバージョニング機能が提供されており、デフォルトは無効化されていますが、有効化することでアップロードしたオブジェクトのバージョニングがされるようになります。バージョニング機能を有効化していない場合は”現行バージョン”の方を選択しておきましょう。
チェックを入れた項目にそれぞれのアクションを実行する日数を入力する項目が現れます。今回は①30日後にS3 Standard-IAへ移行、②さらに90日後(アップロードから120日後)に削除、の2つのアクションを実行したいので以下のように入力します。
設定後、タイムラインの概要でどんなライフサイクルに設定されたのか確認できます。問題なければ[ルールの作成]を押下します。
パターン2
パターン①とライフサイクルの作成フローは同じです。
ただ、「DBのバックアップ」のみを対象にしたい場合は、事前に対象のものだけが入るようにバケットを分けておくか、プレフィックスやタグで分類しておく必要があります。
今回はプレフィックスで分類する場合をご紹介しておきます。
バケット内にフォルダを作成・分類しておきます。このフォルダ内のデータにのみライフサイクルルールが適用されるようにしてみましょう。
今回はルールスコープで「1つ以上のフィルターを使用してこのルールのスコープを制限する」を選択し、プレフィックスのところにフォルダ名(/も忘れずに!)を入れます。
180日後に直接Glacier Deep Archiveに入れたいので、以下のように入力します。これで「db-backup/」フォルダ下のオブジェクトにのみこのルールが適用されます。
パターン③
Intelligent-TieringはS3 ストレージクラスの一つで、アクセス頻度に応じて、オブジェクトのアクセス階層を移動することで、S3のコストを削減できるストレージクラスです。
特にアクセスパターンが変化するワークロードにおいて有効なものになっています。
設定はとても簡単で、以下のようにオブジェクトをアップロードする際のストレージクラスで「Intelligent-Tiering」を選択するだけです。
効果:最大90%のコスト削減も
今回は10TBの古いデータをStandardクラスから別クラスへ移した場合の削減効果を表にしてみました。
具体的な削減効果はストレージクラスとデータ量によりますが、目安は以下の通りです:
クラス名 | 料金(USD/GB/月・東京) | 年間コスト(1ドル150円換算) | 割引率(S3 Standard比) |
S3 Standard | 約0.025 | 約460,800円 | – |
S3 Standard-IA | 約0.013 | 約239,620円 | 約48%減 |
S3 Glacier | 約0.005 | 約92,160円 | 約80%減 |
S3 Glacier Deep Archive | 約0.002 | 約36,864円 | 約92%減 |
※年間コストは、「1GBあたりの月額料金×10TB(10,240GB)×1年間(12か月)」で算出しています
今回の例では、「S3 Standard」と「Glacier Deep Archive」では、年間で420,000円以上、割引率にして92%以上の差が出ることが分かります。つまり、「アクセスされないけど残しておきたいデータ」ほど、見直しによる削減余地が大きいのです。
注意点:安くなる反面、即時アクセスや削除には注意を
コストを削減できるからといって、すべてのデータを安価なストレージクラスに移行すればいい──というわけではありません。ストレージクラスにはそれぞれ特性があり、用途に合わない選択は、逆に業務の足かせになる可能性もあります。
- 取り出しに数時間かかる(Glacier系)
- 保存期間に下限あり(IA:30日、Glacier:90日は途中で削除しても、その期間分の料金はかかります)
- ファイルサイズが小さいとIntelligent-Tieringの効果が薄いことも
コストを減らすことばかりに気を取られず、用途に合わせて「使える状態を保ちつつ、安くする」ことが大切です。
まとめ:まずは“残っているだけで課金される”ものを見直そう
いかがでしたか?
「いつか使うかも」と残しているS3データ。
でも、“残す=Standardで課金し続ける”状態になっていないでしょうか?
ライフサイクルポリシーやIntelligent-Tieringを活用して“自動で賢く節約”する仕組みを整えてみましょう。
クラウドは仕組み化が命。S3の最適化も、今日からはじめられます。
以上、最後までお読みいただきありがとうございました!
SunnyPayなら?
SunnyPayのダッシュボード「SunnyView」では、利用状況をひと目で把握でき、見落とされがちな“ムダ”を可視化することが可能です。
さらに、SunnyCloudのコスト最適化チームが第三者の視点から「削除を検討すべきリソース」をリストアップし、不要な課金のリスクやその影響もあわせてご提示しています。
また、SunnyPayをご契約中のお客様には、AWSのご利用料金を常時5%割引でご提供しています。
コストの見える化・最適化・割引までを一貫して支援できるのが、SunnyPayの強みです。
