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

时间:2015-06-18 23:54:49

标签: c# asp.net azure azure-storage-blobs

我很想知道是否有办法通过设置未来的日期或时间在Microsoft azure中自动删除blob文件?设置的时间过去后,blob文件会自动删除。我正在使用c#ASP.NET。

3 个答案:

答案 0 :(得分:1)

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

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

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

There's a great blog post here 告诉您开始使用WebJobs时需要了解的所有信息。

值得注意的是,WebJob可以按需定时,按照定义的时间表连续运行,并响应消息队列或在blob存储中丢弃文件。

答案 1 :(得分:0)

没有任何机制可以单独使用blob存储。

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

当然,您可以编写一个可以查询每个blob的服务,如果超出了可以存储在MetaData中的TTL,则可以删除。每次阅读和删除都会产生费用。

答案 2 :(得分:0)

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

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

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

App逻辑非常简单:

  • 每隔N秒检查一次blob,然后删除那些符合的blob 需求(TTL结束)。
  • 您可以使用blob属性或写入blob(或其他) 机制)存储born time (BT)
  • 您可以在程序中写入blob或使其成为常量(或使用其他机制)来存储TTL
  • 当你检查blob时,你应该:(Current Time - BT) > TTL如果是'true'你可以删除blob