Amazon Web Services ブログ

Amazon S3 Storage Lensを使ってストレージコストを下げる5つの方法

このブログはMark Kalus (Principal Product Manager with Amazon S3)とLee Kear(Storage Specialist Solutions Architect specializing in S3)によって執筆された内容を⽇本語化したものです。原⽂はこちらを参照して下さい。

Amazon S3のバケット数が増え、数十から数百のアカウントにまたがっている場合、増大するストレージの管理とコスト効率の改善ができるツールをお探しではないでしょうか。S3 Storage Lensは、S3コンソールに組み込まれた分析機能で、オブジェクトストレージの使用状況やアクティビティの傾向を組織全体で可視化し、コスト削減の機会を特定するのに役立ちます。S3 Storage Lensは、すべてのS3アカウントで無料でご利用いただけます。また、アドバンスドメトリクスにアップグレードすることで、追加のメトリクス、インサイト、データ保持期間の延長を有効にできます。

このブログを読まれた方は、S3 Storage Lensを使って典型的なコスト削減の機会を特定する方法と、そのコスト削減を実現するための変更を適用する方法について、基本的な理解を得られるかと思います。

  1. 把握していない大容量のバケットを特定する

ストレージコストを管理するための最初のステップは、バケットごとの使用状況を詳細に把握することです。S3 Storage Lensを使えば、アカウント内のすべてのバケットを一元的に把握することができます。AWS Organization単位のダッシュボードを構成して、すべてのアカウントのすべてのバケットを確認することもできます。S3 Storage Lensを使うと、すべてのバケットを簡単に可視化することができ、予想以上に多くのオブジェクトがあるバケットなど、思いがけない発見があるかもしれません。

これらのバケットを発見する一つの方法は、S3 Storage Lensダッシュボードの概要タブのトップバケットセクションにスクロールダウンして、大容量バケットのランキングを見ることです。ダッシュボードでは、次のスクリーンショットに示すように、選択した日付のTotal storageメトリックでバケットを並べています。

また、表示するバケットの数を調整したり(最大25個)、ソート順を切り替えて小容量のバケットを表示したり、他の29以上の指標でランキングを調整したりすることができます。また、このビューでは、14日間のトレンド(上級レベルにアップグレードした場合は30日間のトレンド)を可視化する小さなグラフに加えて、前日や前週からの変化率も表示されます。

ここから、ダッシュボードのBucketsタブに進むと、バケットに関するより詳細な情報を得ることができます。例えば、次の図では、あるバケットがわずか30日間で10GBから15GBへ、他のバケットに比べて大幅に増加していることがわかります。

他のバケットよりもデータの増加が多いバケットを見つけたら、S3 Storage Lensでそのバケットを掘り下げて、平均オブジェクトサイズや最大のプレフィックスなど、より詳細な情報を収集することができます。最後に、Amazon S3コンソール内でバケットにナビゲートして、関連するワークロードを理解し、アカウント番号に基づいてバケットの所有者を特定することができます。そして、バケットの所有者から、この増加が予想されたものなのか、それとも予想外の増加なのかを聞き出し、適切な監視と管理下に置くことができます。

  1. 不完全なマルチパートアップロードバイトの発見と排除

マルチパートアップロード機能は、非常に大きなオブジェクト(100MB以上)をアップロードする場合に便利な機能です。1つのオブジェクトを複数のパートに分けてアップロードすることで、スループットの向上やネットワークの問題を改善できます。しかし、マルチパートのアップロード処理を完了しない場合、アップロード処理の完了を選択するか、削除するための特定のアクションを取るまで、不完全なパーツがバケットに残り(使用できない状態で)、ストレージコストが発生します。

S3 Storage Lensでは、お客様のアカウント、またはAWS Organization全体での、不完全なマルチパートのアップロードバイト数を確認することができます。この指標(総バイト数に対する割合)は、overviewタブの上部にあるsnapshotセクション内のCost efficiencyタブで確認できます(下図参照)。

また、S3 Storage Lensダッシュボードの他のチャートで、不完全なマルチパートアップロードバイトをメトリックとして選択することができます。そうすることで、不完全なマルチパートアップロードバイトがストレージに与える影響をさらに評価することができます。例えば、全体的な増加傾向への影響を評価したり、不完全なマルチパートアップロードバイトが蓄積されている特定のバケットを特定したりすることができます。

さらに、不完全なマルチパートのアップロードバイトを、指定した日数後にバケットから消去するライフサイクルポリシーを作成することで、対策を講じることができます。

  1. S3ストレージクラスの利用拡大

ストレージコスト削減を実現する方法として、S3のストレージクラスによってアクセス頻度や必要なパフォーマンスに応じてストレージコストを最適化することが挙げられます。現在、Amazon S3には7つのストレージクラスが用意されており、幅広いアクセス頻度とそれに応じた料金をサポートしています。その内容は以下の通りです。

  • S3 Standard、アクセス頻度の高いデータを保存する汎用的なストレージ
  • S3 Intelligent-Tiering、アクセスパターンが不明または変化するデータの保存
  • S3標準-低頻度アクセス (S3標準-IA)とS3 1ゾーン-低頻度アクセス(S3 1ゾーン-IA)、長期保存が必要でアクセス頻度の低いデータの保存
  • Amazon S3 Glacier(S3 Glacier)とAmazon S3 Glacier Deep Archive (S3 Glacier Deep Archive)、長期的なアーカイブやデジタル保存

現在、S3のストレージクラスをどのように使用しているのか分からない場合、S3 Storage Lensで簡単に調べることができます。overviewタブから、下にスクロールしてStorage class distributionの図を見ると、次のように表示されます。

もし、すべての、あるいはほぼすべてのストレージ容量がS3 Standardストレージクラスと表示されているとしたら、それはS3ストレージクラスを有効に利用していないことを意味します。このような場合、2つのコスト最適化デザインパターンのいずれかを利用することができます。1つ目は、未知のアクセスパターンや変化するアクセスパターンに最適なS3 Intelligent-Tieringストレージクラスを選択することで、コスト最適化を自動化することができます。2つ目は、S3のライフサイクルポリシーを設定することで、時間の経過とともにアクセス頻度が低下したデータを、よりコスト効率の高いストレージクラスに移行することで、ストレージコストを削減することができます。具体的な削減効果の詳細については、S3の料金ページをご確認ください。また、オブジェクトごとの移行やS3 Glacierで追加で発生するコストにもご注意ください。

その後、S3 Storage Lensで分析を続けると、ストレージクラスの使用状況をより深く調べることができ、特定のリージョンやバケット(Advancedレベルにアップグレードしている場合はプレフィックス)のストレージクラスの分布を掘り下げて見ることができます。ストレージクラスの利用が最適に設定されていないバケットのサブセットがあるのはよくあることで、S3 Storage Lensは、次のアクションに移る前にこれらのバケットをスクリーニングするのに有効なツールです。

  1. 保持している過去のバージョン数を減らす

Amazon S3バージョニングを使用すると、同じオブジェクトの複数のバージョンを保持することができ、誤って削除したり上書きしたりした場合に、データを迅速に回復するために使用することができます。バージョニングは、過去のバージョンを大量に蓄積し、それらを管理するために必要なライフサイクルポリシーを導入しない場合には、コスト面での影響があります。

過去のバージョンの蓄積に問題があるかどうかを確認するには、S3 Storage Lensを開き、概要タブのSnapshotセクションにあるCost efficiencyタブに移動します。ここには% non-current version bytesという指標があり、これは選択した日付の総バイト数(ダッシュボードのスコープ内)のうち、non-current versionに起因するものの割合を表しています。

経験則上、アカウントレベルで % non-current version bytes がストレージの 10% 以上を占めている場合は、バージョンの保存数が多すぎることを示しているかもしれません。また、この指標はtop bucketsセクションで見ることができ、ここに示すように、大量の過去のバージョンを蓄積している特定のバケットを識別することができます。

さらなる注意が必要なバケットを特定して、S3コンソール内でバケットにナビゲートし、ライフサイクルポリシーを有効にして、指定した日数後に過去のバージョンを失効させることができます。また、過去のバージョンがS3 Glacierに移行するように設定することで、データを保持しながらコストを削減することも可能です。

  1. Coldになったバケットを発掘

バケットがColdになった、つまりバケット内のストレージがアクセスされなくなった(またはほとんどアクセスされなくなった)場合は、関連するワークロードが使用されなくなったことを示している場合が多いです。S3 Storage Lensのアドバンスドメトリクスを有効にしていれば、アクティビティメトリクスにアクセスして、バケットがどれだけHot(またはcold)になっているかを把握することができます。GETリクエストやダウンロードバイトなどのメトリクスは、毎日のバケットへのアクセス頻度を示しています。このデータを数ヶ月に渡ってトレンド解析することで、アクセスパターンの一貫性を把握したり、全くアクセスされなくなったバケットを発見することができます。Download bytes / Total storageで計算される% retrieval rateは、毎日アクセスされるバケット内のストレージの割合を把握するのに便利な指標です。ダウンロードバイトは、同じオブジェクトが1日のうちに複数回ダウンロードされた場合、重複して表示されることに注意してください。

S3 Storage Lensでは、ダッシュボードのバケットタブにあるバブル分析チャートが面白い表示項目の一つです。ここでは、指標として% retrieval rateを選択することができ、X軸、Y軸、バブルの大きさ、の3つの指標を使って、バケットを多次元でプロットすることができます(下図)。

Total storage% retrieval rate、とAvg. object size を選択し、retrieval rate がゼロ(またはゼロに近い)で、相対的にストレージサイズが大きいバケットに焦点を当てると、coldになったバケットや、ストレージコストが高くなっている可能性のあるバケットを見つけることができます。ここから、組織内のバケットの所有者を特定し、ワークロードの目的を確認し、ストレージがまだ必要かどうかを調べることができます。もし不要であれば、ライフサイクルの有効期限ポリシーを設定したり、Amazon S3 Glacierでデータをアーカイブしたりすることで、コストを削減することができます。そして、今後もcoldバケットの問題を回避するために、このブログ内で紹介した推奨デザインパターンの1つを適用して、S3ライフサイクルポリシーを使用してデータを自動的に移行したり、S3 Intelligent-Tieringで自動アーカイブを有効にすることができます。

まとめ

このブログでは、S3 Storage Lensの情報を活用してコスト効率を高める5つの方法を紹介しました。ここで紹介しているテクニックは、すぐにコスト削減につながります。さらに、S3 Storage Lensを継続的に使用することで、ストレージが長期的に増加しても、これらのコスト効率を維持またはさらに拡大するために必要な可視性を提供することができます。

これらの5つのアイデアに加えて、S3 Storage Lensの情報を応用して、ストレージのコスト効率を高めたり、データ保護のベストプラクティスを実施したりする方法は数多くありますので、今後のブログ投稿にご期待ください。また、S3 Storage Lensの使用方法については、お客様担当のアカウントチームまたはAmazon S3サポートにお問い合わせください。

Amazon S3 Storage Lensを使ってストレージコストを削減する方法について、このブログを読んでいただきありがとうございました。