2013/01/28

AWS S3 Expiration 與 Lifecycle

最近在使用 Amazon S3 (Simple Storage Service) 時有個需求,就是要讓檔案放過久的檔案自動從 S3『移除』。
一開始有點搞錯方向,一直往 expiration 的方向去找,後來才知道要用 lifecycle 才對。


Expiration:

針對某個 object 產生特定的 URL 讓使用者存取,此 URL 是有期限的,期限到了就會失效,但 object 仍然會保留在伺服器上,同一個 object 可以產生多組 URL。


Lifecycle:

針對某個 prefix 下的 object 去設定其 lifecycle,期限一到這些 object 就會安排到 queue 裡面去準備刪除。
同一個 bucket 之下 Lifecycle Configuration Rules 只能設定 1000 條,所以 object 的命名就很重要了。
期限的設定有兩種,一種是絕對時間(ex: 2022-10-12T00:00:00.000Z),一種是存放時間(從上傳到S3那一刻開始算起,ex: 365 days),


Lifecycle implement 的方法

先參考:
Object Lifecycle Management - Amazon Simple Storage Service
Manage Object Lifecycle Using the REST API

基本上就是把下面格式的 XML 以 PUT 的方式送到 http://bucketname.s3.amazonaws.com/?lifecycle

  
    rule_id
    logs/
    Enabled
    
      365
      GLACIER
    
    
      3650
    
  

上例就是設定 logs 底下的 object 在 365天後轉移到 Glacier,並在3650天後自動刪除。
Glacier 是 AWS 另一個儲存的服務,可以針對不常用的大型檔案,以 archive 的方式從 S3 轉移到 Glacier,價格低廉但取回的時間較長。



沒有留言:

張貼留言