うっかり失効の Azure リソース の復元方法

# はじめに
有効期限のある Azure サブスクリプション をうっかり失効してしまった時に、新たな サブスクリプション になるべく手早く復元する方法を紹介したいと思います。

下段が **失効**（無効）になったサブスクリプション です。このサブスクリプション内にあるリソースを、上段の有効なサブスクリプション内で再作成する方法です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f6af9a54-6c03-b046-1046-bc68a39a4061.png)

上記のサブスクリプション名が Azure Pass スポンサープランとなっていますが、これは、Microsoft 認定トレーナーの人が利用したり、Microsoft の資格研修に参加した際に提供されることがあるサブスクリプションです。

こういった、一時的なサブスクリプションには利用期間があり、うっかり失効してしまう可能性が高いです。

:::note warn
**注意点**
なお、この方法は ARM テンプレートを使って リソースの雛形 を元に 新規作成をし直すため、データの中身は復元されません。パブリック IP アドレスも 新たなものが割り当てられますので、ご注意ください。
:::

:::note info
**ポイント**
注意点に書かれた制約があるので、たいしたことが無い話かと言うとそうでもありません。

仮想ネットワーク、ルートテープル、Azure Firewall などなど、構成が同一ならば 同じ仕事をするリソースは、完全復元が期待できます。

非常に 効率的に 失効したサブスク内のリソースを 再作成することができますので、一見の価値はあると思います。
:::

本記事のタイトルこそ、「うっかり失効」の際に活用できるネタですが、この方法をつかって、単に 同じリソースを 他のサブスクリプションでもデプロイしたい・・とか、リソースのバックアップをテキストで保管しておきたい・・というニーズにも活用できます。

Azure Pass スポンサープラン って何だ？・・と思った人は、以下の記事も参照してみてください。

https://qiita.com/carol0226/items/1a78d9c09857aa96a9c9

# 失効してしまうと出来ない事 とは？
失効してしまうと、サブスクリプション を跨いだ リソースグループ の 移動 が出来なくなります。

サブスクリプションが **有効** であれば、リソースグループ全体を、以下の **別のサブスクリプションに移動する** の機能を使って、移動できます。この方法であれば、ディスク や ストレージ の中身も一緒に移動されるので、まったく同一の環境を維持できます。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ad9d8889-ac39-adac-445e-f6c443a65474.png)

**公開情報**

https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/move-resource-group-and-subscription?wt.mc_id=mvp_407731#use-the-portal

サブスクリプションが **無効** の場合は、上記の公開情報の手順を進めても、以下でエラーが発生して、移動することができません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9272158f-c28a-8fd2-a873-97e12cb7b0c9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ca49d968-7154-fefd-728e-76d106430617.png)

**エラーメッセージ**
サブスクリプション は無効であるため、読み取り専用としてマークされています。再度有効になるまでは、このサブスクリプションに対する書き込みアクションは実行できません。

# 失効してしまった際に 出来る対策 とは？
失効してしまい、前章のように 移動ができなくなってしまった場合の対処策です。

**対策１：** サブスクリプションに課金を行い、有効化する
これを行えば、サブスクリプションが有効化されるので、前章で紹介した 移動 が行えます。
課金を行って有効化すれば、そもそも 移動する必要も無いかもしれませんね。

**対策２：** テンプレートのデプロイ を利用する
この方法が、本記事で お伝えしたい内容となります。
次章以降を参照してください。

# テンプレートのデプロイ を使って リソースを再作成する
0. 失効してしまったサブスクリプションから、復元させたい リソースグループ を表示させます。そして 左ペインから **テンプレートのエクスポート** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/676becaf-98a0-30a1-ee47-3fa67fab2009.png)
　<br>
0. **テンプレートを生成しています** という表示が消えるまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c518cdcc-37a4-a5d8-00a1-396b1224c4da.png)
　<br>
0. 下図の緑枠のように テンプレートが生成されたら準備完了です。**パラメーターを含める** にチェックが入っている事を確認して **デプロイ** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b2c19387-e286-d66a-10d0-60c357390b4b.png)

:::note warn
**有効／無効 のサブスクリプション が同一アカウントではない場合**
なお、有効／無効 のサブスクリプションが 別々のアカウントだった場合は、この方法が使えないので、上記の緑枠内のテンプレートを手動でコピーして、新しいサブスクリプションで、カスタムテンプレートのデプロイを行ってください。

**新しいサブスクリプションにて**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/efd8b1a7-de77-fc83-acf6-68b62f5ef710.png)
:::

4．次の画面では、以下のように **無効** なサブスクリプション が選択された状態になっているので、この箇所をクリックして、**有効** なサブスクリプションを選択しなおします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a37c886c-8aa0-0aef-8016-4c52a532ec65.png)

5．**有効** なサブスクリプションが選択されたことを確認して **確認と作成** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9c26501c-8cfb-432e-eed1-83e6d0c08409.png)

6．最終確認をしたら **作成** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9044dcf1-6f58-4f73-3cdd-4db2b0bb01e5.png)

7．デプロイが開始されます。完了したら **リソースグループに移動** を押します。
**デプロイ中の画面**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/755e338b-a54e-04a6-b429-1a1144db9981.png)
**デプロイの完了画面**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6375f7b7-882c-837e-be79-45db8a629c6c.png)

8．以下の通り、新しい サブスクリプション上に リソースが再現されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/16b2b8de-f0c0-1235-10ea-17005a199a4f.png)

# 復元結果の確認
試しに、サブネットを開くと、以下のように 同一構成になっている事が判ります。
仮想ネットワーク であれば、このように 完全に復元されます。
**左：新しいサブスクリプション**　　　　　　　**右：無効なサブスクリプション**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/24972e4f-92d8-38b4-cf45-5283c401745a.png)

試しに、パブリック IP アドレス を開くと、以下のように IP アドレスが違います。
これは、再作成を行っている以上、仕方のない制約です。これを避けたい場合は、前章で説明した 課金して 有効化 をする必要があります。
**左：新しいサブスクリプション**　　　　　　　**右：無効なサブスクリプション**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a21d6ac9-ae5a-c2fb-9e0c-9081dd4bd203.png)

以上、うっかり失効の Azure リソース の復元方法でした！