删除 Azure Batch 证书时超时

Timeout when deleting Azure Batch certificate

我在门户中收到以下信息:

There was an error while deleting [THUMBPRINT HERE]. The server returned 500 error. Do you want to try again?

我怀疑有一个 Azure 批处理池/节点挂在证书上,但是使用该证书的池/节点已经被删除(至少它们在门户中不可见)。

有没有办法强制删除证书,在正常操作中,我的发布管道依赖于能够删除证书。


用 fiddler 拦截 azure powershell,我可以在 http 响应中看到这个,所以它似乎超时了。

{
  "odata.metadata":"https://ttmdpdev.northeurope.batch.azure.com/$metadata#Microsoft.Azure.Batch.Protocol.Entities.Container.errors/@Element","code":"OperationTimedOut","message":{
    "lang":"en-US","value":"Operation could not be completed within the specified time.\nRequestId:[REQUEST ID HERE]\nTime:2017-08-23T16:54:23.1811814Z"
  }
}

我也删除了任何相应的任务和时间表,仍然没有运气。

(披露:在撰写本文时,我在 Azure Batch 团队工作,但不在核心服务中。)

500 错误通常是暂时的,可能表示 Batch 内部负载过重(与 503 错误相反,503 错误表示 Batch API 本身负载过重)。内部超时错误反映了这一点。对特定 API 的需求可能出现意外激增,这些成本高但通常使用率较低。我们监控并减轻这些问题,但有时具有异常使用模式的极高负载会影响服务响应能力。我建议您继续每 10-15 分钟尝试一次,如果它在几个小时内没有自行清除,请尝试提出支持请求。

目前无法强制删除证书。这是一种内部安全机制,可确保 Batch 永远不会处于必须部署不再具有副本的证书的位置。您可以通过 Batch UserVoice 请求此类功能。

最后,根据您的具体情况,您可以看看是否可以重新调整您的工作流程,使其不依赖于证书删除。例如,您可以使用垃圾收集工具(可能 运行 使用 Azure Functions 或 Azure Scheduler)定期清除旧证书。有争议的是,这增加了更多的复杂性(并且可以说不应该是必要的)但它提高了弹性并在其他方面简化了解决方案,因为您的主要路径不再需要担心延迟和超时。如果您想探索这条道路,那么也许可以在 Batch 论坛上 post 并开始与团队讨论可能的设计方法。