Communitygithub.com

dautovri/cloud-cost-agent

AWS、GCP、Azure向けのネイティブFinOpsエージェントスキル。Claude Code、Cursor、Gemini、その他SKILL.md対応エージェント内でクラウドコスト削減の機会を見つけます。

cloud-cost-agent とは?

Cloud Cost Agentは、主要3クラウドプロバイダー(AWS、GCP、Azure)を対象とした、統一されたネイティブなコスト最適化スキルです。各プロバイダーの公式CLIと推奨エンジン(AWS Compute Optimizer、Cost Optimization Hub、GCP Recommender、Azure Advisor)のみを使用し、サードパーティツールに依存しません。このスキルは、リードオンリーの原則を徹底し、コスト削減の見込みが高く、実装の手間が低い「クイックウィン」を優先します。ページネーション処理、APIコストの考慮、日付ユーティリティの移植性など、実運用に即したベストプラクティスを備えています。また、リザーブドインスタンスやコミットメント割引の推奨、コスト使用量の内訳分析、リサイジングやアイドルリソース特定など、詳細なFinOpsワークフローをカバーします。

対応✓Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add dautovri/cloud-cost-agent

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Cloud Cost Agent (AWS + GCP + Azure)

主要3プロバイダーを対象とした、統一されたネイティブクラウドコスト最適化エージェントスキル。

必要条件: AWS CLI v2、gcloud、Azure CLIが読み取りアクセス権(請求、レコメンダー、アドバイザーサービス)で設定されていること。一部のソースは一度だけのオプトインが必要です:AWS Compute Optimizer と Cost Optimization Hub(登録)、GCP Recommender(API有効化、約24~48時間のデータ蓄積)。いくつかのGCPフィルターで jq を使用します。

基本ルール: 常にプロバイダーの公式CLIと推奨エンジンを使用すること。サードパーティツールは使いません。

安全性とベストプラクティス(全プロバイダー共通)

  • まずは読み取り専用。 変更を伴うコマンド(aws ec2 terminate-instances/stop-instances、gcloud compute instances delete、az vm delete/deallocate、purchase/create/modifyを含む任意のコマンド)は、正確なコマンドをユーザーに提示し、明示的な承認を得ずに実行しないでください。
  • 常にプロバイダー認証を使用します(--profile、gcloud --project、az account set)。
  • 出力を整形するために --query / --format json / -o json を使用します。
  • ページネーションを処理する。 これらのAPIは結果をページ分割します。合計を報告する前にすべてのページを集約してください。NextToken/nextPageToken に従うか、AWSでは --no-paginate/--max-items を、gcloudでは --page-size/--limit を意図的に使用します。1ページだけの読み取りでは誤った合計になります。
  • クラウドから取得した値はすべて引用符で囲む/エスケープする。 API出力からのリソース名、タグ、IDにはシェルのメタ文字が含まれる可能性があります。それらを引用符で囲まずに別のシェルコマンドに挿入しないでください。
  • APIコストとループに注意する。 aws ce(Cost Explorer)はリクエストあたり約$0.01の費用がかかります。Cost Explorerの呼び出しをループさせないでください。結果をセッション内でキャッシュし、監査あたりの呼び出し回数を数回に制限します。
  • 優先順位:推定節約額が高い順 → 労力が低い順。
  • クイックウィン(アイドルリソースの削除、小規模インスタンスへのリサイジング、明確なケースでのコミットメント利用の有効化)を優先します。

移植性のある日付ヘルパー

BSD/macOSとGNU/Linuxでは date の動作が異なります。ウィンドウを一度だけ、移植性のある方法で計算し、その後 $START/$END を再利用します:

START=$(date -u -d '30 days ago' +%Y-%m-%d 2>/dev/null || date -u -v-30d +%Y-%m-%d)
END=$(date -u +%Y-%m-%d)

(または、エージェントにリテラルな YYYY-MM-DD 形式の日付を挿入させるだけでも構いません。)

使用方法

エージェントにプロバイダーと目標を伝えます。例:

  • AWS の過去30日間を監査
  • GCP と Azure のクイックウィンを見つける
  • 全クラウドのリサイジング推奨

1. 事前確認と認証

AWS

aws sts get-caller-identity
aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity MONTHLY --metrics "UnblendedCost"

一度だけの登録(セクション2および4で必要):

aws compute-optimizer get-enrollment-status
aws compute-optimizer update-enrollment-status --status Active      # オプトイン
aws cost-optimization-hub list-enrollment-statuses --region us-east-1
aws cost-optimization-hub update-enrollment-status --status Active --region us-east-1

GCP

gcloud auth list
gcloud config set project YOUR_PROJECT
gcloud billing accounts list

Azure

az account show
az account set --subscription "SUB_ID"

2. 集中型 / 高インパクトな推奨事項

AWS — Cost Optimization Hub(最適な集約ツール)

COHは**us-east-1でのみアクセス可能なグローバルサービス**であり、登録が必要です(事前確認を参照)。

aws cost-optimization-hub list-recommendations \
  --region us-east-1 \
  --filter '{"implementationEfforts":["VeryLow","Low"]}' \
  --query 'items[?estimatedMonthlySavings > `10`] | sort_by(@, &estimatedMonthlySavings) | reverse(@)' \
  --output json

有効な implementationEfforts の値:VeryLow | Low | Medium | High | VeryHigh。

GCP — Recommender(主要ソース)

--location は必須です。VM/アイドルレコメンダーはゾーンレベル(例:us-central1-a)です。使用するゾーンを繰り返し処理します。消費ベースのコミットメントレコメンダーは**global**であり、請求先アカウントにスコープされます。

# VMのリサイジング(ゾーンレベル — ゾーンごとに繰り返し)
gcloud recommender recommendations list \
  --recommender=google.compute.instance.MachineTypeRecommender \
  --project=YOUR_PROJECT --location=us-central1-a --format=json

# アイドルVM(ゾーンレベル — ゾーンごとに繰り返し)
gcloud recommender recommendations list \
  --recommender=google.compute.instance.IdleResourceRecommender \
  --project=YOUR_PROJECT --location=us-central1-a \
  --format="table(description, primaryImpact.costProjection.cost.units, stateInfo.state)"

# コミットメント利用割引(グローバル、請求先アカウントスコープ)
gcloud recommender recommendations list \
  --recommender=google.cloudbilling.commitment.SpendBasedCommitmentRecommender \
  --billing-account=BILLING_ACCOUNT_ID --location=global --format=json

その他のコストレコメンダー:google.compute.disk.IdleResourceRecommender(アイドルディスク)、google.compute.address.IdleResourceRecommender(アイドルIP)、google.compute.image.IdleResourceRecommender(アイドルイメージ)、google.compute.commitment.UsageCommitmentRecommender(リソースベースCUD)。

Azure — Advisor Cost カテゴリ

az advisor recommendation list \
  --category Cost \
  --query "[].{Resource: shortDescription.problem, Impact: impact, AnnualSavings: extendedProperties.annualSavingsAmount, Currency: extendedProperties.savingsCurrency}" \
  -o table

# 高インパクトのみ
az advisor recommendation list --category Cost \
  --query "[?impact=='High'].{Id:id, Resource:resourceMetadata.resourceId, Savings:extendedProperties.annualSavingsAmount}" -o json

extendedProperties フィールドは推奨タイプによって異なります — nullを適切に処理してください。

3. コストと使用量の内訳

AWS(呼び出しあたり約$0.01のコストを覚えておいてください — ループさせないでください):

aws ce get-cost-and-usage \
  --time-period Start=$START,End=$END \
  --granularity DAILY --metrics "UnblendedCost" \
  --group-by Type=DIMENSION,Key=SERVICE

GCP — 詳細なコスト/使用量はBigQuery請求エクスポートから取得します(詳細なコスト行に対応する gcloud コマンドはありません)。Billing → BigQueryエクスポートを有効にし、gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID> テーブルにクエリを実行します。

注:2026-01-21時点でエクスポートスキーマが変更されました — CUD割引は credits 配列から新しい consumption_model フィールドに移動され、price.list_price / price.effective_price_default が追加されました。CUD/クレジットロジックをそれに応じて更新してください。

Azure — 詳細データにはCost Management エクスポート(またはCost Details API)を推奨します。az consumption はMicrosoftの非推奨パスにあります(簡易確認のフォールバックとしてのみ保持):

# プライマリ: エクスポートをストレージにスケジュール/実行(1回限りの実行には5つの必須パラメータのみ必要)
az costmanagement export create \
  --name AdhocExport --type Usage \
  --scope "/subscriptions/SUB_ID" \
  --storage-account-id "/subscriptions/.../storageAccounts/ACCT" \
  --storage-container exports --timeframe MonthToDate

# 簡易確認用フォールバック(非推奨API):
az consumption usage list --start-date $START --end-date $END \
  --query "[].{Resource:instanceName, Service:consumedService, Cost:pretaxCost}" -o table

ストレージなしでアドホックな集約を行うには、az rest を介してCost Management Query REST APIを呼び出します(az costmanagement query サブコマンドは存在しません)。

4. リサイジングとコンピュート推奨

AWS — Compute Optimizer(登録が必要です。事前確認を参照)。詳細なリサイジング + アイドル検出:

aws compute-optimizer get-ec2-instance-recommendations
aws compute-optimizer get-auto-scaling-group-recommendations
aws compute-optimizer get-ebs-volume-recommendations
aws compute-optimizer get-lambda-function-recommendations
aws compute-optimizer get-rds-database-recommendations
aws compute-optimizer get-idle-recommendations

Cost ExplorerもEC2リサイジングを提供します(--service は必須で、"AmazonEC2" のみ有効):

aws ce get-rightsizing-recommendation --service "AmazonEC2"

GCP — マシンタイプレコメンダー(tonumber に注意:GCPは cost.units を文字列として返します):

gcloud recommender recommendations list \
  --recommender=google.compute.instance.MachineTypeRecommender \
  --project=YOUR_PROJECT --location=us-central1-a --format=json \
  | jq '.[] | select((.primaryImpact.costProjection.cost.units|tonumber) < 0)'

Azure — Advisor Costの推奨にはすでにVMのリサイジング/十分に活用されていないリソースが含まれています(セクション2)。

5. コミットメントと割引

AWS — Savings Plans購入推奨。4つのパラメータはすべて必須です:

aws ce get-savings-plans-purchase-recommendation \
  --savings-plans-type COMPUTE_SP \
  --term-in-years ONE_YEAR \
  --payment-option NO_UPFRONT \
  --lookback-period-in-days THIRTY_DAYS

(savings-plans-type: COMPUTE_SP|EC2_INSTANCE_SP|SAGEMAKER_SP; term-in-years: ONE_YEAR|THREE_YEARS; payment-option: NO_UPFRONT|PARTIAL_UPFRONT|ALL_UPFRONT; lookback-period-in-days: SEVEN_DAYS|THIRTY_DAYS|SIXTY_DAYS。)

GCP — セクション2の消費ベースコミットメントレコメンダーを介したCommitted Use Discounts。

Azure — 予約/セービングプランの推奨はAdvisor(サブスクリプションごと)を介して表示されます。請求先アカウントスコープでは、az rest を介してConsumption Reservation Recommendations REST APIを使用します:

az advisor recommendation list --category Cost \
  --query "[?contains(shortDescription.problem, 'reserved') || contains(shortDescription.problem, 'reservation')]"

6. 優先順位付けテンプレート(任意のプロバイダー向け)

要約する際は:

  1. 推定月間/年間節約額の合計。
  2. クイックウィンバケット(VeryLow/Lowの労力または同等)。
  3. 上位5~8項目: リソース、現在の状態、推奨アクション、節約額、労力/リスク。
  4. 最優先項目に対する具体的な次のコマンド。
プロバイダー: GCP
潜在的な月間節約額の合計: $2,340

クイックウィン:
- アイドルVMを削除 ... : $180/月 (VeryLow)
- n1-standard-8 → n2-standard-4 にリサイジング : $420/月

次のコマンド:
gcloud recommender recommendations list --recommender=google.compute.instance.IdleResourceRecommender --project=... --location=us-central1-a

プロバイダー別クイックリファレンス

AWS

  • Cost Optimization Hub(us-east-1、登録済み)で広範な集約ビュー。
  • Compute Optimizer(登録済み)で詳細なリサイジング + アイドル。
  • Cost Explorer(aws ce)で支出内訳、リサイジング、Savings Plans — 呼び出しコストに注意。

GCP

常に --location を指定します。主要レコメンダー:

  • MachineTypeRecommender(リサイジング、ゾーンレベル)
  • IdleResourceRecommender(VM/ディスク/IP/イメージ、ゾーン/リージョンレベル)
  • SpendBasedCommitmentRecommender(CUD、グローバル、請求先アカウント)

Azure

  • AdvisorがCost推奨の主要ソースです。
  • 生の使用量データにはCost Management エクスポート(またはCost Details API)を使用。az consumption は非推奨のフォールバックとしてのみ使用。

完全な監査フロー(推奨)

  1. 認証; 登録状況を確認(Compute Optimizer、COH)。
  2. ウィンドウの高レベルコストサマリーを取得。
  3. すべてのページを集約しながら、推奨事項を取得(Hub / Recommender / Advisor)。
  4. 節約額がしきい値を超え、かつ労力が低いものにフィルター。
  5. 必要に応じて生の使用量とクロスチェック。
  6. 優先順位リスト + 3つの具体的な次のアクションを生成(読み取り専用; 変更を伴うものは承認用にフラグ)。 7.(オプション)他のプロバイダーについても繰り返し。

参考資料

AWS

GCP

Azure


特定のプロバイダー、または3つすべてを対象に実行してください。ネイティブに。効果的に。

関連スキル