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 ドルです。

まとめ

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