【问题标题】:How to delete a leased blob in Azure?如何在 Azure 中删除租用的 blob?
【发布时间】:2022-01-12 19:02:10
【问题描述】:

我正在发布和订阅 azure 事件中心,它在存储帐户的容器中使用 blob。消息未使用此存储帐户发布,而是使用另一个存储帐户发布。

我可以看到租约状态为 已租用 的 blob。我认为删除它并重新创建它可能会解决问题,所以我尝试删除它并创建一个新的。但无法删除它。我也尝试过打破租约,但它再次将租约状态设置为已租用。

有没有办法解决这个问题?

【问题讨论】:

  • 您能否检查一下 Blob 属性概述。 LEASE STATUS、LEASE STATE、LEASE DURATION 的值是什么。通常,请求租约的人必须通过租约 ID 释放它。如果租用请求中断,则实际上不能直接再次租用。休息一下,就可以冷静下来了。
  • @JesseSquire 这是我面临的真正问题stackoverflow.com/q/70651840/6527049
  • 很遗憾,我无法与 Dapr 交谈,只能与 Dapr 组件使用的 Event Hubs SDK 本身交谈。也就是说,如果您有两个订阅者使用相同的存储帐户,他们将使用存储进行协作并在他们之间共享分区 - 您将不会有两个独立的消费者运行。为此,您需要一个单独的存储容器和第二个消费者的消费者组。
  • 那听起来绝对像是 Dapr 正在做一些存储方面的事情。 SDK 本身只关心容器。
  • @JesseSquire 我在问题中添加了 dapr 标签。我还在这里提出了错误github.com/dapr/dapr/issues/4112。非常感谢您的时间和帮助。你的 cmets 真的很有帮助。

标签: azure azure-blob-storage azure-storage azure-eventhub dapr


【解决方案1】:

• 我试图通过创建一个 blob 容器并在其中上传一个 blob 来重现您的确切场景。然后通过 REST API 以租约方式获取它,打破租约,最后通过 REST API 本身成功删除 blob。为此,我使用“Postman”应用程序作为 REST API 平台,还使用了在 Azure AD 中注册的应用程序,通过该应用程序检索执行 blob 操作所需的令牌。请找到以下快照供您参考:-

a) 通过适当的 blob 所有者和用户授权以及标头参数租赁获得的 Blob“ACMx7.pdf”。

b) Blob ‘ACMx7.pdf’ 租约已通过适当的标头中断,即 x-ms-lease-action : break

c) Blob 'ACMx7.pdf' 在租约被破坏后被删除,如下所示在“Postman”中传递标头。

请注意,授予 blob 的租约是无限期的,参考以下文档链接,了解如何使用所需的标头执行 blob 所需的操作:-

https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob

https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多