根据未来日期自动删除 Azure 中的 Blob 文件

Automatically delete Blob files in Azure based on a future date

我很好奇是否有一种方法可以通过设置未来的日期或时间在 Microsoft azure 中自动删除将来的 blob 文件?当设置的时间过去后,blob 文件将自动删除。我正在使用 c# ASP.NET。

Blob 永远不会删除自己。如果对象开始自我删除,那将与 Azure 的一致性和可靠性相矛盾。

我能想到的最简单的事情是设置一个 WebJob 来监视您的存储帐户并删除指定天数的 blob。或者,如果您将有关 blob 的元数据存储在您的应用程序数据库中,您可以让 WebJob 查看您的数据库并删除今天已删除的任何 blob。

如果您的站点没有任何实际压力,WebJobs 可以部署到现有的 WebApp 进程中,无需额外费用。如果您希望您的 WebApp 或 WebJob 特别忙,我会考虑将它们分开,这样它们就不会争夺资源。

There's a great blog post here 告诉您开始使用 WebJobs 所需知道的一切。

值得注意的是,WebJob 可以运行 连续地、按需、按定义的时间表响应消息队列或文件被放入 blob 存储。

没有任何机制可以仅使用 blob 存储来做到这一点。

https://feedback.azure.com/forums/217298-storage/suggestions/2474308-provide-time-to-live-feature-for-blobs

当然,您可以编写一个服务来查询每个 blob 并在超过 TTL 时将其删除,您可以将其存储在 MetaData 中。每次读取和删除都会产生费用。

1) Microsoft azure 中无法通过设置未来日期或时间自动删除 blob 文件。

2) 为了实现你的目标,你应该创建一个小应用程序,这个应用程序可以是:

  • Azure 工作者角色;
  • 只是桌面应用程序;
  • 其他东西(例如 asp.net 应用程序,甚至是用 Go 编写的应用程序)。

应用程序逻辑非常简单:

  • N 秒检查一次 blob,并删除符合的 要求(TTL结束)。
  • 您可以使用 blob 属性或写入 blob(或另一个 机制)存储 born time (BT).
  • 您可以写入 blob 或使其成为程序中的常量(或使用其他机制)来存储 TTL
  • 当你检查 blob 时,你应该这样做:(Current Time - BT) > TTL 如果它是 'true' 你可以删除 blob