Azure サブスクリプションが無効になって App Service 関連リソースをサブスクリプション間移動した話

このブログは Azure App Service で運用してるんですが、先日なんとこの Azure サブスクリプションが無効になってしまいました orz
無効になった理由は(はづかしいから)とりあえずおいておくとして、Azure サブスクリプションはいろんな理由で無効になりますので皆さん注意しましょう。

サブスクリプションが無効になりますと、当然のことながらそのサブスクリプションにあるリソースが全部無効になります。その場で急に削除されたりすることはないものの、ただそこに「ある」だけで何もできません。App Service が無効になれば、あたりまえのようにホストしてる web サイトへは接続ができなくなります。404 not found だな。やっちまったよ orz この前カスタム ドメインを 1 年更新したばっかりなのに…

こうなってしまったら、再度サブスクリプションを有効化するしかありません。今回は、単に有効化して継続利用ではなく、別のサブスクリプションに移動して動かしたかったので、リソース移動を試みました。

作業の順番はこんなかんじ

  • なにはなくとも、サブスクリプションを再度有効化
    私のケースでは自分でサブスクリプションの再有効化ができず、Azure 課金サポートにお世話になりました。ほんとはこんな状態になるまでほっとくのが悪い orz 無効になる前にやれることがあったはずなのだが… とか言ってももう遅い。
  • 有効化されたらまずは App Service プランを D1 プランに
    これがまずかった。少しでも金をケチろうとプラン変更したもんだから、D1 プランではサポートされない証明書のバインド (+ App Service マネージド証明書) を削除せざるを得なかったっす。
  • 移動先の Azure サブスクリプションが信頼する Azure AD へ移動元の Azure サブスクリプションをディレクトリ移動
    同じ Azure AD を信頼してるサブスクリプション間でないとリソースの移動ができないので、そこんとこ整理。これまでばらばらの Azure AD にサブスクリプションが散らばっていたのでいい機会ではある。結果的に今回無効になったサブスクリプションはリソース移動が終わったら再度無効化して捨てるんだけどね…
  • 関連リソースをまとめて「リソース移動」
    ここにも落とし穴が… Azure リソースには「非表示」のリソースがいくつかあり、既定ではリソースの一覧に表示されてきません。表示されてるリソースにだけチェックを入れて移動するんだけど、事前のチェックでめっちゃ失敗する。必要なリソースを一緒に移動しろと。
    結果的に「非表示」になってるリソースにチェックを入れてなかったのが原因ではあったんだが、気づけなかったのが ↑ D1 プランへ変更した影響で削除した証明書。証明書のバインドは削除したからてっきりそれですべて済んでいるものだと思ったら、こいつが非表示のリソースとして残っていたのさ orz
    エラーメッセージには一緒に移動しなきゃいけないリソースとして証明書関連リソースの名前が出ていたんだけど、こいつが全部非表示だったせいで一覧には見えないし、Azure が嘘ついてるのかと思ってた…そんなわけなかった…
    でもでも、バインド削除したんだし、もう関連してないじゃん?移動しなくても別にいいじゃん??と思っていたが、数時間放置後に再度試したらエラーが出なくなっていた……… どうも、バインド削除しても「関係ないです」判定になるまで時間を要する見込みだ………落とし穴が多いぜ…
  • リソース移動、ぶじ完了!!!!
    事前チェックを通過したら、あとは非常にスムーズ。当たり前か。リソース移動はすぐに完了し、移動前も(サブスクリプションが有効化されたから全リソース全部稼働してる)移動後も、このブログの稼働状況にはまったく問題なし。すばらしい。リソース移動万歳。

まとめ:リソース移動する直前に設定変更しちゃだめ。 みんな覚えておこうね!!