AWS Cost and Usage Report で詳細コスト分析 - Athena クエリと可視化パイプライン

リソースレベルの詳細コストデータを Athena で SQL 分析し、QuickSight で可視化する。CUR 2.0 のデータエクスポートと分析基盤の構築手法を紹介します。

CUR の概要

Cost and Usage Report (CUR) は AWS の最も詳細なコストデータを提供するレポートです。Cost Explorer が集約されたビューを提供するのに対し、CUR はリソース ID レベルの明細データを S3 に配信します。各 EC2 インスタンス、各 S3 バケット、各 Lambda 関数のコストを個別に分析できます。

Athena クエリと可視化

CUR を Parquet 形式で S3 に配信し、Glue クローラーでテーブルを作成すると、Athena で SQL クエリを実行できます。「先月最もコストが高かった EC2 インスタンス上位 10 件」「タグ未設定のリソースのコスト合計」「Savings Plans の実効割引率」などのクエリで、Cost Explorer では得られない詳細な分析が可能です。QuickSight で Athena をデータソースとしてダッシュボードを構築し、チーム別・プロジェクト別のコストレポートを自動更新で共有します。

CUR 2.0 とデータエクスポート

CUR 2.0 (Data Exports) は従来の CUR を進化させ、 Parquet 形式での出力、カラムの選択、 SQL ベースのフィルタリングを提供します。必要なカラムのみをエクスポートすることで、 S3 のストレージ量と Athena のスキャンコストを削減できます。リソースレベルの明細で、個々の EC2 インスタンスや S3 バケットのコストを特定し、タグが付与されていないリソースのコストも追跡します。 Savings Plans と RI の適用状況 (カバレッジ、利用率、実効料金) を CUR のカラムから分析し、購入オプションの最適化に活用します。 Organizations の一括請求アカウントから CUR を出力すると、全メンバーアカウントのコストを 1 つのレポートで分析できます。 CUR の基礎から応用まで、書籍 (Amazon)で体系的に学べます。

CUR の分析基盤構築

CUR を S3 に Parquet 形式で配信し、Glue クローラーでテーブルを作成すると、Athena で SQL クエリを実行できます。QuickSight でダッシュボードを構築し、サービス別コスト推移、タグ別コスト配分、Savings Plans のカバレッジをビジュアル化します。CUR のデータ量は大規模環境で月間数 GB に達するため、S3 のライフサイクルルールで古いレポートを Glacier に移行します。Athena のクエリコストは Parquet 形式とパーティション (年/月) で最適化し、フルスキャンを避けます。CUDOS (Cost and Usage Dashboards Operations Solution) は AWS が提供する QuickSight ダッシュボードテンプレートで、CUR の分析基盤を迅速に構築できます。

CUR の料金

CUR 自体の生成と S3 への配信は無料です。コストが発生するのは S3 のストレージ料金と Athena のクエリ料金です。CUR のデータ量はアカウントのリソース数に比例し、大規模環境では月間数 GB から数十 GB になります。Athena のクエリは 1 TB スキャンあたり約 5.00 ドルで、Parquet 形式と列指向のパーティショニングでスキャン量を大幅に削減できます。QuickSight の SPICE ストレージは Author に 10 GB が含まれ、追加は 1 GB あたり月額約 0.25 ドルです。

Cost Explorer との使い分け

コスト分析には Cost Explorer と CUR の二つがあり、目的で使い分けます。Cost Explorer は集約されたビューを手早く確認するのに向き、日常的な傾向把握や購入推奨の確認に適します。一方 CUR は、リソース単位の明細をすべて含む最も詳細なデータで、Cost Explorer では辿り着けない粒度の分析が必要なときに使います。普段は Cost Explorer で全体を眺め、特定のコストを深掘りしたり独自のレポートを作り込んだりする場面で CUR と分析基盤を使う、という役割分担が実務的です。

明細データの粒度を理解する

CUR を正しく分析するには、データの構造を理解することが欠かせません。各行は利用の明細を表し、使用量や料金、適用された割引、対象リソースの識別子などが列として並びます。コミットメント購入の割引を期間にならして配分した償却ベースの金額と、実際の請求額では見え方が異なるため、目的に応じて参照する列を選びます。タグの列を使えば、プロジェクトや環境ごとの按分も可能です。どの列が何を意味するかを押さえることで、誤った集計を避け、信頼できる分析につなげられます。

FinOps への活用

CUR は、組織にコスト意識を根づかせる FinOps の実践基盤になります。チームやプロジェクト単位でコストを可視化し、各部門に利用状況を示す showback や、実際に費用を割り当てる chargeback の仕組みを構築できます。月次でコストの推移と要因を分析し、無駄の削減や購入最適化の効果を定量的に追跡します。異常なコスト増を検知した際は、CUR の明細まで遡って原因リソースを特定できます。詳細データを土台に、コストを継続的に管理・改善する文化を支えるのが CUR の本質的な価値です。

まとめ

CUR はリソースレベルの詳細コストデータを提供するレポートです。CUR 2.0 のカラム選択と SQL フィルタリングで効率的にデータをエクスポートし、Athena で SQL クエリを実行します。QuickSight でカスタムダッシュボードを構築し、Savings Plans のカバレッジや RI の利用率を含む高度なコスト分析を実現します。