Bucket的擁有者可以通過PutBucketLifecycle介面來設定Bucket的Lifecycle。Lifecycle開啟後,OSS將按照配置,定期自動刪除與Lifecycle規則相匹配的Object。

請求文法

PUT /?lifecycle HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Authorization: SignatureValue 
Host: BucketName.oss.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>RuleID</ID>
    <Prefix>Prefix</Prefix>
    <Status>Status</Status>
    <Expiration>
      <Days>Days</Days>
    </Expiration>
    <Transition>
      <Days>Days</Days>
      <StorageClass>StorageClass</StorageClass>
    </Transition>
    <AbortMultipartUpload>
      <Days>Days</Days>
    </AbortMultipartUpload>
  </Rule>
</LifecycleConfiguration>

請求元素(Request Elements)

表 1. 請求元素
名稱 類型 是否必需 描述
CreatedBeforeDate 字元串 Days和CreatedBeforeDate二選一 指定哪天之前的數據被執行Lifecycle規則。日期必需服從ISO8601的格式,並且總是UTC的零點。 例如:2002-10-11T00:00:00.000Z,表示將最後修改時間早於 2002-10-11T00:00:00.000Z 的Object刪除或轉換成其他儲存類型,晚於這個時間的Object不會被刪除或轉儲。

父節點:Expiration或者AbortMultipartUpload

Days 正整數 Days和CreatedBeforeDate二選一 指定規則在對象最後修改時間過後多少天生效。

父節點:Expiration

Expiration 容器 指定Object規則的過期屬性。

子節點:Days或CreatedBeforeDate

父節點:Rule

AbortMultipartUpload 容器 指定未完成的Part規則的過期屬性。

子節點:Days或CreatedBeforeDate

父節點:Rule

ID 字元串 規則唯一的ID。最多由255位元組組成。當用戶沒有指定,或者該值為空時,OSS會為用戶生成一個唯一值。

子節點:無

父節點:Rule

LifecycleConfiguration 容器 Lifecycle配置的容器,最多可容納1000條規則。

子節點:Rule

父節點:無

Prefix 字元串 指定規則所適用的首碼。只有匹配首碼的對象才可能被該規則所影響。不可重疊。

子節點:無

父節點:Rule

Rule 容器 表述一條規則

子節點:ID,Prefix,Status,Expiration

父節點:LifecycleConfiguration

Status 字元串 如果其值為Enabled,那麼OSS會定期執行該規則;如果是Disabled,那麼OSS會忽略該規則。

父節點:Rule

有效值:Enabled,Disabled

StorageClass 字元串 如果父節點Transition已設定,則為必需 指定對象轉儲到OSS的目標儲存類型。取值:
  • IA
  • Archive

父節點:Transition

Transition 容器 指定Object在有效生命週期中,OSS何時將對象轉儲到IA或者Archive儲存類型 。

細節分析

  • 只有Bucket的擁有者才能發起Put Bucket Lifecycle請求,否則返回403 Forbidden消息。錯誤碼:AccessDenied。
  • 如果此前沒有設定過Lifecycle,此操作會建立一個新的Lifecycle配置;否則,就覆寫先前的配置。
  • 可以對Object設定過期時間,也可以對Part設定過期時間。這裡的Part指的是以分區上傳方式上傳,但最後未提交的分區。
轉儲注意事項:
  • 支援Standard Bucket中Standard Objects轉儲為IA、Archive儲存類型,Standard Bucket可以針對一個Object同時配置轉儲IA和Archive儲存類型規則,同時配置轉儲IA和Archive類型情況下,轉儲Archive的時間必須比轉儲IA的時間長。例如Transition IA設定Days為30,Transition Archive設定Days必須大於IA。否則,報InvalidArgument錯。
  • Object設定過期時間必須大於轉為IA或者Archive的時間。否則,報InvalidArgument錯。
  • 支援IA Bucket中Objects轉儲為Archive儲存類型。
  • 不支援Archvie Bucket建立轉儲規則。
  • 不支援IA類型Object轉儲為Standard。
  • 不支援Archive類型Object轉儲為IA或Standard。

樣本

請求樣本:

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 443
Date: Thu , 8 Jun 2017 13:08:38 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:PYbzsdWSMrAIWAlMW8luWekJ8=
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>delete objects and parts after one day</ID>
    <Prefix>logs/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <Days>1</Days>
    </Expiration>
    <AbortMultipartUpload>
      <Days>1</Days>
    </AbortMultipartUpload>
  </Rule>
  <Rule>
    <ID>transit objects to IA after 30, to Archive 60, expire after 10 years</ID>
    <Prefix>data/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
    </Transition>
    <Transition>
      <Days>60</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
    <Expiration>
      <Days>3600</Days>
    </Expiration>
  </Rule>
  <Rule>
    <ID>transit objects to Archive after 60 days</ID>
    <Prefix>important/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>6</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
  </Rule>
  <Rule>
    <ID>delete created before date</ID>
    <Prefix>backup/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <CreatedBeforeDate>2017-01-01T00:00:00.000Z</CreatedBeforeDate>
    </Expiration>
    <AbortMultipartUpload>
      <CreatedBeforeDate>2017-01-01T00:00:00.000Z</CreatedBeforeDate>
    </AbortMultipartUpload>
  </Rule>
</LifecycleConfiguration>

返回樣本:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu , 8 Jun 2017 13:08:38 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS