本記事について
先日Azure Localを検証していた際に不具合により本来発生しないはずの課金が発生しました。
万が一に同様の事象が発生している方がいないかの注意喚起と、コストアラートの重要性を訴えるために経緯をまとめておきます。
皆さんもコストアラートを設定したり、コスト分析をチェックしたりして、想定外のコストが発生していないか、不要なリソースが残っていないか確認するように心がけましょう!
ネガティブ気味な内容になりますが終始サポートの方は丁寧に対応いただき解決しています。
自分の検証環境のコストもたまにはチェックしておくかーという感じで読んでいただければと思います。
Azure Localの課金不具合と返金までの対応
発生の経緯
私はAzure Localの新機能の検証や新しいバージョンのデプロイ手順確認のため、定期的に自宅のサーバでNestedのAzure Localをデプロイして検証しています。
Azure Localはデプロイ後60日間は評価期間があるためその期間であれば通常発生する$10×コア数/月の課金は発生しませんので、だいたいの検証であれば評価期間で検証できてしまうことが多いものです。
今回は5月末頃に新しいバージョンのデプロイ確認とAKSの検証でAzure Localをデプロイしました。
その後、やりたかった検証は終えて7月中旬にはAzure LocalのAzureからの登録解除をおこない、関連するAzureリソースの削除をおこなったのですが、なんと7月末から存在しなくなったAzure Localのリソースに対して課金が発生していました。
課金が発生し始めていたのは7/31からでした。偶然にも数日後の8/2にCost Managementをチェックしていたところこれを見つけました。
Microsoftサポートへの問い合わせ
まずはAzure Localの消し忘れがないかを確認したのですがAzureポータルにその姿はなく、ポータルを英語表記にしたり、プレビュー版ポータルを開いたり、CLI経由で確認してもリソースはありません。
Azure Localのドキュメントで同様の既知の不具合がないかや、Techcommunityのディスカッションも確認しましたが該当する情報はなく、既に使っていたサーバも破棄済みであり、ここで自分にできることはない・・・と思いサポートへ問い合わせることとしました。
普段の仕事の環境であれば有償のサポート契約で問い合わせができますが、今回は個人のサブスクリプションで有償サポートは契約していませんでした。
そのためどこまでサポートいただけるのかの不安を抱きつつ、無償のBasicサポートの範囲でも問い合わせ可能なコストに関する問い合わせとしてSRを発行しました。
問い合わせでは経緯と確認した内容の説明、不具合なのか私の削除手順に問題があったのか確認いただきコストの発生を停止してほしいこと、不具合であれば返金をお願いしたい旨を記載しました。
サポートチームの調査
サポートからは翌営業日にすぐ回答があり、まずMicrosoft側で確認した結果として、削除したはずのAzure LoalのリソースがMicrosoft側には残っているとの連絡を受けました。
その後はすぐに解決の見込みは立たず、海外の関連部署での調査が必要となりました。
その間も課金は発生し続けていたため、とりあえず課金を止める方法を質問しましたが原因が断定できていない状況もあり、案内いただける方法としてはサブスクリプション自体を取り消しするしかないとのことでした。
個人の検証環境とは言え、他のリソースもあったためさすがにそれは受け入れられず調査結果を待つこととしました。
返金についてはこの時点では判断できないとのことで、毎日1,000円弱のコスト発生を眺めながら徐々に胃をキリキリさせて過ごしていました。

解決へ
海外の関連部署での調査が始まってすぐ、8/9よりCost ManagementがAzure Localの課金を刻まなくなりました。
その後サポートからもMicrosoft側でリソースの停止をおこなったとの連絡をいただき、まずは一安心できる状況になりました。

原因調査と返金可否については継続調査、調整とのことでその後も連絡を待つ日々が続いたのですが、8/18に原因の詳細は未特定ながらもMicrosoft側の問題であることが確定し、返金対応いただけるとの連絡がありました。
既に7月分 (7/31分)は8月に請求が来て支払い済みでしたので、7月分の支払い済み分の返金と8月分の未請求分の返金or取り消しをいただけることになり、こちらは別SRを新規起票しての対応となりました。
さらに待つこと1-2週間、最終的に原因の特定と返金について以下の連絡をいただきました。
-
原因と対応
「Microsoftにおいても初めて確認された事象であった」、「製品固有の不具合によるものではなかった」、「お客様(私)の利用環境におけるデプロイや構成に問題があるわけでもなかった」ことをご説明いただきました。
以上の状況から「極めて稀なケースで発生する事象である」と結論づけられ、「対応策が講じられ今後のリリースにて反映される予定」であると対応方針もご報告いただいています。 -
返金対応
当初8月分は請求書発行前に取り消しをお願いしたい旨をお願いしていたのですが、最終的には請求後にクレジットカードへの返金処理をおこなうという対応になりました。
海外部署側で「同様の事象が他に発生していないことから、事前の請求取り消しは実施できない」との判断に至ったとのことで課金サポートチームにて上記対応いただけることとなりました。
このあたりの基準は私にはわかりませんが、莫大な金額でもなかったので戻ってくるならヨシと思っています。
なお、この記事執筆時点ではまだ請求書発行前のため返金処理はなされていない状況ですが問題ないでしょう。
課金発生のまとめ
時系列にまとめるとこんな感じでした。
レアケースだったこともあり調査に時間を要しましたが無事解決に至り安堵しています。
- 7/31 : Azure Localコスト発生開始
- 8/2 : コスト発生確認 & 問い合わせ開始
- 8/4 : 課金サポートチーム調査開始
- 8/6 : 海外関連部署の調査開始
- 8/8 : リソース停止
- 8/9 : 課金が完全停止
- 8/18 : Microsoft側の問題であることの確定 & 返金が決定 (返金用のSR開始)
- 9/2 : 詳細原因と対応策の連絡受領 & 返金対応方針決定の連絡受領
ちなみに発生した費用は以下でした(2ノードの16コア構成を約8日分)。
¥5,978.41円
(おまけ)推測
Azure Localは"12.2504.1001.20" (24H2版の2504リリース)以降、請求の仕様が変わったことがドキュメントに記載されています。
MS Learn | 12.2504.1001.20 以降の請求の変更
Azure Localのリソースから課金情報が生成されるようになり、クラスターがAzureに課金情報を送る仕組みではなくなったようです。
今回デプロイしていたバージョンはまさにこちらのバージョン以降のものであったため、仕様が変わったことでなんらかの不具合があったのかなーと推測しています。
レアケースとの判断いただいていますが、まだ出てきて間もないバージョンかつデプロイ後60日経たないと発見できない問題のため、Azure Localを検証利用されている方は念のためCost Managementをチェックしておくとよいかもしれません。
また、削除する際にはしっかりとUnregisterしてリソースをAzureから削除しましょう (少なくとも自分から見える範囲では・・・)。
Azure Cost Managementのアラート機能を活用しよう
Azureでは不測の課金が発生しないかチェックするためのアラートの仕組みが2つあります。
1つはあらかじめ決めておいた予算に対していくら使っているかの実績と予測に基づいたアラートです。
予算の期間は月、クォーター、年の単位で設定できます。
自動で上限突破しないようにしてくれるわけではありませんが、予測機能をうまく活用して事故が起きないように早めに検知できる便利機能です。
MS Learn | 予算を作成して管理する
一点、注意点として月単位で予算設定した際に、予測はあくまでその月の月末までで計算するという点があります。
例えば予算を3,000円/月で設定している状況で28日から500円/日の課金が発生してもその月の予測は500円×3日(28,29,30日)で3,000円に満たないため、アラートが発生しません。予算の3,000円超えのペースで日次の使用料金が発生してもその月は大丈夫と判断されてしまいます。
多少アラートメールが増えて煩わしくなりますが、予算に対して段階的にアラートが上がるようにしておくとよいでしょう。
もう1つのアラートの仕組みは異常アラートと呼ばれる普段の利用に対して増えた・減ったを検知してアラートしてくれるものです。
こちらは定常的にコストが一定の環境で不測の利用が無いかを検知する際に非常に便利です。
一方で検証環境では頻繁にリソース作成・削除があるためあまり向かないかもしれません。
MS Learn | コストの異常と予測市内変化を特定する
まとめ
長らくAzure Localを利用してきて初めてのケースかつ、不具合による課金発生の体験も初めてであり大変焦りましたがサポートチームに丁寧に対応いただき無事解決しました。
未だに若干次の検証への不安はありますが、再発は原則無いと言っていただいているのでこれからも楽しいAzure Localの検証ライフを送りたいと思います。
