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

本文关键字:Azure 删除 中的 Blob 文件 将来 日期 | 更新日期: 2023-09-27 17:57:06

我很好奇是否有办法通过设置未来的日期或时间来自动删除 Azure Microsoft 中的 blob 文件?设置的时间过后,将自动删除 Blob 文件。我正在使用 c# ASP.NET。

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

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

我能想到的最简单的做法是设置一个 Web 作业来监视存储帐户并删除指定天数的 Blob。或者,如果在应用数据库中存储有关 Blob 的元数据,可以让 Web 作业查看数据库并删除当前已删除的任何 Blob。

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

这里有一篇很棒的博客文章,告诉你开始使用 WebJobs 需要知道的所有信息。

值得注意的是,Web 作业可以按定义的计划按需连续运行,并响应消息队列或 Blob 存储中的文件。

没有任何机制可以仅使用 blob 存储执行此操作。

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

当然,您可以编写一个服务,该服务可以查询每个 blob,如果超过可以存储在元数据中的 TTL,则删除该服务。每次读取和删除都会产生费用。

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