从部署历史记录自动删除

每次部署模板时,有关部署的信息都会写入到部署历史记录中。 每个资源组在其部署历史记录中最多只能有 800 个部署。

当你接近限制时,Azure 资源管理器会自动删除历史记录中的部署。 自动删除是对过去的行为的更改。 以前,必须从部署历史记录中手动删除部署,以避免出现错误。 此更改于 2020 年 8 月 6 日实现。

资源组和订阅部署支持自动删除。 目前,管理组租户部署的历史记录中的部署不会自动删除。

注意

从历史记录中删除部署不会影响已部署的任何资源。

删除部署时

超过 700 个部署时,将从历史记录中删除部署。 Azure 资源管理器会删除部署,直到历史部署量下降到 600 个部署为止。 始终最先删除最早的部署。

Deletions from deployment history

重要

如果资源组已经达到 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

所需的权限

在部署模板的用户的标识下请求删除。 若要删除部署,用户必须有权访问 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。

后续步骤