Note
Amazon Q Developer CLI は Kiro に統合されました。
本記事で紹介しているエージェント定義ファイルなどは、~/.kiro/agents/に移動することで Kiro CLI でも同様に利用可能です。
Amazon Q Developer CLIのAgent機能を使って、AWSのコスト最適化・削減案を自動で提案してくれる「コスト最適化エージェント」を作成し、実際に分析させてみました。その設定内容と結果を共有します。
はじめに
クラウドのコスト管理(FinOps)は重要ですが、専門的な知識が必要で、かつ継続的に監視・分析するのは大変です。そこで、Amazon Q Developer CLIのAgent機能とMCP (Model Context Protocol) サーバーを組み合わせて、「ベテランFinOpsコンサルタント」 のように振る舞うエージェントを作ってみました。
構成の概要
今回作成したエージェントの構成は以下の通りです。
- Amazon Q Developer CLI: エージェントの実行環境
- AWS Billing & Cost Management MCP Server: AWSのコストデータを取得するためのツール群を提供
- Prompt: エージェントにFinOpsコンサルタントとしての役割と分析手順を指示
エージェントの設定
1. エージェント定義 (cost-optimizer.json)
まず、エージェント自体の設定ファイルです。使用するプロンプトファイルや、MCPサーバー(AWSのBilling系機能を利用するため)を指定しています。
{
"name": "cost-optimizer",
"prompt": "file://./aws-cost-optimization-prompt.md",
"mcpServers": {
"awslabs.billing-cost-management-mcp-server": {
"command": "uvx",
"args": ["awslabs.billing-cost-management-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_PROFILE": "sys-dev",
"AWS_REGION": "ap-northeast-1"
},
"disabled": false,
"autoApprove": []
}
},
"tools": [
"@awslabs.billing-cost-management-mcp-server"
]
}
※ 簡略化のため一部設定は省略していますが、ポイントは awslabs.billing-cost-management-mcp-server を利用可能にしている点です。これにより、エージェントが直接AWSのコストデータを参照できるようになります。
2. プロンプト (aws-cost-optimization-prompt.md)
エージェントの「人格」と「行動指針」を定義するプロンプトです。単に「安くして」と言うのではなく、役割やプロセスを具体的に定義することで、回答の質を高めています。
ポイントとしては
- 役割: 15年以上の経験を持つFinOpsコンサルタント、技術リスク評価の専門家、セキュリティ専門家の3つの視点を持つこと。
- 成功基準: 金額の定量化、優先度、リスクスコアを明記すること。
- プロセス: 調査 → 非効率性の特定 → コミットメント評価 → セキュリティ監査 → 計画策定 という手順を厳守させること。
# 言語設定
**重要**: あなたは日本語で応答するAIアシスタントです。
# 役割定義
あなたは、**15年以上の経験を持つベテランのFinOps戦略コンサルタント**であり、AWSコスト最適化の専門家です。あなたは、AWSの技術リスク評価の専門家、およびクラウドセキュリティの専門家という**3つの異なる専門家の視点**を統合して、協力的な分析を行います。
# 目的(アクション)
AWSインフラストラクチャのコスト構造を徹底的に分析し、**サービスの安定性やセキュリティを損なうことなく**、**今後3ヶ月間で実現可能な最大かつ最も迅速なコスト削減**を達成するための計画を作成してください。
(中略...詳細なステップ定義など)
# 自己検証(Human Feedback Loop)
最終的な回答を提示する前に、以下の自己批判を実行してください。
「私は、提案されたコスト最適化策がサービスのダウンタイムやセキュリティ違反を招くリスクがないことを、**リスク評価の専門家の観点から**検証したか?検証結果と、もしリスクがある場合の**緩和策**を追記せよ。」
実行結果
エージェントを起動し、以下のリクエストを投げました。
現在のec2についてコストが最適かを調べてほしい
エージェントは自律的に以下のツールを実行し、情報を収集しました。
-
cost-optimization(list_recommendations): 推奨事項の取得 -
ri-performance: Reserved Instancesの利用状況確認 -
sp-performance: Savings Plansの利用状況確認 -
cost-explorer: 実際のコストと使用量の確認
提案されたレポート(抜粋)
エージェントが出力したレポートは非常に具体的で、アクション可能なものでした。
現状分析
- 月間EC2コスト: 約$2,711 USD
- 対象: 50台以上のインスタンス
具体的な削減提案
1. アイドルインスタンスの停止(即時実行・低リスク)
- 対象: 具体的なインスタンスIDを3台特定 (
i-0743...など) - 効果: 月間 約$28 削減
2. Right-sizing(サイズ変更)
- 対象:
t4g.medium→t4g.microへの変更など - 効果: 月間 約$10 削減
3. Graviton移行(中期・高リスクだが高効果)
- 対象:
m6a.2xlarge→r8g.largeなど - 効果: 月間 約$400 削減 (一部インスタンスで98%削減など)
- リスク緩和策: テスト環境での事前検証、段階的移行を提案
4. Savings Plans (SP) の購入
- 効果: 月間 $400-600 削減見込み
3ヶ月実行計画
最終的に、これらを組み合わせた3ヶ月のロードマップまで提示してくれました。
- Month 1: アイドル停止とRight-sizingで即座に無駄をカット
- Month 2-3: 検証を行った上でGraviton移行とSP購入
- 予想削減効果: 年間 $10,000以上 (約30-38%のコスト削減)
まとめ
Amazon Q Developer CLI Agentに適切なツール(MCP Server)と明確な役割(プロンプト)を与えることで、単なるデータの羅列ではなく、 「コンサルタントのような文脈を持った提案」 が得られることがわかりました。
特に、以下の点が優れています。
- 複合的な視点: 単に安いだけでなく、リスクやセキュリティも考慮してくれる。
- 具体的なアクション: 「何か無駄があるかも」ではなく「このインスタンスIDをこう変更せよ」と具体的。
- 定量的: いくら削減できるかをドルベースで試算してくれる。
FinOpsの第一歩として、まずはこのエージェントに定期的に診断させるだけでも大きな効果がありそうです。