予想外に高い Amazon S3 のコストを削減する方法
AWS 請求書に記載されている Amazon Simple Storage Service (Amazon S3) の使用量が予想していたよりも多いので抑えたいと考えています。
簡単な説明
Amazon S3 の料金は、ストレージ、リクエストとデータ取り出し、データ転送 (S3 Transfer Acceleration の使用を含む) 、およびデータ管理に基づき計算されます。
Amazon S3 の料金を削減できる要素を特定するには、Amazon S3 の最新の請求料金と使用量を確認します。次に、コストがどのように発生しているかを確認します。
Amazon S3 の請求コストを削減するのに役立つヒントを次に示します。
- 未完了のマルチパートアップロードをクリーンアップする。
- 不要な旧バージョンのオブジェクトを削除する。
- ストレージクラス間の移行コストを確認する。
- データ取得コストを確認する。
- バケットに送信したリクエスト数を追跡する。
- バケットのサイズに変化がないかどうかを確認する。
- 各バケットのコストを確認する。
- 使用量が料金とどのように関係しているかを把握する。
また、請求に関する問題を調査する方法としては、次の Amazon S3 機能を使用する方法も使用できます。
- Amazon S3 Storage Lens を使用すると、Amazon S3 ストレージ全体の使用量とアクティビティを一覧表示できます。
- Amazon S3 ストレージクラス分析を使用すると、データアクセスパターンを検出できます。
解決方法
未完了のマルチパートアップロードをクリーンアップ
マルチパートアップロードを開始すると、マルチパートアップロードを完了または停止するまで、Amazon S3 はアップロードされたファイルの全部分を保持しています。マルチパートアップロードを完了しない場合でも、Amazon S3 はアップロードされた部分を引き続き保存しています。その結果、アップロードされた部分のストレージ料金が請求されるのです。
AWS コマンドラインインターフェイス (AWS CLI) を使用してマルチパートアップロードを停止すると、アップロードが未完了の部分が削除されます。ただし、Amazon S3 マルチパートアップロード API を使用する他のツールを使用する場合は、マルチパートアップロードが未完了でも、アップロードされた部分が保持される可能性があります。
未完了のマルチパートアップロードをクリーンアップするための追加のベストプラクティスをいくつか紹介します。
- ライフサイクルポリシーを作成することで、一定日数が経過した後で、未完了のマルチパートアップロードをクリーンアップします。
- マルチパートアップロードを一覧表示するために、Amazon S3 API 呼び出しを使用します。次に、失敗した、またはキャンセルしたいマルチパートアップロードを停止します。
- アカウント内のバケットに対し、S3 Storage Lens を使用し、未完了のマルチパートアップロードの数とサイズを決定します。
- Amazon S3 Storage Lens を使用して、どの S3 バケットにマルチパートアップロードが含まれているかを識別できます。
不要な旧バージョンのオブジェクトを削除
重要: Amazon S3 は、バケットから削除したデータを復元することはできません。
バケットでバージョニングを有効にした場合、各オブジェクトのバージョンが複数作成されます。オブジェクトバージョンが増えるたびに、ストレージコストが増大します。
オブジェクトのバージョン数を確認するには、Amazon S3 コンソールを使用するか、ListObjectVersions API 呼び出しを実行します。次に、不要なオブジェクトバージョンをすべて削除します。
**注:**バージョニングを有効化したバケットで特定のオブジェクトバージョンを完全に削除するには、そのオブジェクトバージョン ID を指定する必要があります。バージョニングを有効化したバケット内のオブジェクトに対する単純な削除リクエストを実行すると、Amazon S3 はオブジェクトに削除マーカーを付けます。削除マーカーを付けたオブジェクトがオブジェクトの最新バージョンになりますが、実際のオブジェクトは直前のバージョンです。ただし、削除マーカーを付けても、オブジェクトとそのバージョンが消去されることはありません。
使用可能な方法としては、次の方法もあります。
- ライフサイクルルール: オブジェクトを最新バージョンとそれ以外のバージョンに分けて管理できます。ただし、Amazon S3 では完全な削除を取り消すことはできないため、ライフサイクルルールのパラメータを確認してください。
- S3 Storage Lens: アカウント内の選択したバケットまたはすべてのバケットについて、最新バージョン、旧バージョン、および削除マーカーの数を確認できます。
ストレージクラス間の移行コストを確認
あるストレージクラスから別のストレージクラスにオブジェクトを移行すると、コストが発生します。
例えば、オブジェクトを S3 Standard から S3 Standard-IA ストレージクラスに移行する場合、1,000 個のライフサイクル移行リクエストごとに $0.01 が請求されます。オブジェクトを任意のストレージクラスから S3 Glacier Flexible Retrieval ストレージクラスに移行する場合、1,000 個のライフサイクル移行リクエストごとに $0.03 が請求されます。料金などの詳細については、「Amazon S3 の料金」をご覧ください。
バケット全体のオブジェクトを別のストレージクラスに移行するライフサイクル設定ルールを設定する場合は、Amazon S3 の料金が増大するものと考えてください。料金の増加がライフサイクルルールによるものかどうかを判断するには、AWS CloudTrail イベント履歴を確認します。また、ルールがいつ適用されたかを確認するには、Amazon S3 サーバーのアクセスログで PutBucketLifecycleConfiguration 呼び出しを確認します。
さらに、さまざまなストレージクラスから取得されたデータ量を決定するには、S3 ストレージクラス分析を使用できます。
注: S3 ストレージクラス分析の設定はバケット単位で行う必要があります。
データ取得コストを確認
次のストレージクラスに保存されているオブジェクトには、データ取得に関連するコストがかかります。
- S3 Standard-IA
- S3 1 ゾーン – IA
- S3 Glacier Flexible Retrieval
- S3 Glacier Deep Archive ストレージクラス
例えば、S3 Glacier Flexible Retrieval ストレージクラスから 1,500 万個のオブジェクトを取得するとします。取得の総コストは、選択した一括取得オプションによって異なります。
次のコスト例は、標準的な取得のコストです。
- 取得リクエスト料金: 15,000,000 / 1000 * $0.05 = $750
- 取得料金: 100,000 \ * $0.01 = $1,000
- 総コスト: $1,750
次のコスト例は、迅速な取得のコストです。
- 取得リクエスト料金: 15,000,000 / 1000 * $10 = $150,000
- 取得料金: 100,000 * $0.03 = $3,000
- 総コスト: $153,000
S3 Glacier Flexible Retrieval に保存したオブジェクトの一括取得には、料金はかかりません。
ヒント: さまざまなストレージリクエストとデータ使用量をモニタリングできるように、S3 Storage Lens ダッシュボードを使用することもできます。
バケットに送信したリクエスト数を追跡
バケットに送信したリクエストは、次の方法でモニタリングできます。
- サーバーアクセスのログ記録。アクセスログの確認方法については、「Amazon S3 server access log format」を参照してください。
- AWS CloudTrail によるオブジェクトレベルのログ記録
- Amazon CloudWatch メトリクス: AllRequests や BytesDownloaded など
データ移管 OUT 料金によるコストを削減するには、バケットにアクセスする際に Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用します。Amazon EC2 インスタンスは、バケットと同じ AWS リージョン内の Amazon Virtual Private Cloud (Amazon VPC) 内にある必要があります。
バケットのサイズに変化がないかどうかを確認
ストレージコストを分析するため、現在のバケットのサイズと前月のバケットのサイズを比較します。
1. Amazon S3 コンソールを開きます。
- [バケット] を選択し、バケットを選びます。
3. [管理] タブを選択します。
- [メトリクス] を選択します。
また、AWS CLI を使用してバケットのストレージサイズを確認することもできますし、Amazon CloudWatch でストレージメトリクスをモニタリングすることもできます。バケットサイズの変化を日、週、月ごとにモニタリングするには、S3 Storage Lens を使用します。
各バケットのコストを確認
高いコストが発生するバケットを特定するには、バケットのコスト配分タグを有効にします。次に、AWS Cost Explorer でバケットを確認します。詳細については、「Amazon S3 バケットのコストを確認するにはどうすればよいですか?」を参照してください。
使用量が料金とどのように関係しているかを把握
使用状況レポートにはストレージ使用量がバイト時間数を単位として記録され、請求レポートにはストレージ使用量が GB 月数を単位として記録されます。ストレージ使用量とストレージ料金の関係を把握するには、バイト時間数を GB 月数に換算します。この換算の例については、「Understanding your AWS billing and usage reports for Amazon S3」を参照してください。
Amazon S3 使用状況レポートは AWS Billing and Cost Management ダッシュボードからダウンロードできます。または、アカウント内の全バケットに関する S3 ストレージレンズダッシュボードを作成することで、詳細なストレージと請求のメトリクスを取得することもできます。
関連するコンテンツ
- 質問済み 1ヶ月前lg...
- 質問済み 4年前lg...
- 質問済み 5年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 3年前