问题描述
在Azure门户中,误删除API Management资源后,怎么办?
问题解答
遇见误删除的第一反应就是:
- 想恢复删除的内容,但是从门户上查看没有发现有可以操作的方面。 (错误,Azure APIM门户已经支持"一键恢复"功能:Recover deleted API Management service - Microsoft Azure 由世纪互联运营)
- 然后想重建同样名称的APIM服务,结果确显示无法重建,提示处于软删除的保护期间。
进一步查看APIM软删除的资料,发现可以实现恢复在48小时以内的被删除的资源。
软删除行为 : https://docs.azure.cn/zh-cn/api-management/soft-delete#soft-delete-behavior
如果 Azure 门户、Azure REST API 或其他 Azure 工具使用 API 2020-06-01-preview 版本或更高版本,则在借助上述方式删除 API Management 实例时,系统会自动实施软删除。
在删除 API 管理实例时,该服务将处于已删除状态,任何正常的 API 管理操作都无法访问该服务。
在软删除状态下:
- 只能列出、恢复或清除(永久删除)API 管理实例。
- 在经过预先确定的保留期(48 小时)后,Azure 将指派系统永久删除 API 管理实例所对应的底层数据。
- 不能重复使用 API 管理实例的名称。
- 如果未在 48 小时内恢复或清除 API 管理实例,则系统会自动将其永久删除。
这是一个巨大的好消息。经过验证,成功恢复被删除的资源。在四年一次的2月29日(闰年)特地记录恢复的步骤:
1) 调用 " 列出已删除的 API 管理实例" 接口,查看被删除APIM资源的信息
使用 API 管理按订阅列出操作,将 {subscriptionId} 替换为你的订阅 ID:
使用 API 管理按名称获取操作,将 {subscriptionId}、{location} 和 {serviceName} 替换为你的 Azure 订阅、资源位置名称和 API 管理实例名称:
*** 注:**1,2步骤中的请求都需要获取Authorization Token,临时获取方式为 "在Azure APIM门户页面,通过F12(浏览器开发者工具), 查看Network中的请求,从任何一个请求中获取Authorzation Bearer Token即可"。
2) 调用"恢复软删除的实例 " 接口,设置 restore 属性设置为 true
使用 API 管理更新PUT操作,将 {subscriptionId}、{resourceGroup} 和 {apimServiceName} 替换为你的 Azure 订阅、资源组名称和 API 管理名称:
##Body JSON格式内容:
{
"properties": {
"restore": true
},
"location": "China North 3"
}
*** 注:**如果Body中缺少location参数,请求会返回错误提示:"error": {"code": "LocationRequired","message": "The location property is required for this definition."}
3) PUT接口发送成功后,等待恢复完成的时间大约在45分钟 ~ 1小时之间。
在恢复期间,APIM的状态显示为:Activating (Service is being activated ... )
误删除后的恢复APIM动画演示:
附录:在Azure APIM页面中的一键恢复 (Recover deleted API Management service)
参考资料
Azure API 管理软删除 : https://docs.azure.cn/zh-cn/api-management/soft-delete#soft-delete-behavior
【END】