删除一段时间内未触摸的Azure blob存储内容

时间:2012-08-24 00:23:37

标签: azure azure-storage-blobs lastaccesstime

我开发的应用程序基本上允许用户上传内容并存储在Azure Blob存储中。

由于内容的性质是用户之间的快速共享,因此许多内容在一段时间后很快就会变得不受影响。但是对于某些内容可以反复使用。

为了阻止blob存储空间大小的空前增长,我计划编写基本上找不到一段时间未使用的blob的工具,并将其从存储中删除。

如果是标准文件系统,我可以使用“上次访问时间”来指示上次使用文件的时间。但是,我似乎无法找到blob的类似属性来确定上次访问时间。

所有人都遇到过这种情况,实现这一目标的最佳方法是什么? 还是我太在意这个了?

非常感谢任何反馈或建议。

先谢谢你。

5 个答案:

答案 0 :(得分:4)

我只能看到两种处理方法:

  1. 前面对blob的访问,以便他们必须点击服务 获取带有SAS签名的blob URL。这样你就算数了 监视哪些blob被访问。删除旧的blob 一段时间后很低/没有访问权限。这需要关闭 公众访问,所以人们不能只是绕过你的SAS签名。
  2. 启用存储分析并监控GET请求。你会 必须解析一个月的所有GET访问(例如每小时更新$ logs)和分组 资源。如果你自动化它,它不会太可怕。 这将为您提供所有资源的列表 访问。

答案 1 :(得分:0)

如果您正在使用Blob存储,那么遵循Gaurav建议的方法是您的最佳选择。有关入门的文档,请参阅此处:

https://azure.microsoft.com/en-us/documentation/articles/storage-analytics/

请注意,我们的.NET客户端库确实包含对解析日志文件的支持 - 您可以在我们的客户端库单元测试中看到此演示:

https://github.com/Azure/azure-storage-net/search?utf8=%E2%9C%93&q=ListLogs

答案 2 :(得分:0)

借助Azure Blob存储对生命周期管理的支持,这现在变得更加简单。

Manage the Azure Blob storage lifecycle

  

Azure Blob存储生命周期管理提供了基于规则的丰富功能   GPv2和Blob存储帐户的策略。使用政策   将您的数据转移到适当的访问层或在   数据生命周期的结束。

     

生命周期管理策略可让您:

     
      
  • 将blob过渡到较冷的存储层(从热到酷,从热到存档或从酷到存档)以优化性能和成本
  •   
  • 在生命周期结束时删除Blob
  •   
  • 定义规则,每天在存储帐户级别运行一次,将规则应用于容器或blob的子集(使用前缀作为过滤器)
  •   

Azure Lifecycle Management Rule

答案 3 :(得分:0)

该功能现已在preview中的France Central,Canada East和Canada Central中通过Lifecyle Managment提供。

enter image description here

更多详细信息here

答案 4 :(得分:-2)

您可以使用块和页面blob Properties.LastModifiedUtc来获取上次修改日期。使用Page或Block blob,您需要使用GetBlockBlobReference或GetPageBlobReference API以及FetchAttributes()来获取blob引用,然后您可以查找LastModifiedUtc。

例如,使用Block blob,这里是代码片段:

CloudBlockBlob blockBlob = container_name.GetBlockBlobReference(uri.ToString());
blockBlob.FetchAttributes();
// blockBlob.Properties.LastModifiedUtc will return the last modified date for the blob.