AWS Budgets + Cost Explorer — コスト管理
概要
AWS Budgets は予算を設定して「閾値を超えたら通知する」サービス。 AWS Cost Explorer は「実際にいくら使ったか」をサービス別・タグ別・期間別に可視化する分析ツール。 この 2 つを組み合わせるのが AWS のコスト管理基本セットです。
地味だが採用評価で「個人 / 中小企業の AWS 案件をやる人ですか」を判定する重要シグナル。 AWS は使った分だけ課金される(しかも単価がリージョン・サービス毎に複雑)ので、 「気付いたら今月の請求が予想の 5 倍」事故を防ぐ責任が運用者にあります。
主な機能
AWS Budgets
- Cost Budget — 月次 / 四半期 / 年次の予算金額を設定。
- Usage Budget — 使用量ベース(EC2 時間、S3 容量等)。
- Reserved Instance Budget — RI 利用率の予算。
- Action — 閾値超過時に IAM Policy を切り替え、リソースを停止する自動アクション(強力だが注意)。
- 通知 — 50% / 80% / 100% 達成等で SNS / Email 通知。
AWS Cost Explorer
- サービス別 / リージョン別 / リンクアカウント別 の費用集計。
- Cost Allocation Tags でカスタムタグ(Project / Env / Owner 等)別の集計。
- Forecast — 過去傾向から将来コストを予測。
- Reservation Recommendations — RI / Savings Plans 購入推奨。
- Cost Anomaly Detection — 機械学習で異常な費用増加を自動検知 + 通知。
使うべきパターン
- 個人プロジェクト — 月 5,000 円・10,000 円の予算を設定して 50% / 80% / 100% 通知。
- クライアント案件 — 月予算を取り決め、予算到達時に Slack 等へ通知し透明性を保つ。
- マルチアカウント — Organizations 統合で全アカウント横断の予算管理。
- 新サービス導入後の監視 — Cost Anomaly Detection で「予想外の課金」を即検知。
使わない方が良いパターン (≒ 設定しない言い訳)
- 「AWS の請求は気になっていない」 — 個人事業ならクレカ直撃する。必ず設定すべき。
- Budgets Action でリソース自動停止 — 強力だが本番停止リスクあり。dev 環境のみ推奨。
Terraform 最小サンプル(月予算 + Email 通知)
resource "aws_sns_topic" "billing" {
name = "billing-alerts"
}
resource "aws_sns_topic_subscription" "email" {
topic_arn = aws_sns_topic.billing.arn
protocol = "email"
endpoint = "contact@iigtn.com"
}
# 月 1万円 の予算
resource "aws_budgets_budget" "monthly" {
name = "monthly-cost-budget"
budget_type = "COST"
limit_amount = "10000"
limit_unit = "JPY"
time_unit = "MONTHLY"
cost_filter {
name = "Service"
values = ["Amazon Elastic Compute Cloud - Compute", "Amazon Simple Storage Service"]
}
notification {
comparison_operator = "GREATER_THAN"
threshold = 50
threshold_type = "PERCENTAGE"
notification_type = "ACTUAL"
subscriber_email_addresses = ["contact@iigtn.com"]
}
notification {
comparison_operator = "GREATER_THAN"
threshold = 80
threshold_type = "PERCENTAGE"
notification_type = "ACTUAL"
subscriber_email_addresses = ["contact@iigtn.com"]
}
notification {
comparison_operator = "GREATER_THAN"
threshold = 100
threshold_type = "PERCENTAGE"
notification_type = "FORECASTED" # 予測でも通知
subscriber_email_addresses = ["contact@iigtn.com"]
}
}
# Cost Anomaly Detection
resource "aws_ce_anomaly_monitor" "main" {
name = "service-monitor"
monitor_type = "DIMENSIONAL"
monitor_dimension = "SERVICE"
}
resource "aws_ce_anomaly_subscription" "main" {
name = "anomaly-alert"
frequency = "DAILY"
monitor_arn_list = [aws_ce_anomaly_monitor.main.arn]
subscriber {
type = "EMAIL"
address = "contact@iigtn.com"
}
threshold_expression {
dimension {
key = "ANOMALY_TOTAL_IMPACT_ABSOLUTE"
values = ["1000"] # 1000 円超の異常で通知
match_options = ["GREATER_THAN_OR_EQUAL"]
}
}
}
コスト最適化の基本パターン
- S3 Lifecycle — 30 日後 IA、90 日後 Glacier、365 日後 Deep Archive。
- CloudWatch Logs retention — 14 日 or 30 日。デフォルト無期限を放置しない。
- Lambda arm64 — x86 より 20% 安い。
- EC2 Graviton (t4g/c7g/r7g) — 同性能で 20% 安い。
- Spot Instance / Spot Fargate — バッチ系は最大 90% OFF。
- NAT Gateway 削減 — VPC Endpoint (Gateway 型は無料) で S3/DynamoDB アクセスは NAT 不要。
- 未アタッチ EBS / 未使用 EIP — 月額数百円の小コストだが、放置すると累積。
- Reserved Instances / Savings Plans — 1〜3 年コミットで最大 72% 割引。
用語集
- AWS Budgets
- 予算設定 + 閾値通知サービス。Cost / Usage / RI / Savings Plans の各種類あり。
- AWS Cost Explorer
- 実費を可視化する分析ツール。サービス / タグ / 期間で集計、Forecast 機能も。
- Cost Allocation Tags
- Project / Env / Owner 等のカスタムタグでコストを集計する仕組み。
- Cost Anomaly Detection
- 機械学習で「予想外の課金増加」を自動検知する機能。閾値ベース通知。
- Reserved Instances (RI)
- 1〜3 年コミットで EC2/RDS 等を最大 72% 割引で使える購入オプション。
- Savings Plans
- RI の柔軟版。インスタンス種類を限定せず時間単位の支払額をコミット。
- Forecasted Notification
- 「このまま行くと予算超過する」予測ベースの通知。早期警告に有効。
- Budgets Action
- 予算超過時に IAM Policy 切替や EC2 停止等を自動実行する機能。dev 環境向け。
シリーズ完結
これで「AWS 基本サービス入門」シリーズ全 15 記事が完結しました。 個別サービスの詳細は 現場コマンドリファレンス で、 実際の構築過程は 構築日誌 で深掘りしています。あわせてご覧ください。