Contents
Billing アラートの有効化手順
| 手順 | 操作内容 |
|---|---|
| 1 | AWS マネジメントコンソール → CloudWatch を開く |
| 2 | 左サイドメニューの Billing(※2024 年 UI)をクリック |
| 3 | 「請求アラートを有効にする」スイッチを ON にし、Enable を確定 |
| 4 | 確認ダイアログで Confirm → EstimatedCharges メトリクスの収集が開始 |
ポイント:Billing タブは CloudWatch のサブメニューです。Cost Management コンソールから直接有効化することはできません。
EstimatedCharges メトリクスは停止できないか?
- 公式ドキュメント(Amazon CloudWatch Billing Metrics – Amazon Web Services)では、
EstimatedChargesは 「有効化したら自動で 1 時間ごとに取得される」 と記載されており、無効化のオプションは提供されていません。 - 現在(2024 年 12 月)の実装では データ収集を停止する手段がありません が、アラーム自体は削除・編集が自由に行えます。
対策:不要になったら CloudWatch の Alarms タブから対象アラームを削除し、コストレポートだけは残す形で運用してください。
AWS Budgets で予算と通知を作成する
手順概要(図表付き)
|
1 2 3 4 5 6 7 8 9 10 |
flowchart TD A[Cost Management コンソール] --> B[Budgets タブ] B --> C[Create budget ボタン] C --> D{テンプレート選択} D -->|カスタム| E[予算詳細入力] D -->|テンプレート| F[自動設定項目] E --> G[通知設定 (SNS)] F --> G G --> H[Create で完了] |
- Cost Management → Budgets → Create budget
- 「予算タイプ」から カスタムコスト予算、またはテンプレート(例:月次固定)を選択。
- 期間・金額 を設定し、通貨単位(USD/JPY など)を確認。
- 通知 セクションで以下を構成
- 実績閾値(ACTUAL)と 予測閾値(FORECASTED)をそれぞれパーセンテージまたは金額で設定
- 通知先として SNS トピック を選択(メール/Slack など)
| 閾値種別 | 実績 (ACTUAL) | 予測 (FORECASTED) |
|---|---|---|
| 説明 | 請求書が確定した金額が閾値を超えたとき | AWS が推測する月末請求額が閾値を超える見込みの時 |
| 典型的な設定例 | 80 %(¥8,000) | 90 %(¥9,000) |
SNS トピック作成手順(簡易)
|
1 2 3 4 5 6 7 |
aws sns create-topic --name aws-budgets-alerts # Email 登録例 aws sns subscribe \ --topic-arn arn:aws:sns:ap-northeast-1:123456789012:aws-budgets-alerts \ --protocol email \ --notification-endpoint finance@example.com |
Slack 連携:
HTTPSプロトコルで Slack の Incoming Webhook URL をサブスクライブします。
IAM 最小権限ロールの設計例
権限名称の統一(2024 年時点)
| 古い表記 | 現行表記 |
|---|---|
billing:ViewBilling |
aws-portal:ViewBilling |
注意:
aws-portal:ViewBillingが最新かつ唯一の請求閲覧権限です。古いbilling:*系は非推奨です。
1. 読み取り専用ロール(CostMonitoringReadOnly)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aws-portal:ViewBilling", "budgets:Describe*", "cloudwatch:GetMetricData", "cloudwatch:ListMetrics" ], "Resource": "*" } ] } |
2. 管理ロール(BudgetAdmin)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aws-portal:ViewBilling", "budgets:*", // 必要に応じて除外可 "sns:Publish" ], "Resource": "*" } ] } |
3. 通知専用ロール(AlertPublisher)
|
1 2 3 4 5 6 7 8 9 10 11 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sns:Publish"], "Resource": "arn:aws:sns:*:*:aws-budgets-alerts" } ] } |
| ロール名 | 主な権限 | 想定利用者 |
|---|---|---|
CostMonitoringReadOnly |
請求閲覧・予算参照 | 財務担当(閲覧のみ) |
BudgetAdmin |
予算作成/編集 + SNS 発行 | DevOps リーダー、コストオフィサー |
AlertPublisher |
SNS に対する Publish のみ | CI/CD パイプラインや自動スクリプト |
最新 UI(2024 年)での画面遷移図
| メニュー | 主な機能 |
|---|---|
| Dashboard | 月次実績・予測・残予算をグラフ表示 |
| Budgets | 予算作成・編集・削除、通知設定 |
| Billing Metrics | EstimatedCharges などのメトリクス確認 |
| Cost Explorer | 詳細なサービス別コスト分析 |
Tips:右上に常時表示されるフィルタで Account、Region、Service を切り替えると、マルチアカウント環境でも瞬時に絞り込みが可能です。
自動化・運用ベストプラクティス
1. AWS CLI で予算を作成する例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
aws budgets create-budget \ --account-id 123456789012 \ --budget '{ "BudgetName":"monthly-prod", "BudgetLimit":{"Amount":"10000","Unit":"USD"}, "TimeUnit":"MONTHLY", "BudgetType":"COST" }' \ --notifications-with-subscribers '[ { "Notification":{ "NotificationType":"ACTUAL", "ComparisonOperator":"GREATER_THAN", "Threshold":80, "ThresholdType":"PERCENTAGE" }, "Subscribers":[{ "SubscriptionType":"SNS", "Address":"arn:aws:sns:ap-northeast-1:123456789012:aws-budgets-alerts" }] } ]' |
2. boto3(Python)スニペット
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import boto3, json client = boto3.client('budgets') resp = client.create_budget( AccountId='123456789012', Budget={ 'BudgetName': 'monthly-dev', 'BudgetLimit': {'Amount': '5000', 'Unit': 'USD'}, 'TimeUnit': 'MONTHLY', 'BudgetType': 'COST' }, NotificationsWithSubscribers=[ { 'Notification': { 'NotificationType': 'FORECASTED', 'ComparisonOperator': 'GREATER_THAN', 'Threshold': 90, 'ThresholdType': 'PERCENTAGE' }, 'Subscribers': [{ 'SubscriptionType': 'SNS', 'Address': 'arn:aws:sns:ap-northeast-1:123456789012:aws-budgets-alerts' }] } ] ) print(json.dumps(resp, indent=2)) |
3. Terraform で一括管理
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
resource "aws_sns_topic" "budget_alert" { name = "aws-budgets-alerts" } resource "aws_budgets_budget" "monthly_prod" { name = "monthly-prod" budget_type = "COST" limit_amount = "10000" limit_unit = "USD" time_unit = "MONTHLY" cost_filters = { Service = ["AmazonEC2"] } notification { comparison_operator = "GREATER_THAN" threshold = 80 threshold_type = "PERCENTAGE" notification_type = "ACTUAL" subscriber_sns_topic_arns = [aws_sns_topic.budget_alert.arn] subscriber_email_addresses = ["finance@example.com"] } } |
運用上のヒント
| 項目 | 推奨設定 |
|---|---|
| 変更管理 | 予算やアラームはコード(CLI / Terraform)で管理し、Pull Request でレビューする。 |
| ログ保持期間 | AWS は過去 12 カ月分の実績・予測データを自動保管。必要に応じて Cost Explorer のエクスポート機能で CSV に保存可。 |
| アラームのテスト | aws cloudwatch put-metric-alarm でテスト用閾値(例:0 %)を作成し、SNS が届くか確認する。 |
よくある質問(FAQ)
| 質問 | 回答 |
|---|---|
| Billing アラートは無効にできませんか? | 現行 API では停止オプションが提供されていないため、アラーム削除で代替します。公式ドキュメントの記載を参照してください(上記リンク)。 |
aws-portal:ViewBilling が足りない場合は? |
請求書の詳細閲覧には aws-portal:ViewUsage も併せて付与すると、使用量レポートが見られるようになります。 |
| 予算を削除した後でも過去データは残りますか? | はい。削除しても実績・予測データは最大 12 カ月保持され、Cost Explorer から参照可能です。 |
| 複数アカウントで同一テンプレートを使うには? | AWS Organizations の Consolidated Billing を有効にし、組織単位で SNS トピックと予算テンプレートを共有すると管理が楽になります。 |
まとめ
- Billing アラートは CloudWatch → Billing タブで有効化。有効化後は
EstimatedChargesが自動取得され、無効化はできません(公式に記載あり)。 - AWS Budgets ではカスタム予算・テンプレートを組み合わせ、実績と予測の両方で閾値を設定し、SNS 経由でメール/Slack に通知できます。
- IAM は最小権限ロール(
aws-portal:ViewBilling、budgets:*、sns:Publish)に統一し、古い権限名は使用しないようにします。 - 最新 UI(2024 年版 Cost Management) の画面構成を把握すれば、手順ミスが大幅に減ります。
- 自動化は CLI / boto3 / Terraform で実装し、コードレビューと CI に組み込むことでヒューマンエラーを防止します。
これらのベストプラクティスを導入すれば、AWS のコスト超過リスクを事前に検知でき、組織全体で透明性の高いクラウド費用管理が実現できます。