此操作用來設置Bucket生命周期規則。只有根用戶和具有PUT Bucket Lifecycle權限的子用戶才能執行此操作。
通過設置存儲桶的生命周期規則,可以:
- 刪除與生命周期規則匹配的文件:當文件的生命周期到期時,OOS會異步刪除它們。生命周期中配置的到期時間和實際刪除時間之間可能會有一段延遲。但文件到期被刪除后,用戶將不需要為到期的文件付費。OOS刪除到期文件后,會在Bucket log中記錄一條日志,操作項是"OOS.EXPIRE.OBJECT"。
- 將與生命周期規則匹配的文件由標準存儲轉換為低頻訪問存儲:可以根據需要設置生命周期規則從文件最后一次修改時間生效,還是從文件最后一次訪問時間生效。OOS轉換存儲類型為低頻訪問存儲后,會在Bucket log中記錄一條日志,操作項是"OOS.TRANSITION_SIA.OBJECT"。
注意
如果文件的生命周期規則設置的是到期后刪除,文件到期后將被永久刪除,無法恢復。
如果Bucket內的生命周期規則正在執行時被修改配置,則修改后的配置并不立即生效,需等原生命周期規則執行完成后才能生效。
如果Bucket沒有配置過生命周期規則,執行該操作將創建新的生命周期規則。如果Bucket已存在生命周期規則,則執行此操作將覆蓋原有規則。
每個Bucket最多創建1000條生命周期規則。
同一Bucket,同一類型(到期刪除或者到期轉成低頻訪問存儲)的生命周期規則不能存在疊加前綴,例如已創建到期刪除文件的生命周期規則的前綴是ABC,則無法再創建前綴為ABCD或AB或A的到期刪除文件的生命周期規則。
當用戶為Bucket設置了生命周期規則,這些規則將同時應用于已有文件和后續新創建的文件。例如,用戶今天增加了一個生命周期,指定某些前綴的文件30天后過期,那么OOS將會將滿足條件的30天前創建的文件都加入到待刪除隊列中。
OOS通過將文件的最后一次修改時間或最后一次訪問時間,加上生命周期時間來計算到期時間,并且將時間近似到下一天的GMT零點時間。例如基于創建時間設置生命周期:一個文件于GMT 2016年1月15日10:30創建,生命周期為3天,那么文件的到期時間是GMT 2016年1月19日00:00。當重寫一個文件時,OOS將以最后更新時間為準,來重新計算該文件的到期時間。
可以通過GET Object、HEAD Object查詢文件的到期時間。
請求語法
PUT /?lifecycle HTTP/1.1
Host: BucketName.oos-cn.ctyunapi.cn
Date: date
Content-MD5: MD5
Authorization: SignatureValue
<LifecycleConfiguration>
<Rule>
<ID>UniqueIdentifier</ID>
<Prefix>Prefix</Prefix>
<Status>LifecycleStatus</Status>
<Expiration>
<Days>NumberOfDays</Days>
</Expiration>
<Transition>
<Days>NumberOfDays</Days>
<IsAccessTime>IsAccessTime</IsAccessTime>
<StorageClass>StorageClass</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
請求頭
| 名稱 | 描述 | 是否必須 |
|---|---|---|
| Content-MD5 | 數據的base64編碼的128位MD5。此請求頭必填,以便校驗數據的完整性。 | 是 |
請求參數
名稱 描述 是否必須 LifecycleConfiguration 生命周期規則容器,最多包含1000個規則。
類型:容器。
子節點:Rule。
是 Rule 配置一條生命周期規則的容器。
類型:容器。
子節點:ID、Prefix、Status、Expiration、Transition。
父節點:LifecycleConfiguration。
是 ID 規則的唯一標識。
類型:字符串。
取值:1~255個字符。
說明如果ID不填寫,系統會隨機生成一個48字節長度的ID。
父節點:Rule。
否 Prefix 指定使用生命周期規則的文件前綴。只有匹配文件前綴的文件才能被該規則影響,且對于同一Bucket,同一類型的生命周期規則的前綴不可重疊。如果prefix為空,則默認生命周期規則匹配整個存儲桶。
類型:字符串。
取值:0~1024個字符。
父節點:Rule。
是 Status 指定生命周期規則的狀態。
類型:字符串。
取值:
Enabled:生命周期規則生效。
Disabled:生命周期規則不生效,OOS執行時會忽略該條規則。
父節點:Rule。
是 Expiration 指定生命周期規則的過期時間容器。
類型:容器。
父節點:Rule。
子節點:Days或Date。
Expiration和Transition至少包含1個。 Transition 指定生命周期規則的轉換存儲類型。
類型:容器。
父節點:Rule。
子節點:Days或Date、StorageClass。
Expiration和Transition至少包含1個。 Days 指定生命周期規則在匹配文件最后一次修改時間或最后一次訪問時間多少天后生效。
說明當請求中存在IsAccessTime參數,且IsAccessTime取值為true時,此參數表示生命周期規則在距離Object最后一次訪問多少天后生效。
注意如果過期時間和轉換時間同時配置,過期時間需要晚于轉換時間。
類型:整型。
取值:大于0的正整數。
父節點:Expiration或Transition。
Days和Date二選一。 IsAccessTime 指定是否基于最后一次訪問時間匹配規則。
注意只有配置Days時才生效。
類型:布爾。
取值:
true:生命周期規則匹配文件的最后一次訪問時間。當基于最后一次訪問時間匹配規則時,文件只支持從標準存儲轉儲為低頻訪問存儲。
false:生命周期規則匹配文件的最后一次修改時間。
默認值為false。
父節點:Transition。
否 Date 指定生命周期規則生效日期,OOS對最后一次修改時間在此日期之前的文件執行生命周期規則。
取值:日期格式必須為ISO8601格式,并且為UTC的零點。例如:2002-10-11T00:00:00.000Z。
類型:字符串。
父節點:Expiration或Transition。
Days和Date二選一。 StorageClass 指定文件轉換的存儲類型。
類型:字符串。
取值:STANDARD_IA:低頻訪問存儲。
父節點:Transition。
Transition已設置時,必填。
請求示例1
下面的生命周期只包含一個規則,這個規則指定所有以logs/為前綴的文件將在創建后的30天過期。因為生命周期規則的狀態是Enabled,OOS會每隔一段時間來評估這個規則,刪除過期的文件。
PUT?/?lifecycle?HTTP/1.1
Host:?example-bucket.oos-cn.ctyunapi.cn
Date:?Tue,?13?Dec?2011?17:54:50?GMT
Content-MD5:?8dYiLewFWZyGgV2Q5FNI4W==
Content-Length:?207
Authorization: SignatureValue
<LifecycleConfiguration>
???????<Rule>
??????????????<ID>delete-logs-in-30-days-rule</ID>
??????????????<Prefix>logs</Prefix>
??????????????<Status>Enabled</Status>
??????????????<Expiration>
?????????????????????<Days>30</Days>
??????????????</Expiration>
???????</Rule>
</LifecycleConfiguration>
響應示例1
HTTP/1.1?200?OK
x-amz-request-id:?8911108cf1b04a9234a79aa99eabadb3727478686a6c6e7072
Date:?Tue,?13?Dec?2011?19:14:41?GMT
Server:?CTYUN
請求示例2
指定存儲文件在創建10天后轉換為低頻訪問存儲,創建20天后刪除。
PUT?/?lifecycle?HTTP/1.1
Host:?example-bucket.oos-cn.ctyunapi.cn
Date:?Mon,?29?Jul?2019?05:08:31?GMT
Content-Type:?application/xml
Content-MD5:?ouPJihB832ZHNLZNyl2Ccw==
Content-Length:?175
Authorization: SignatureValue
?
<LifecycleConfiguration>
????<Rule>
????????<Prefix>logs</Prefix>
????????<Status>Enabled</Status>
????????<Transition>
???????????<Days>10</Days>
???????????<StorageClass>STANDARD_IA</StorageClass>
????????</Transition>
????????<Expiration>
???????????<Days>20</Days>
????????</Expiration>
????</Rule>
</LifecycleConfiguration>
響應示例2
HTTP/1.1?200?OK
x-amz-request-id:?08979294ca514b044ec1b4c3b8c5c7cd8c8e91828486888a8c
Date:?Mon,?29?Jul?2019?05:10:33?GMT
Server:?CTYUN
請求示例3
該示例生命周期包含2個規則,第一個規則指定所有以logs/為前綴的文件將在創建后的30天過期。第二個規則指定所有以documents/為前綴的文件將在創建后的365天過期,但第二個規則的狀態是Disabled,即不生效。
PUT?/?lifecycle?HTTP/1.1
Host:?example-bucket.oos-cn.ctyunapi.cn
Date:?Tue,?13?Dec?2011?17:54:50?GMT
Content-MD5:?8dYiLewFWZyGgV2Q5FNI4W==
Content-Length:?413
Authorization: SignatureValue
<LifecycleConfiguration>
????<Rule>
????????<ID>delete-logs-rule</ID>
????????<Prefix>logs/</Prefix>
????????<Status>Enabled</Status>
????????<Expiration>
???????????<Days>30</Days>
????????</Expiration>
????</Rule>
????<Rule>
????????<ID>delete-documents-rule</ID>
????????<Prefix>documents/</Prefix>
????????<Status>Disabled</Status>
????????<Expiration>
???????????<Days>365</Days>
????????</Expiration>
????</Rule>
</LifecycleConfiguration>
響應示例3
HTTP/1.1?200?OK
x-amz-request-id:?8b08216804aa4f5569e3e5dcdee4a3a5ad999b9d9fa1a3a5a7
Date:?Tue,?13?Dec?2011?19:14:41?GMT
Server:?CTYUN
請求示例4
下面規則指定所有文件將在創建后的3650天被刪除。
注意當指定空的前綴時,規則將對Bucket內的所有文件生效。OOS將會刪除滿足此規則的所有文件。
PUT?/?lifecycle?HTTP/1.1
Host:?example-bucket.oos-cn.ctyunapi.cn
Date:?Tue,?13?Dec?2011?17:54:50?GMT
Content-MD5:?8dYiLewFWZyGgV2Q5FNI4W==
Content-Length:?226
Authorization: SignatureValue
?
<LifecycleConfiguration>
????<Rule>
????????<ID>10?years?all?objects?expire?rule?</ID>
????????<Prefix></Prefix>
????????<Status>Enabled</Status>
????????<Expiration>
????????????<Days>3650</Days>
????????</Expiration>
????</Rule>
</LifecycleConfiguration>
響應示例4
HTTP/1.1?200?OK
x-amz-request-id:?bf925f41e4094d0cfc76786f71773638402c2e30323436383a
Date:Tue,?13?Dec?2011?19:14:41?GMT
Server:?CTYUN
請求示例5
為前綴是test的文件設置生命周期規則:文件最后一次訪問3天后轉為低頻訪問存儲。
PUT /?lifecycle HTTP/1.1
Host:?example-bucket.oos-cn.ctyunapi.cn
x-amz-content-sha256: UNSIGNED-PAYLOAD
x-amz-date: 20230821T092414Z
Content-MD5: NH5mGrd4Be/Q0EWSuXpfYA==
Connection: keep-alive
Content-Length: 324
Authorization: SignatureValue
<LifecycleConfiguration>
<Rule>
<ID>test_lifecycle_1</ID>
<Prefix>test</Prefix>
<Status>Enabled</Status>
<Transition>
<Days>3</Days>
<IsAccessTime>true</IsAccessTime>
<StorageClass>STANDARD_IA</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
響應示例5
HTTP/1.1 200 OK
Date: Mon, 21 Aug 2023 09:24:14 GMT
x-amz-request-id: cbc195a82f344b0b0b574e5f656265446771535558535c6849
Content-Length: 0
Server: CTYUN
請求示例6
在設置多個規則時,請注意各規則之間不要互相沖突。比如,下面的生命周期中配置了一個規則,指定所有以documents為前綴的文件在30天后過期。而另一個規則指定所有以documents/2011為前綴的文件在365天過期。在這種情況下,OOS將返回錯誤信息。
PUT?/?lifecycle?HTTP/1.1
Host:?docs.oos-cn.ctyunapi.cn
Date:?Tue,?13?Dec?2011?17:54:50?GMT
Content-MD5:?8dYiLewFWZyGgV2Q5FNI4W==
Content-Length:?226
Authorization: SignatureValue
?
<LifecycleConfiguration>
????<Rule>
????????<ID>111</ID>
????????<Prefix>documents</Prefix>
????????<Status>Enabled</Status>
????????<Expiration>
???????????<Days>30</Days>
????????</Expiration>
????</Rule>
????<Rule>
????????<ID>222</ID>
????????<Prefix>documents/2011</Prefix>
????????<Status>Enabled</Status>
????????<Expiration>
???????????<Days>365</Days>
????????</Expiration>
????</Rule>
</LifecycleConfiguration>