デプロイ履歴からの自動削除
テンプレートをデプロイするたびに、デプロイに関する情報がデプロイ履歴に書き込まれます。 各リソース グループには、そのデプロイ履歴が 800 までという上限があります。
Azure Resource Manager では、上限に近づいたときに履歴からデプロイが自動的に削除されます。 自動削除という動作は過去になかったものです。 以前は、エラーを避ける目的で、デプロイ履歴から手動でデプロイを削除する必要がありました。 この変更は 2020 年 8 月 6 日に実装されました。
Note
履歴からデプロイを削除しても、デプロイされたリソースには影響が出ません。
デプロイが削除されるタイミング
デプロイが 700 件を超えると、履歴からデプロイが削除されます。 履歴が 600 件に減るまで、Azure Resource Manager によってデプロイが削除されます。 常に、最も古いデプロイが先に削除されます。
重要
リソース グループが既に 800 の上限に達している場合、次回のデプロイはエラーで失敗します。 自動削除プロセスがすぐに開始されます。 少し待つと、 デプロイを再試行できます。
デプロイに加え、what-if 操作の実行時またはデプロイの検証時にも削除を始動させることができます。
履歴に含まれるものと同じ名前をデプロイに付けると、履歴のその場所をリセットすることになります。 そのデプロイは履歴の中で最も新しい場所に移動します。 エラー後、そのデプロイまでロールバックした場合もデプロイの場所がリセットされます。
削除をブロックするロックを削除する
リソース グループに CanNotDelete ロック が設定されている場合、そのリソース グループのデプロイを削除することはできません。 デプロイ履歴の自動削除を利用するには、このロックを削除する必要があります。
PowerShell を使用してロックを削除するには、次のコマンドを実行します。
$lockId = (Get-AzResourceLock -ResourceGroupName lockedRG).LockId
Remove-AzResourceLock -LockId $lockId
Azure CLI を使用してロックを削除するには、次のコマンドを実行します。
lockid=$(az lock show --resource-group lockedRG --name deleteLock --output tsv --query id)
az lock delete --ids $lockid
必要なアクセス許可
削除は、テンプレートをデプロイしたユーザーの ID で要求されます。 デプロイを削除するには、ユーザーは、 [Microsoft.Resources/deployments/delete] アクションへのアクセス権を持っている必要があります。 ユーザーが必要なアクセス許可を持っていない場合、デプロイは履歴から削除されません。
現在のユーザーが必要なアクセス許可を持っていない場合は、次のデプロイ時に自動的に削除が試行されます。
自動削除のオプトアウト
履歴の自動削除をオプトアウトできます。 このオプションは、デプロイ履歴を自分で管理する場合にのみ使用してください。 履歴の 800 デプロイという上限は依然、適用されます。 800 デプロイを超えると、エラーが表示され、デプロイに失敗します。
テナントまたは管理グループのスコープで自動削除を無効にするには、サポート チケットを提出します。 手順については、サポートの要求に関する説明を参照してください。
サブスクリプション スコープで自動削除を無効にするには、Microsoft.Resources/DisableDeploymentGrooming
機能フラグを登録します。 機能フラグを登録すると、Azure サブスクリプション全体の自動削除がオプトアウトされます。 特定のリソース グループだけをオプトアウトすることはできません。 自動削除を再び有効にするには、この機能フラグの登録を解除します。
PowerShell の場合、Register-AzProviderFeature を使用します。
Register-AzProviderFeature -ProviderNamespace Microsoft.Resources -FeatureName DisableDeploymentGrooming
サブスクリプションの現状を確認するには、次を使用します。
Get-AzProviderFeature -ProviderNamespace Microsoft.Resources -FeatureName DisableDeploymentGrooming
自動削除を再び有効にするには、Azure REST API または Azure CLI を使用します。
次のステップ
- デプロイ履歴を表示する方法については、「Azure Resource Manager でのデプロイ履歴の表示」を参照してください。