在Amazon S3中自动删除超过n天的对象(如何?)

时间:2010-07-13 13:41:07

标签: ruby-on-rails ruby amazon-s3 amazon-web-services

我在Amazon S3中存储了很多图片, 使用ruby lib(http://amazon.rubyforge.org/

我不在乎超过1周的照片,然后在S3中释放空间我必须删除那些照片。

我知道有一种方法可以删除某个存储桶中的对象:

S3Object.delete 'photo-1.jpg', 'photos'

有没有办法自动删除超过一周的图片?

如果它不存在,我将不得不写一个守护进程: - (

谢谢


更新:现在有可能,查看Roberto的答案。

3 个答案:

答案 0 :(得分:43)

您可以使用 Amazon S3对象过期策略

Amazon S3 - Object Expiration | AWS Blog

  

如果使用S3存储日志文件或其他受限制的文件   一生,你可能不得不在内部构建某种机制   跟踪对象的年龄并从一定时间开始批量删除过程   时间。虽然我们新的多对象删除功能将帮助您   让这个过程更快更容易,我们想要更进一步。

     

S3的新对象到期功能允许您定义规则   安排在预定义的时间段后删除对象。   规则在您的生命周期配置策略中指定   适用于水桶。您可以通过S3 API或更新此策略   来自AWS管理控制台。

Object Expiration | AWS S3 Documentation

  

您存储在Amazon S3存储桶中的某些对象可能具有   明确的生命周期。例如,您可能会定期上传   记录到您的存储桶,但您可能需要保留这些日志   具体的时间。您可以使用对象生命周期   管理以指定存储桶中对象的生命周期;当。。。的时候   对象的生命周期到期,Amazon S3将对象排队   删除。

Ps:点击链接了解更多信息。

答案 1 :(得分:1)

如果您可以访问本地数据库,则可以轻松地记录每个图像(您可能已根据应用程序执行此操作),然后您可以执行简单查询以检索整个列表并将其删除。这比直接查询S3快得多,但确实需要某种本地存储。

答案 2 :(得分:0)

不幸的是,亚马逊没有提供基于一组特定标准的自动删除API。

您需要编写一个遍历所有照片的守护程序,并选择符合条件的守护程序,然后逐个删除它们。