コスト分析における課題
AWSのコストを分析する際、Cost ExplorerとCURを活用する方法がありますが、それぞれ以下のような課題があります。
Cost Explorer
- AWSのサービスごとのコストをグラフで視覚的に確認できる一方、利用用途ごとの詳細なコスト分析が困難
CUR
- コスト利用状況を詳細に分析できるが、クエリを用いた分析を行う場合、Athena等で分析用テーブルを作成する必要がある
- 分析環境の構築工数やクエリ実行時のコストを考慮する必要がある
- SQLなどのクエリを実行する知識が必要
本記事では、MCPツールを用いて上記の課題を解決し、自然言語で直感的にAWSのコスト分析を行う手法を紹介します。
使用ツール
MCPクライアント
- Cursor: AI搭載のコードエディタ
MCPツール
- mcp-server-motherduck: DuckDBベースのデータ分析ツール
- mcp-vegalite-server: Vega-Liteを用いたグラフ描画ツール
使用ツールのセットアップ方法は本記事では割愛いたします。
mcp-server-motherduckについて
- データ分析に特化した組み込み型のSQLデータベースであるDuckDBを活用したMCPツール
- CSV、JSON、Parquetなどのファイルを対象に分析クエリを実行可能
mcp-vegalite-serverについて
- JSONからグラフを描画するVega-Liteライブラリを活用したMCPツール
- 自然言語によるプロンプトやCSVファイルからVega-Liteを用いてグラフを描画可能
作業ディレクトリ構成
コスト分析を行うための作業ディレクトリ構成は以下の通りです:
.
├── output
│ ├── csv # クエリの実行結果をCSV形式で格納
│ ├── graph # クエリの実行結果をグラフ形式で格納
│ └── report # 自然言語での分析結果を格納
└── source # CURから出力したレポートを格納
分析手順
① 自然言語からDuckDBのクエリを発行し、分析に利用するデータを出力
プロンプト:
duckdb/source/cur-202506.csvにあるファイルを読み込んで、AWSで最も利用されている上位3サービスの料金内訳と、item descriptionによる詳細な利用状況をCSVで出力して下さい。
上位3サービスのコスト (※具体的な数値はぼかしています)
service,total_cost,usage_count
AmazonCloudFront,5555.0,1111
AWSDataTransfer,4444.0,1111
AmazonRDS,3333.0,1111
各サービスのコスト内訳詳細
CloudFrontのコスト内訳詳細
item_description,total_cost
data transfer out (Japan),111.11111
"HTTPS GET and HEAD requests in Japan",111.11111
Tax for product code AmazonCloudFront,111.11111
data transfer out (United States),111.11111
$0.xxx per GB - first 10 TB / month data transfer out,111.11111
"$0.xx per 10,000 Requests for HTTPS GET and HEAD requests in United States",111.11111
※ 他サービスの内訳は割愛
複数のCSVファイルに分けてサービスごとの詳細な課金状況が出力されました。これらのファイルを基に、次のステップでさらなる分析を進めます。
② 出力したCSVを基にコスト最適化案を自然言語で出力
以下のプロンプトで最適化案を生成します:
どんなサービスでどのような使われ方をされているか、どこにコスト削減余地があるかを自然言語で分析した結果をreport/に出力してください。
出力された分析レポート
# AWSコスト分析レポート
## 分析期間: 2025年6月1日 - 2025年6月29日
### 概要
Reserved Instanceを除いたAWSサービスの利用状況を分析し、上位3サービスのコスト内訳と最適化提案を行いました。
### 上位3サービスのコスト内訳
| 順位 | サービス | 総コスト | 利用回数 | 主な用途 |
|------|----------|----------|----------|----------|
| 1 | AmazonCloudFront | $5,555 | 1,111 | CDNサービス |
| 2 | AWSDataTransfer | $4,444 | 1,111 | データ転送 |
| 3 | AmazonRDS | $3,333 | 1,111 | データベース |
### サービス別詳細分析
#### 1. AmazonCloudFront ($5,555)
**主なコスト要因:**
- データ転送料金(日本): $4,288.46 (77.2%)
- HTTPSリクエスト料金: $994.345 (17.9%)
- 米国データ転送: $133.32 (2.4%)
**最適化提案:**
- キャッシュ設定の最適化により、オリジンサーバーへのリクエスト削減
- 静的コンテンツのキャッシュ期間延長
- 画像・動画の圧縮・最適化
#### 2. AWSDataTransfer ($4,444.00)
**主なコスト要因:**
- APN1(アジアパシフィック)データ転送: $2,693.06 (60.6%)
- グローバルフリーティア超過分: $1,102.11 (24.8%)
- 東京→バージニア転送: $124.43 (2.8%)
**最適化提案:**
- 同一リージョン内でのデータ転送に変更
- データ転送量の削減(不要なデータの削除)
- 圧縮技術の活用
#### 3. AmazonRDS ($3,333.00)
**主なコスト要因:**
- Aurora MySQL: $1,799.82 (54.0%)
- スナップショットエクスポート: $339.97 (10.2%)
- Aurora Serverless v2: $313.30 (9.4%)
- バックアップストレージ: $273.31 (8.2%)
**最適化提案:**
- Reserved Instanceへの移行(Aurora MySQL)
- 不要なスナップショットの削除
- バックアップ保持期間の見直し
- Serverless v2の設定最適化
分析サマリー
# AWS上位3サービス分析サマリー
## 分析概要
- **分析期間**: 2025年6月1日 - 2025年6月29日
- **総コスト**: $XXXXX
## 上位3サービスランキング
### 1. AmazonCloudFront
- **コスト**: $5,555
- **利用回数**: 1,111回
- **主な用途**: CDNサービス
- **最適化余地**: キャッシュ設定の最適化
### 2. AWSDataTransfer
- **コスト**: $4,444
- **利用回数**: 1,111回
- **主な用途**: データ転送
- **最適化余地**: データ転送量の削減
### 3. AmazonRDS
- **コスト**: $3,333
- **利用回数**: 1,111回
- **主な用途**: データベース
- **最適化余地**: Reserved Instance移行
## 主要なコスト削減機会
### 即座に実行可能
1. **RDS Reserved Instance移行**: 月間$NN,NNN削減可能性
### 短期対応
2. **CloudFront最適化**: 月間$NNN削減可能性
3. **データ転送削減**: 月間$NNN削減可能性
## 総合評価
- **総コスト削減可能性**: 月間約$NNN
- **削減率**: 現在コストの約N倍
- **年間削減効果**: 約$NN
CSVに出力したコスト利用状況から、具体的な改善案を自然言語で出力することができました。
③ 分析結果をグラフで可視化
Vega-Liteを用いてCSVファイルに出力したコストデータをグラフに変換します。
以下のプロンプトでCloudFrontの課金状況に関するグラフを生成します:
以下作業をmcpServersのvegaliteを用いて実施してください。
output/csv/に出力した分析結果から、CloudFrontのコストをitem_descriptionごとに棒グラフで出力してください。
出力する結果は上位3項目のみに絞ってください。
データ転送やHTTPリクエストによる課金など、利用用途に応じた課金状況をグラフで視覚的に出力することができました。
試してみた所感
AWSのCURには、サービスごとの詳細な課金内訳に関する情報が含まれている一方、情報量が多いため分析作業が複雑になりがちです。
AthenaやQuickSightなどを用いて分析を容易にすることも可能ですが、分析基盤の構築に工数がかかる点や、クエリ実行時のコストが発生する点が懸念事項として挙げられます。
一方、今回紹介したMCPツールを用いた分析手法では、自然言語を用いて詳細かつ直感的に分析を行うことができ、コスト最適化案やグラフの出力などもできるため、コスト分析業務のハードルを大幅に下げることができたかと思います。
他のMCPツールを活用したコスト分析のアイデアなどがございましたら、コメントいただけると幸いです!