AWS 請求書において、Amazon S3 の料金が想定外に高くなっています。Amazon S3 のコストを削減する方法を教えてください。

最終更新日: 2020 年 5 月 28 日

AWS 請求書で、Amazon Simple Storage Service (Amazon S3) の使用料金が予想よりも高くなっています。Amazon S3 のコストを削減する方法を教えてください。

簡単な説明

Amazon S3 の料金は、ストレージ、リクエストとデータ取り出し、データ転送 (S3 Transfer Acceleration の使用を含む) 、およびデータ管理に基き発生します。Amazon S3 の料金が削減可能な要素を特定するベストプラクティスは、まず Amazon S3 の現在の使用状況と請求内容、およびコストが発生している理由を理解することです。

Amazon S3 での課金理由を明らかにした後は、次の方法により、コストを確認し削減を試みることができます。

  • 不完全なマルチパートアップロードをクリーンアップする
  • 不要となった古いバージョンのオブジェクトを削除する
  • ストレージクラスの移行コストを確認する
  • データ取得にかかるコストを確認する
  • バケットに送られるリクエストを追跡する
  • バケットサイズの変化状況を確認する
  • 個々のバケットのコストを確認する
  • 使用量と料金の関係を理解する

解決方法

不完全なマルチパートアップロードをクリーンアップする

マルチパートアップロードの開始後は、それが完了または中止するまで、アップロード済みのファイルのすべてのパートが Amazon S3 により保持されます。マルチパートアップロードが正常に完了しなかった場合でも、デフォルトでは、Amazon S3 はアップロードされたパートを保管し続けます。つまり、このアップロードされたパートに対し、トレージの使用料が課金されることになります。

AWS コマンドラインインターフェイス (AWS CLI) を使用してマルチパートアップロードを中止 (abort-multipart-upload) した場合には、オペレーションは未完了のアップロード済みパートを削除します。ただし、Amazon S3 のマルチパートアップロード API を利用する他のツールを使っていると、アップロードが完了したパートとは別に、不完全なマルチパートアップロードが残る可能性があります。

不完了のマルチパートアップロードで残ったパートにかかるストレージ料金を回避するには、ライフサイクルポリシーを作成し、特定の日数が経過した不完了のマルチパートアップロードをクリーンアップします。

もしくは、Amazon S3 API 呼び出しを使用してマルチパートアップロードを一覧表示した上で、失敗している、あるいはキャンセルしたいマルチパートアップロードを中止することもできます。

不要となった古いバージョンのオブジェクトを削除する

警告: 必要のないオブジェクト、またはオブジェクトバージョンのみを削除するようにしてください。Amazon S3 では、バケットから削除したデータを復元することはできません。

バケットで バージョニング を有効にしている場合、各オブジェクトには複数のバージョンを含めることができます。各オブジェクトバージョンは、それぞれストレージコストに影響を与えます。

各オブジェクトのバージョンは、Amazon S3 コンソールを使用するか、ListObjectVersions API 呼び出しを実行することでを確認できます。その上で、不要になった オブジェクトバージョンを削除します。

注: バージョニング対応のバケットでオブジェクトバージョンを完全に削除するには、そのオブジェクトのバージョン ID を指定する必要があります。バージョニング対応のバケット内にあるオブジェクトで、単に削除リクエストを実行すると、Amazon S3 はオブジェクトに 削除マーカーを追加します。この削除マーカーがオブジェクトの最新バージョンになり、実際のオブジェクトは以前のバージョンになります。この場合でも、オブジェクトとそのバージョンは実際には消去されません。

ライフサイクルルールを使用して、オブジェクトの現在のバージョンと以前のバージョンを管理することもできます。ただし、Amazon S3 における永続的な削除は元に戻すことができないため、ライフサイクルルールのパラメータを慎重に確認する必要があります。

ストレージクラスの移行コストを確認する

一般的には、継続的なストレージコストは、オブジェクトを他のストレージクラスに移行することで削減します。ただし、オブジェクトを 1 つのストレージクラス から別のストレージクラスへ移行する場合にも、コストが発生する可能性があることを知っておくことが重要です。

例えば、Amazon S3 標準ストレージクラスから Amazon S3 標準 – 低頻度アクセス (S3 標準 - IA) ストレージクラスに移行するオブジェクトについて、1,000 回のライフサイクル移行リクエストごとに 0.01 USD が課金されます。また、任意のストレージクラスから Amazon Simple Storage Service Glacier (Amazon S3 Glacier) ストレージクラスへのオブジェクト移行では、1,000 回のライフサイクル移行リクエストごとに 0.05 USD が課金されます。料金および詳細な情報については「Amazon S3 の料金」をご参照ください。

数百万のオブジェクトを含むバケット全体を、別のストレージクラスに移行するようなライフサイクル設定ルールを作成した場合に、Amazon S3 の料金が増加することがあります。料金の増加がライフサイクルルールによるものかどうかを判断するには、AWS CloudTrail イベント履歴を確認するか、Amazon S3 サーバーアクセスログPutBucketLifecycleConfiguration 呼び出しを確認して、ルールが適用された日時を特定します。

データ取得にかかるコストを確認する

S3 標準 – IA、S3 1 ゾーン – IA、Amazon S3 Glacier、または Amazon S3 Glacier Deep Archive ストレージクラスに保存されたオブジェクトでは、データ取り出しに対しコストが発生します。

例えば、Amazon S3 Glacier ストレージクラスから、全体でデータ容量が 100 TB になる 1,500 万個のオブジェクトを取り出す場合の合計コストは、次のように選択した取り出しオプションに基づいて決まります。

一括取り出しの場合:

  • 取り出しリクエスト料金は 15,000,000 / 1000 x 0.025 USD = 375 USD です。
  • 取り出し料金は 100,000 x 0.0025 USD = 250 USD です。
  • 合計コストは 625 USDになります。

標準取り出しの場合 :

  • 取り出しリクエスト料金は 15,000,000 / 1000 x 0.05 USD = 750 USD です。
  • 取り出し料金は 100,000 x 0.01 USD = 1,000 USD です。
  • 合計コストは 1750 USDになります。

迅速取り出しの場合:

  • 取り出しリクエスト料金は 15,000,000 / 1000 x 10 USD = 150,000 USD です。
  • 取り出し料金は 100,000 x 0.03 USD = 3,000 USD です。
  • 合計コストは 153,000 USDになります。

バケットに送られるリクエストを追跡する

バケットへのリクエストは、次のいずれかの方法でモニタリングできます。

バケットに対して行われたリクエストを把握した後は、リクエストで生じるコストの削減策を講じることが可能になります。たとえば、バケットポリシーまたは AWS Identity and Access Management (IAM) ポリシーを使用して、バケットへの不正アクセスを防止したり、パブリックアクセスを制限したりできます。あるいは、バケットと同じ AWS リージョン内の Amazon Virtual Private Cloud (Amazon VPC) にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用してバケットにアクセスすることで、データ転送送信 OUT 料金のコストを削減できます。

バケットサイズの変化状況を確認する

現在のバケットのサイズと前月のサイズを比較することで、ストレージコストを分離して評価できます。バケットのストレージサイズは、Amazon S3 コンソールで確認できます。

  1. Amazon S3 コンソールでバケットを表示します。
  2. [管理] タブを開きます。
  3. [メトリクス] をクリックします。

AWS CLI または CloudWatch コンソールを使用して、バケットのストレージサイズを確認することもできます。

個々のバケットのコストを確認する

特定のバケットが原因でコストが高くなったのかを知るには、各バケットでコスト配分タグをアクティブ化した上で、AWS Cost Explorer を使用して内容を確認します

使用量と料金の関係を理解する

使用状況レポートにはストレージ使用量がバイト時間単位で示され、請求レポートでは、ストレージ使用量が GB 月単位で記録されています。したがって、ストレージ使用量とストレージ料金との関係性を理解するには、バイト時間を GB 月に変換する必要があります。変換例については「使用バイト時間を、課金 GB 月に変換する」をご参照ください。

Amazon S3 使用状況レポートは、請求情報とコスト管理ダッシュボードからダウンロードできます。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合