API 管理中的软删除功能

适用于:所有 API 管理层级

利用 API 管理软删除,你可以恢复和还原最近删除的 API 管理实例。 此功能可避免意外删除 API 管理实例。

支持接口

可以通过 REST API 版本 2020-06-01-preview 或更高版本、 Azure CLI 或用于 .NET、Go 或 Python 的 Azure SDK 在软删除实例上恢复和执行其他作。

提示

操作 说明 API 管理命名空间 最低 API 版本
创建或更新 创建或更新 API 管理服务。 API 管理服务 任意
属性设置为 true 的restore 恢复(取消删除)API 管理服务(如果之前实施的是软删除)。 如果 restore 指定并设置为 true,则忽略所有其他属性。 API 管理服务 2020-06-01-预览版
删除 删除现有的 API 管理服务。 API 管理服务 2020-06-01-预览版
按名称获取 按名称获取软删除的 API 管理服务。 已删除的服务 2020-06-01-预览版
按订阅列出 列出对于给定的订阅可以取消删除的所有已软删除的服务。 已删除的服务 2020-06-01-预览版
清除 清除 API 管理服务(将其永久删除,没有取消删除的选项)。 已删除的服务 2020-06-01-预览版

软删除行为

可以使用任何 API 版本来创建 API 管理实例。 使用 Azure 门户、Azure REST API 或其他具有 API 版本 2020-06-01-preview 或更高版本的 Azure 工具删除 API 管理实例时,会自动软删除该实例。

软删除 API 管理实例时,服务将进入已删除状态,并且无法正常执行 API 管理作。

在软删除状态下:

  • 只能 列出恢复清除 API 管理实例(永久删除)。
  • Azure 计划在预先确定的 48 小时保留期后永久删除 API 管理实例的基础数据。
  • 不能重复使用 API 管理实例的名称。

如果在 48 小时内未恢复或清除 API 管理实例,则会永久删除该实例。

列出已删除的 API 管理实例

您可以使用“已删除服务按名称获取”操作或“按订阅列表”操作来验证被软删除的 API 管理实例是否可以还原。

按名称获取已软删除的实例

使用 API 管理按名称获取操作,将 {subscriptionId}{location}{serviceName} 替换为你的 Azure 订阅、资源位置名称和 API 管理实例名称:

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/locations/{location}/deletedservices/{serviceName}?api-version=2024-05-01

如果 API 管理实例可用于取消删除,Azure 将返回显示其 deletionDatescheduledPurgeDate的实例的记录。 例如,REST API 返回如下所示的输出:

{
    "id": "subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.ApiManagement/locations/chinanorth/deletedservices/apimtest",
    "name": "apimtest",
    "type": "Microsoft.ApiManagement/deletedservices",
    "location": "China North",
    "properties": {
        "serviceId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/apimtestgroup/providers/Microsoft.ApiManagement/service/apimtest",
        "scheduledPurgeDate": "2024-11-26T19:40:26.3596893Z",
        "deletionDate": "2024-11-24T19:40:50.1013572Z"
    }
}

列出某个给定订阅的所有软删除实例

使用 API 管理按订阅列出操作,将 {subscriptionId} 替换为你的订阅 ID:

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/deletedservices?api-version=2024-05-01

此命令返回在给定订阅下可以恢复的所有软删除服务的列表。 它显示每个服务的 deletionDatescheduledPurgeDate

恢复软删除的实例

使用 API 管理 创建或更新操作,将 {subscriptionId}{resourceGroup}{apimServiceName} 替换为你的 Azure 订阅、资源组名称和 API 管理名称:

PUT
https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ApiManagement/service/{apimServiceName}?api-version=2024-05-01

在请求正文中,将 restore 属性设置为 true. (指定此标志并设置为 true 时,将忽略所有其他属性。例如:

{
  "properties": {
    "publisherEmail": "help@contoso.com",
    "publisherName": "Contoso",
    "restore": true
  },
  "sku": {
    "name": "Developer",
    "capacity": 1
  },
  "location": "China North"
}

清除软删除的实例

注意

若要清除软删除的实例,除了对 API 管理实例的参与者访问权限外,还必须在订阅范围内拥有以下基于角色的访问控制(RBAC)权限:Microsoft.ApiManagement/locations/deletedservices/deletedservices/delete,Microsoft.ApiManagement/deletedservices/read。

使用 API 管理清除操作,将 {subscriptionId}{location}{serviceName} 替换为你的 Azure 订阅、资源位置和 API 管理名称。

DELETE https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/locations/{location}/deletedservices/{serviceName}?api-version=2024-05-01

此命令从 Azure 永久删除 API 管理实例。

删除后重复使用 API 管理实例名称

可以在新部署中重复使用 API 管理实例的名称:

  • 从 Azure 中被永久删除(彻底清除)实例后。

  • 与原始实例位于同一订阅中。

不能在新部署中重复使用 API 管理实例的名称:

  • 软删除实例后。

  • 在与用于部署原始实例的订阅不同的其他订阅中,即使原始实例已从 Azure 中永久删除(清除)后,情况依然如此。 此限制适用于新订阅位于相同或不同的 Microsoft Entra 租户中。 此限制在删除后的几天或更长时间内有效,具体取决于订阅类型。

    存在此限制,是因为 Azure 在一段预定时间内将服务主机名保留给客户的租户,以防止由于悬空域名系统 (DNS) 条目导致的子域接管威胁。 有关详细信息,请参阅阻止无关联的 DNS 项并避免子域接管。 若要查看 Microsoft Entra 租户中订阅的所有无关联 DNS 项,请参阅识别无关联的 DNS 项

了解长期 API 管理备份和恢复选项: