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)
名稱 | 類型 | 是否必需 | 描述 |
---|---|---|---|
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的目標儲存類型。取值:
父節點: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