Azureで予算を設定したのに課金が続くのは、設定ミスとは限りません。Microsoft Cost ManagementのBudget(予算)は、支出を監視して通知する機能であり、課金額が予算に達した時点でリソースを自動停止する機能ではないためです。
また、Azureの費用・使用量データは通常8~24時間後に利用可能になり、予算は24時間ごとに評価されます。通知メールも評価完了後に送信されるため、予算額を超えた瞬間に通知されたり、課金が遮断されたりする仕組みではありません。([Microsoft Learn][1])
この記事では、Azureの予算を設定しても課金が続く理由、通知が遅れる仕組み、確認すべき設定項目、自動停止を実装する場合の考え方を具体的に解説します。
Azureの予算を設定しても課金が止まらない理由
Azure Cost Managementの予算は、契約上の課金上限ではありません。設定した金額と実際の支出を比較し、指定した割合に達したときに担当者へ知らせるための機能です。
予算の100%に達しても、Azure Virtual Machines、Azure App Service、ストレージ、データベースなどのリソースはそのまま稼働します。リソースの消費も停止されません。([Microsoft Learn][1])
| 項目 | AzureのBudgetでできること |
|---|---|
| 支出状況の監視 | 設定した予算額と実際のコストを比較する |
| 実績通知 | 実際の支出が指定した割合に達したら通知する |
| 予測通知 | 現在の利用傾向から予算超過が予測されたら通知する |
| Action Group連携 | 条件到達時に別の通知や自動処理を呼び出す |
| リソースの自動停止 | Budget単体では実行しない |
| 課金の強制遮断 | 実行しない |
| リアルタイム通知 | 実行しない |
「月額1万円の予算を設定したから、1万円で課金が止まる」と考えるのは危険です。実際には、1万円へ到達したことをAzureが評価し、通知するまでの間もリソースは利用され続けます。
通知には費用データの反映と予算評価による遅延がある
Azureの予算通知は、リアルタイムのメーターとして動作するわけではありません。費用データの反映と予算評価を段階的に行います。
| 処理 | タイミングの目安 |
|---|---|
| Azureリソースを利用する | 継続的に使用量が発生する |
| 費用・使用量データが利用可能になる | 通常8~24時間後 |
| 予算と費用データを比較する | 24時間ごと |
| 閾値到達後にメールを送信する | 通常は評価から1時間以内 |
費用・使用量データが反映された直後に必ず予算評価が行われるとは限りません。そのため、実際の支出が予算額を超えた時刻と、通知メールが届く時刻には差が生じます。([Microsoft Learn][1])
たとえば、午前中に大量のリソースを作成して費用が急増しても、その費用がCost Managementへ反映されるのは数時間後になる可能性があります。さらに、次回の予算評価まで通知されない場合があります。
したがって、次のような運用には向いていません。
- 予算額に達した瞬間に課金を完全停止したい
- 数分単位で費用超過を検知したい
- 予算額を絶対に1円も超過したくない
- 一時的な大量利用をリアルタイムで遮断したい
Budgetは、費用管理のための監視・通知手段として利用し、厳密な課金上限とは分けて考える必要があります。
まず確認したいAzure予算の設定項目
予算を設定したのに想定どおり通知されない場合は、Azureポータルで対象のBudgetを開き、設定内容を確認します。
Subscription単位の予算を確認する
Subscription全体を監視する場合は、次の順に開きます。
- Azureポータルへサインインする
- 「Subscriptions」を開く
- 対象のSubscriptionを選択する
- 「Budgets」を開く
- 既存の予算を選択するか、「Add」で追加する
Resource group単位の予算を確認する
特定のResource groupだけを監視する場合は、次の順に開きます。
- Azureポータルで「Resource groups」を開く
- 対象のResource groupを選択する
- 「Budgets」を開く
- 既存の予算を選択するか、「Add」で追加する
予算の作成画面では、Scope、Filter、リセット期間、期限、予算額、通知条件を確認します。([Microsoft Learn][1])
Scopeが正しいか確認する
Scopeは、予算で監視する範囲です。
Resource group単位で作成したBudgetは、原則としてそのResource group内を対象とします。別のResource groupに作成されたリソースや、別のSubscriptionで発生した費用は、そのBudgetでは監視できません。
特に次のケースではScopeの間違いが起きやすくなります。
- 検証用と本番用でSubscriptionを分けている
- 同じ名前に近いResource groupが複数ある
- リソースを別のResource groupへ移動した
- Subscription全体を監視したつもりでResource group予算を作成した
- 複数Subscriptionを利用している
Azureポータル上部に表示されるScopeを確認し、実際に費用が発生している範囲と一致しているかを確認してください。
Filterで対象を絞りすぎていないか確認する
BudgetにはFilterを設定できます。たとえば、Subscription内の特定Resource groupや、Virtual Machinesなど特定サービスの費用だけを監視できます。([Microsoft Learn][1])
Filterは便利ですが、設定内容によっては監視対象から費用が外れます。
| Filterの例 | 監視される範囲 |
|---|---|
| Filterなし | Scope内の対象費用全体 |
| Service nameを指定 | 指定したサービスの費用 |
| Resource groupを指定 | 指定したResource groupの費用 |
| 複数条件を指定 | 条件に一致する費用 |
たとえば、Virtual MachinesだけをFilterで指定している場合、ストレージやネットワークなど別サービスの費用は同じBudgetに含まれない可能性があります。
予算画面の金額とCost Analysisの合計が合わないときは、同じScope、期間、Filter条件で比較してください。
リセット期間を確認する
Budgetでは、月次、四半期、年次などのリセット期間を指定できます。
リセット期間の開始時点になると、予算評価に使用する対象期間が切り替わります。月次Budgetであれば、新しい期間の開始後は当月分の費用を基準に評価します。
また、一部の契約形態では、カレンダー月ではなく請求期間に合わせた設定も選択できます。Azureの請求期間と予算のリセット期間が一致していない場合、請求書の金額とBudget画面の金額を単純に比較できないことがあります。([Microsoft Learn][1])
有効期限を確認する
Budgetには有効期限があります。有効期限を過ぎると費用評価が行われなくなり、期限切れのBudgetは自動的に削除されます。([Microsoft Learn][1])
以前は通知されていたのに突然通知が来なくなった場合は、Budgetの期限を確認してください。
年度ごとにBudgetを作成している場合は、年度末や年末に期限切れになりやすいため、定期的な見直しが必要です。
予算額が想定どおりか確認する
予算額は、通知条件を計算する基準です。
たとえば、月額予算を100,000円、実績通知を80%に設定した場合、実績コストが80,000円に達したことをAzureが評価した時点で通知対象になります。
ただし、通知が届くまでに評価遅延があるため、メールを受け取った時点では80,000円を超えている可能性があります。
ActualとForecastedでは通知の意味が異なる
AzureのBudgetでは、主にActualとForecastedの2種類の通知を設定できます。
| 通知タイプ | 判定対象 | 主な用途 |
|---|---|---|
| Actual | 実際に発生した費用 | 実績として予算へ近づいたことを確認する |
| Forecasted | 利用傾向から予測された費用 | 将来の予算超過を早めに検知する |
Actualは実際に発生した費用を通知する
Actualは、実際の累積コストと予算額を比較する通知です。
たとえば、Actualを80%に設定した場合、実際の費用が予算の80%へ到達したことが評価されたときに通知されます。
ただし、費用データの反映とBudgetの評価には遅延があります。Actualを100%に設定しても、予算額を超える前に必ず通知されるわけではありません。
Forecastedは予算超過の可能性を早めに通知する
Forecastedは、現在の支出傾向をもとに、期間終了時点の費用を予測して判定します。
実績がまだ予算額へ到達していなくても、現在のペースで利用を続けると予算を超えると予測された場合に通知されます。Actualよりも早い段階で対応を始めるための通知です。([Microsoft Learn][1])
たとえば、月額100,000円の予算に対して、月の前半で60,000円を利用している場合、実績はまだ60%です。しかし、同じ利用ペースが続くと月末に100,000円を超えると予測されれば、Forecasted通知の条件に該当する可能性があります。
ActualとForecastedを併用する
実務では、ActualだけでなくForecastedも設定すると、予算超過へ早めに対応できます。
次の設定は一例です。
| 通知条件の例 | 対応内容 |
|---|---|
| Forecasted 80% | 利用傾向や急増したサービスを確認する |
| Actual 80% | 不要なリソースや高額な構成を確認する |
| Actual 90% | 任意停止できる検証環境を整理する |
| Actual 100% | 管理者へ通知し、自動処理の結果も確認する |
適切な割合は、予算額、リソースの増加速度、業務上停止できる範囲によって異なります。上記の割合をそのまま使用するのではなく、通知から対応完了までに必要な時間を考慮して決めてください。
予算通知が届かないときの確認ポイント
Budgetを設定したのにメールが届かない場合は、次の順番で確認します。
通知タイプを確認する
ActualとForecastedを取り違えていないか確認してください。
Forecastedだけを設定している場合、実績が予算額に到達したことを直接条件とするActual通知にはなりません。反対に、Actualだけを設定している場合は、将来の予算超過予測では通知されません。
閾値と現在の割合を確認する
Budgetの通知条件は、予算額に対する割合で指定します。
予算額100,000円に対して閾値を100%に設定している場合、80,000円の時点ではActual通知の条件に達していません。
Azureでは1つのBudgetに複数の閾値を設定できるため、100%通知だけではなく、早めの閾値も設定しておくと対応しやすくなります。([Microsoft Learn][1])
費用データの反映を待つ
利用直後の費用は、Cost Managementへすぐに表示されるとは限りません。通常8~24時間の反映時間と、24時間ごとの予算評価を考慮してください。([Microsoft Learn][1])
リソースを作成した直後にBudget画面を確認し、金額が増えていないから無料だと判断するのは危険です。
通知先メールアドレスを確認する
Budgetには、少なくとも1つの通知閾値と通知先メールアドレスが必要です。メールアドレスの入力間違い、廃止済みアドレス、共有メールボックスの受信制限がないか確認してください。([Microsoft Learn][1])
迷惑メールと受信許可設定を確認する
Budget通知はMicrosoftの送信元から届きます。Microsoftは、Budget通知メールを受信するために[email protected]を承認済み送信者へ追加するよう案内しています。([Microsoft Learn][1])
組織のメールシステムで外部メールを制限している場合は、Microsoft 365やメールゲートウェイ側の隔離状況も確認してください。
Cost alertsを確認する
通知メールだけでなく、AzureポータルのCost alertsも確認します。Budgetの通知条件に該当してアラートが生成されると、Cost Managementのアラート画面から確認できます。([Microsoft Learn][2])
Cost alertsに記録があるのにメールが届いていない場合は、Budgetの評価ではなくメール配信側の設定に問題がある可能性があります。
Action Groupを接続しても停止処理は別途必要
SubscriptionまたはResource groupをScopeとするBudgetでは、Azure MonitorのAction Groupを接続できます。Action Groupは、Budgetの閾値に達したときに通知や別の処理を呼び出すための仕組みです。([Microsoft Learn][1])
ただし、Action Groupを選択するだけで、すべてのAzureリソースが自動停止するわけではありません。
自動停止を実装する場合は、たとえば次のような構成を別途設計します。
- Budgetが閾値到達を検知する
- Action Groupを呼び出す
- Action GroupからLogic AppsやWebhookを実行する
- Azure Automation Runbookなどを呼び出す
- 指定したリソースを停止する
- 実行結果を管理者へ通知する
Microsoftの公式シナリオでも、BudgetからAction Groupを呼び出し、Logic AppとAzure Automation Runbookを組み合わせて仮想マシンを停止する構成が紹介されています。([Microsoft Learn][3])
自動停止を実装するときの注意点
Budget連携でリソースを停止する場合も、予算額を厳密な課金上限として扱うことはできません。
Budgetの評価には費用データの反映時間があり、自動処理はBudgetの評価後に開始されるためです。
また、次の項目を事前に設計する必要があります。
- 停止してよいSubscriptionやResource group
- 停止対象となるリソース
- 本番環境を自動停止の対象外にする条件
- Action Groupから実行処理を呼び出す権限
- 自動処理に失敗した場合の通知
- 同じ通知が複数回発生した場合の処理
- 停止後に再開する条件と担当者
- 自動処理自体に発生する費用
最初から本番環境を自動停止するのではなく、検証環境や一時利用環境など、停止による影響が限定される範囲から試すのが安全です。公式シナリオも、非クリティカルなワークロードを対象とする例として説明されています。([Microsoft Learn][3])
課金超過を抑える実践的な予算設計
Azureの費用超過を抑えるには、Budgetを1つの通知だけで運用するのではなく、複数段階に分けて管理します。
Forecastedで早期に気付く
月末の予算超過が予測された段階で、担当者へ通知します。
この段階ではリソースを停止せず、Cost Analysisで次の項目を確認します。
- 急に費用が増えたサービス
- 作成されたばかりのリソース
- 想定より大きなSKUやサイズ
- 検証後も残っているリソース
- 通常とは異なるResource groupの増加
Actualで対応を開始する
Actualが一定割合へ到達したら、不要な検証環境の停止や構成の見直しを開始します。
通知を受けてから担当者が確認するまでに時間がかかる組織では、100%ではなく余裕を持った割合に設定します。
重要度の低い環境だけ自動処理する
検証環境や期間限定環境では、Action Groupと自動処理を組み合わせる方法があります。
一方、本番環境は一律停止せず、管理者への緊急通知や承認を挟む設計が適しています。
予算額と実際の許容上限を同じにしない
実際に許容できる上限が100,000円の場合、100,000円へ到達してから初めて対応する設計では、評価遅延中に超過する可能性があります。
Forecasted通知と、100%より前のActual通知を設定し、対応に必要な時間を確保してください。
Azureの予算設定を見直すチェックリスト
Azureの予算を設定したのに課金が続く場合は、次の項目を順番に確認してください。
- Budgetは課金停止機能ではなく、監視・通知機能である
- 対象のSubscriptionまたはResource groupが正しい
- ServiceなどのFilterで費用を除外していない
- リセット期間が想定する請求期間と合っている
- Budgetの有効期限が切れていない
- 予算額と通知割合が正しく設定されている
- ActualとForecastedの違いを理解して設定している
- 通知先メールアドレスが正しい
- 迷惑メールや組織の受信制限を確認した
- 費用データの反映と24時間ごとの評価を考慮した
- 自動停止が必要な場合はAction Group以降の処理を構築した
- 自動処理を本番へ適用する前に検証環境で確認した
AzureのBudgetは、予算超過を完全に防ぐ壁ではなく、支出の変化へ気付くためのセンサーです。まずは対象Budgetを開き、Scope、Filter、リセット期間、期限、予算額、ActualとForecastedの通知条件を確認してください。
課金を抑えるための自動処理が必要な場合は、Budget単体へ期待するのではなく、Action Group、Logic Apps、Azure Automationなどを組み合わせ、停止対象と失敗時の対応まで含めて設計することが重要です。
[1]: https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets “Tutorial – Create and manage budgets – Microsoft Cost Management | Microsoft Learn”
[2]: https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-mgt-alerts-monitor-usage-spending “Monitor usage and spending with cost alerts in Cost Management – Microsoft Cost Management | Microsoft Learn”
[3]: https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/cost-management-budget-scenario “Azure billing and cost management budget scenario – Microsoft Cost Management | Microsoft Learn”

コメント