/ / のクラウドコストは月末に 1 通来てから慌てる、では遅い。各クラウドの Cost を毎日叩いて に蓄積し、サービス別・タグ別・チーム別 に切れる体制を作ります。
各クラウドの Cost API
| クラウド | API | 粒度 |
|---|---|---|
| Cost Explorer API | 日次、サービス別、タグ別 | |
| Cloud Billing → BigQuery export | 日次、サービス別、ラベル別 | |
| Cost Management API | 日次、リソース別、タグ別 |
GCP の Billing → BigQuery export
GCP は Billing データを BigQuery にエクスポートする設定を ON にすれば、毎日自動で全請求が BigQuery に流れます。最も手軽。
BigQuery の billing export を集計
SQL
-- 直近 30 日のサービス × プロジェクト別費用SELECT invoice.month, service.description AS service, project.id AS project_id, SUM(cost) AS total_cost_usd, SUM(IFNULL((SELECT SUM(amount) FROM UNNEST(credits)), 0)) AS credits_usd, SUM(cost + IFNULL((SELECT SUM(amount) FROM UNNEST(credits)), 0)) AS net_cost_usdFROM `my-project.billing.gcp_billing_export_resource_v1_XXXXXX`WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)GROUP BY 1, 2, 3ORDER BY net_cost_usd DESCLIMIT 50;AWS Cost Explorer API
boto3 で AWS の費用を取得
Python
import boto3from datetime import date, timedelta
ce = boto3.client("ce", region_name="us-east-1")
end = date.today()start = end - timedelta(days=30)
resp = ce.get_cost_and_usage( TimePeriod={"Start": start.isoformat(), "End": end.isoformat()}, Granularity="DAILY", Metrics=["UnblendedCost"], GroupBy=[ {"Type": "DIMENSION", "Key": "SERVICE"}, {"Type": "TAG", "Key": "Team"}, ],)
for r in resp["ResultsByTime"]: for g in r["Groups"]: print(r["TimePeriod"]["Start"], g["Keys"], g["Metrics"]["UnblendedCost"]["Amount"])タグ運用の落とし穴
タグなしリソースが多いと配賦不能
チーム別配賦をするには全リソースにタグが必要。実際は 30-50% のリソースが「タグなし」状態。Cost Allocation Tags 必須化 + タグなしリソース検出のレポート週次化で徐々に減らす。
- 必須タグ: Team / Project / Environment (dev/stg/prod) / Owner
- Terraform / で強制: タグなしリソース作成を Sentinel / OPA で弾く
- タグの命名規則: `team:platform` のような小文字 + コロン区切りで統一
- 月次レビュー: タグなしコストの推移、減少目標
ダッシュに載せる指標
- 月次のクラウド総コスト: 前月比、予算消化率
- サービス別 TOP 10: EC2 / RDS / S3 / Lambda / ... のシェア
- チーム別配賦: タグから team を引いた集計
- 環境別: dev / stg / prod の比率(dev が prod 並なら異常)
- 未使用リソース: 30 日以上アイドルな EC2、未マウント EBS、忘れ Snapshot
- Reserved Instance / Savings Plans 活用率
次の話
EP.07 では / のクエリコストを掘り下げます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。