使用 ARM 模板部署时如何禁用 Azure API 管理实例的软删除?

How do I disable soft delete of an Azure API Management instance when deploying using an ARM template?

在我的项目团队中,我们有一个 Azure DevOps 管道,它在我们的 CI 环境中拆除特定资源组,然后第二天使用 ARM 模板重新部署它。

在 ~Spring 2021 年,似乎在 Azure API 管理实例上自动启用了软删除选项,所以现在这个管道失败了。这是因为您无法部署与已软删除的资源同名的资源,并且这些资源在删除后 48 小时后才会自动清除。当管道尝试在此时间范围内重新部署 API 管理实例时,它失败了。拆除和重新部署之间的时间无法延长。

API Management 有此文档,但那是针对 REST API 调用的,我想知道它是否可以在 ARM 模板部署中指定。

keyvault resource 也有这个文档,也许我可以使用类似的东西?不过,我不确定我应该把它放在哪里。

欢迎任何相关建议。 TIA.

请参考UserVoice上的https://docs.microsoft.com/en-us/answers/questions/257072/azure-api-management-already-exists.html and see if this helps. You may want to raise a feature request支持。

您可以尝试创建一个脚本来检查“按订阅列出已删除的服务” REST API 检查已删除的 APIM 服务是否处于“软删除”状态,它也会返回 API 管理服务将被清除的日期。 Deleted Services - List By Subscription (Azure API Management) | Microsoft Docs

目前唯一的选择是清除(通过 ARM 模板不可用)然后部署。我们正在考虑减轻此类担忧的方案。

作为解决方法,您可以明确删除 API 管理服务并指定要使用的 2019-12-01 API 版本(不确定您使用什么删除 RG,但是例如 https://docs.microsoft.com/en-us/powershell/module/az.resources/remove-azresource?view=azps-5.7.0).这样服务将被硬删除。

我 运行 进入同样的事情,我需要等待 x 小时才能重新创建具有相同名称的资源。 通过使用 APIM 管理 api,您可以强制 Azure 立即删除资源。 检查此操作以清除资源:https://docs.microsoft.com/en-us/azure/api-management/soft-delete#purge-a-soft-deleted-apim-instance

文档允许您直接在您的 Azure 订阅上执行操作。或者,您可以使用它来列出给定订阅的所有软删除实例:

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/deletedservices?api-version=2020-06-01-preview

而这个用于清除软删除的 APIM 实例:

DELETE https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/locations/{location}/deletedservices/{serviceName}?api-version=2020-06-01-preview