ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。

Visual Studio サブスクリプションに付属する Azure サブスクリプションが勝手に無効にされた(と思った)話

f:id:masatsuna:20210419115058p:plain

本記事において、悪いのは私であってマイクロソフト社が悪いのではありません。 こんな使い方をしてしまった結果、マイクロソフト社まで問い合わせないと謎が解けなかったよ、という私のダメな記録として残しておきます。

何が起きたか

とある月に、私は Visual Studio サブスクリプションに付属している Azure クレジットを使い切ってしまい、月の途中で無効扱いになってしまいました。 Visual Studio サブスクリプションを契約すると、エディションに応じて Azure のクレジットが付与され、その枠内なら無償で使い放題になります。 この枠を突破してしまうと、 Azure サブスクリプションが無効状態になります。

この無効状態を解除するためには、 Azure サブスクリプションにクレジットカード情報を登録して、制限を解除し課金するように設定するか、 Azure サブスクリプションの月の変わり目まで、再度 Azure サブスクリプションが有効化されるのを待つか、の 2 択です。 私は課金したくなかったので、無効のまま Azure サブスクリプションが再度有効化されるのを待っていました。

待望の月の変わり目がやってきて、 Azure サブスクリプションが再度有効になりました。 もともと無効になってしまったのは、 Cosmos DB の検証をしていて、無償で割り当てられた Azure クレジットを使ってしまっていたからでした。 一刻も早くこの状態をもとに戻さないと、また月の途中で無効状態にされてしまう恐れがありました。

年度頭ということもあって、月の変わり目から 1 日、何も作業できずにいたのですが、翌日、再度 Azure サブスクリプションが無効になった、とのメールが。。。 さすがに 1 日で Azure クレジットを使い切るような設定はしていません。 そして Azure ポータルでトータルコストを見ても、無償枠までまだまだ余裕がある状態でした。

無償枠を上限突破してしまって、 Azure サブスクリプションが無効になるケースは何度も遭遇していますが、今回のパターンは初めてで、何が起こっているのか全く分かりませんでした。

Visual Studio サブスクリプションの状態を確認

とりえあず Visual Studio サブスクリプションんがおかしなことになっていないか確認しました。 過去に何度か社内の管理者がオペミスをして、勝手に私の Visual Studio サブスクリプションを削除されたことがありまして、真っ先に疑いました。

ところが登録状態は問題なく、以下のポータルにログインしても問題なく Visual Studio サブスクリプションは認識されています。

https://my.visualstudio.com/

これで Visual Studio サブスクリプションが犯人である説は消えました。

Azure ポータルから問い合わせてみる

課金関連の問い合わせは、 Azure ポータルから無償で行うことができます。 Azure ポータルの以下のメニューから、問い合わせを起票しました。

f:id:masatsuna:20210419111342p:plain

f:id:masatsuna:20210419111458p:plain

ところが、どうも会話がかみ合いません。 サポート窓口の人が言うには、 Azure DevOps が原因だ、と。 具体的に何が問題になっているかは教えてくれなかったのです。 確かに Azure DevOps は使っていますが、課金されるような使い方をしたつもりは一切ありませんでした。

真犯人は。。。

結論から言うとチームメンバーのオペミスが原因でした。 チームで利用している Azure DevOps 組織は、 Visual Studio サブスクリプションの特典で取得した私の Azure サブスクリプションに対して紐づけられていました。 その Azure DevOps 組織には、チーム内のメンバー数名を管理者として登録していました。 その人が、 Azure DevOps のユーザーを登録する際、 Basic レベルのメンバーを 6 名登録してしまい、私の Azure サブスクリプションに対して課金が発生した、というのが真相でした。

Azure DevOps の課金は、 Visual Studio サブスクリプションで与えられる無償の Azure クレジットを支払いに使うことができません。 そのため、 Azure サブスクリプションに対してリアルな課金が発生します。 しかし、 Azure サブスクリプションにクレジットカードが登録されていなかったためリアルな課金ができず、 Azure クレジットが余っているように見えるのに無効扱いにされてしまったのです。

その後、 Azure ポータルからこの月限定でクレジットカード決済できるように設定し、難を逃れました。 この月限定で課金、というのが設定できるのは非常にうれしいですね。

まとめ

私の視点で見ると、突如 Azure サブスクリプションが無効にされたように見えたため、とても混乱したお話でした。 しかも無効にされた理由が自分では全く把握できなかったんですよね。 Azure DevOps のユーザーの登録状況や、ビルドマシンの使用状況など、課金の発生するような使い方をされていないか、随時確認するようにしないとダメですね。 こんなアホなことやらかすのは私くらいでしょうが、ここに供養しておきます。

ある程度の規模の Azure DevOps を運用するなら、リアル課金できる Azure サブスクリプションに Azure DevOps の課金設定を変更しておかないと怖いですね。 手順は以下に記載がありますので参考までにどうぞ。

docs.microsoft.com

この件でマイクロソフトさんからいくつか聞いたので箇条書きで残しておきます。 ここに示すのは 2021 年 4 月に私が聞いた情報です。 将来変わるかもしれませんし、正しくないかもしれません。 あまり鵜吞みにしないようにしてください。

  • 上記の手順に従って Azure サブスクリプションの変更する場合、変更先の Azure サブスクリプションの Azure AD に、 Azure DevOps 上のユーザーを登録する必要があるが、課金先の Azure サブスクリプションの変更を行った後で、そのユーザーを Azure AD から削除しても問題なく課金はされる( Azure ポータル上 Azure DevOps のリソースが存在すれば、そこが課金対象のサブスクリプションになる)
  • 上記の手順をスキップして、マイクロソフト社に、 Azure DevOps の課金対象の Azure サブスクリプションを変更するよう依頼することはできない(必ず上記のオペレーションでユーザーに実施してもらう)
  • 上記の通り変更する場合も、 Azure DevOps の組織を Azure AD と接続する必要はない
  • Azure DevOps が課金できない状態だと、 Azure DevOps も読み取り専用状態にさせられる(と言われたが、実際にはされていなかったため真偽不明)