Azure Backup 利用後に残った復元ポイント コレクションをAzure REST APIを使って削除する

Azure Backupを使った研修が終わった後、一部のRecovery Services コンテナーが消せずに残ってしまいました。

削除用のスクリプトを使うことでRecovery Services コンテナー自体は消せたのですが、リージョンごとに作成された復元ポイント コレクションが残ってしまいました。

これを消すのに苦労したのでメモを残しておきます。

※ なお、本手順は、あくまで研修用途で一時的に利用したAzure Backupのデータを削除するために調べた内容です。本番運用で利用しているAzure Backupのデータを削除する場合は、慎重に行ってください。本番運用環にて本手順の操作を使った復元ポイント コレクションの削除を行う可能性は低いと考えられます。

発生していた状況

研修後、リソースグループごとリソースを削除していたのですが、一部Recovery Services コンテナーが残ってしまいました。*1

Recovery Services コンテナー の削除自体はAzureポータルで生成されるスクリプトを使って実行できたのですが…

リージョンごとに自動生成されたリソースグループが残ってしまっています。

中を見ると、復元ポイント コレクションが保存されています。

少なくとも手動では削除できず、削除方法を模索しました。

削除時のエラー

Azure Portalから復元ポイントコレクションを削除する

「復元ポイント コレクションの削除失敗」と出るのですが、クリックすると…

「リソースが見つかりませんでした」と出てしまいます。

Azure Portalから復元ポイントを削除する

先に復元ポイントコレクション内の復元ポイントを削除しようとすると…

やはり「リソースが見つかりませんでした」と出てしまいます。

PowerShellから復元ポイントコレクションを削除する

以下のコマンドレットを実行します。

$ResourceGroupName = "リソースグループ名"
$RestorePointCollectionName = "復元ポイント コレクション名"
$RestorePointName = "復元ポイント名"

Remove-AzRestorePointCollection -ResourceGroupName $ResourceGroupName -Name $RestorePointCollectionName

エラーになりますが、Azure Portalでの実行時よりは情報が得られます。

There is an active shared access signature outstanding for disk restore point xxxxx-xxxxx-xxxxx.

なお、Remove-AzRestorePointも実行しましたが、得られる結果はRemove-AzRestorePointCollectionと同じものだったので割愛します。

解決方法

調べた限りでは、この"shared access signature outstanding for disk restore point"をAzure PortalやPowerShellで削除する方法が見つかりませんでした。

ではどうするかというと、Azure REST APIを使用します。

learn.microsoft.com

解決の前に

その前に、この後に出てくる用語を整理しておきます。

  • Restore Point Collection(復元ポイント コレクション)
  • Restore Point(復元ポイント)
  • Disk(ディスク)
  • Disk Restore Point

並列に書きましたが、実際には階層構造になっています。

  • Restore Point Collection
    • Restore Point
      • Disk
        • Disk Restore Point
      • Disk
        • Disk Restore Point

Azure Portalの構造と関連付けます。

今回、仮想マシン自体もすでに削除しており、ディスクの実態がありません。なのでAzure PortalではRestore Pointまでしかたどれません。

Disk Restore Pointの名前を取得する

Azure REST APIでDisk Restore Pointへのアクセスを削除するには、Disk Restore Pointの名前が必要になります。

これを少なくとも今回のケースではAzure Portal上から取得することができないので、Disk Restore Pointの名前自体もAzure REST APIで取得します。

こちらを利用します。

learn.microsoft.com

今回は「使ってみる」でブラウザ上から実行してみます。

パラメーターを入力します。大体見れば分かるのですが、vmRestorePointNameだけ一瞬悩みました。

パラメーター名 Azureポータル上の確認場所
restorePointCollectionName Restore Point Collection(復元ポイント コレクション)の名前
vmRestorePointName Restore Point(復元ポイント)の名前

実行結果のnameを控えておきます。複数表示される場合もあります。

Disk Restore Pointを取り消す

これでDisk Restore Pointの名前がわかったので、shared access signatureを取り消していきます。

こちらを使います。

learn.microsoft.com

入力する値のうち、復元ポイント コレクション関連のものを表にしておきます。

パラメーター名 確認場所
restorePointCollectionName AzureポータルのRestore Point Collection(復元ポイント コレクション)の名前
vmRestorePointName AzureポータルのRestore Point(復元ポイント)の名前
diskRestorePointName Azure REST APIで調べたDisk Restore Pointのname

Response Code: 202が返ってきます。

これで取り消しは成功です。Disk Restore Pointが複数ある場合はそれぞれ実行します。

復元ポイント コレクションを削除する

すべてのDisk Restore Pointを取り消した後は、復元ポイント コレクションを削除できます。

おわりに

かなり苦戦したのですが、何とか削除ができました。

出来ましたが、数がそれなりにある場合はRESTを実行できるスクリプトなどで処理をするか、Logic Appsなりを使ってあげる必要がありそうです。

かなりニッチな内容だと思いますが、同じトラブルで困った方のお力になれれば幸いです。

*1:おそらく、手順の中で指示していた論理削除無効化を見落としていたのだと思います

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧