您可以基於最後一次修改時間以及最後一次訪問時間的策略建立生命週期規則,定期將儲存空間(Bucket)內的多個檔案(Object)轉儲為指定儲存類型,或者將到期的Object和片段刪除,從而節省儲存費用。本文為您介紹如何調用PutBucketLifecycle介面為儲存空間(Bucket)設定生命週期規則。
注意事項
要為儲存空間設定生命週期規則,您必須有
oss:PutBucketLifecycle
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。PutBucketLifecycle為覆蓋語義。例如,某個Bucket已配置了生命週期規則Rule1,您需要在Rule1基礎上繼續追加生命週期規則Rule2,您需要執行以下操作。
調用GetBucketLifecycle介面擷取當前生命週期規則配置Rule1。
在Rule1基礎上疊加Rule2。
調用PutBucketLifecycle介面更新生命週期規則為Rule1+Rule2。
支援對Object以及Part(以分區方式上傳,但最後未提交的分區)設定到期時間。
支援基於last access time(最後一次訪問時間)或者last modify time(最後一次修改時間)匹配規則。
請求文法
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>
要求標頭
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
x-oss-allow-same-action-overlap | 字串 | 否 | true | 指定生命週期規則是否允許首碼重疊。取值如下:
|
此介面涉及的其他公用要求標頭,例如Date,Authorization等。更多資訊,請參見公用要求標頭(Common Request Headers)。
請求元素
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
LifecycleConfiguration | 容器 | 是 | 不涉及 | Lifecycle配置的容器,最多支援1000條規則。 子節點:Rule 父節點:無 |
Rule | 容器 | 是 | 不涉及 | 生命週期規則的容器。Object設定到期時間必須大於轉儲為IA或者Archive儲存類型的時間。 子節點:ID、Prefix、Status、Expiration 父節點:LifecycleConfiguration |
ID | 字串 | 否 | rule1 | 標識規則的唯一ID,最多由255個字元組成。如果未指定或者指定該值為空白時,OSS會自動產生一個唯一ID。 子節點:無 父節點:Rule |
Prefix | 字串 | 否 | tmp/ | 指定規則所適用的首碼(Prefix)。不支援設定相同的Prefix。
子節點:無 父節點:Rule |
Status | 字串 | 是 | Enabled | 是否啟用規則。取值如下:
父節點:Rule |
Expiration | 容器 | 否 | 不涉及 | 指定Object的到期屬性。 對於已開啟版本控制的Bucket,指定的到期時間只對Object目前的版本生效。 Object的到期時間必須大於轉儲為IA或Archive類型的時間。 子節點:Days、CreatedBeforeDate或ExpiredObjectDeleteMarker 父節點:Rule |
Days | 正整數 | Days與CreatedBeforeDate互斥 | 1 | 指定生命週期規則在距離Object最後更新多少天后生效。 當請求中存在IsAccessTime參數且IsAccessTime取值為true時,此參數表示生命週期規則在距離Object最後訪問多少天后生效。 父節點:Expiration或AbortMultipartUpload |
CreatedBeforeDate | 字串 | CreatedBeforeDate與Days互斥 | 2002-10-11T00:00:00.000Z | 指定一個日期,OSS會對最後更新時間早於該日期的資料執行生命週期規則。日期格式為yyyy-MM-ddT00:00:00.000Z。 日期需要按照ISO8601標準表示並使用UTC時間,且必須為UTC的零點。 父節點:Expiration或者AbortMultipartUpload |
ExpiredObjectDeleteMarker | 字串 | 否 | true | 指定是否自動移除到期刪除標記。取值如下:
父節點:Expiration |
Transition | 容器 | 否 | 不涉及 | 指定Object在有效生命週期中,OSS何時轉換Object的儲存類型。 Standard Bucket中Standard Object可以轉儲為IA、Archive或ColdArchive儲存類型,但轉儲Archive儲存類型的時間必須比轉儲IA儲存類型的時間長。例如Transition IA設定Days為30,Transition Archive設定Days必須大於30。 父節點:Rule 子節點:Days、CreatedBeforeDate和StorageClass 重要 重要 使用該選項時,Days或CreatedBeforeDate只能二選一。 |
StorageClass | 字串 | 如果存在父節點Transition或NoncurrentVersionTransition,則必選 | IA | 指定Object轉儲的儲存類型。取值如下:
重要 IA Bucket中的Object可以轉儲為Archive或者ColdArchive儲存類型,但不支援轉儲為Standard儲存類型。 父節點:Transition |
AbortMultipartUpload | 容器 | 否 | 不涉及 | 指定未完成分區上傳的到期屬性。 子節點:Days或CreatedBeforeDate 父節點:Rule |
Tag | 容器 | 否 | 不涉及 | 指定規則所適用的對象標籤,可設定多個。 父節點:Rule 子節點:Key、Value |
Key | 字串 | 如果存在父節點Tag,則必選 | TagKey1 | 對象標籤的鍵。 父節點:Tag |
Value | 字串 | 如果存在父節點Tag,則必選 | TagValue1 | 對象標籤的值。 父節點:Tag |
NoncurrentVersionExpiration | 容器 | 否 | 不涉及 | 指定Object非目前的版本生命週期規則的到期屬性。 子節點:NoncurrentDays |
NoncurrentVersionTransition | 容器 | 否 | 不涉及 | 在有效生命週期規則中,OSS何時將指定Object的非目前的版本轉儲為IA或者Archive儲存類型。 Standard類型的Object轉儲為Archive類型的時間必須大於轉儲為IA類型的時間。 子節點:NoncurrentDays、StorageClass |
NoncurrentDays | 字串 | 如果存在父節點NoncurrentVersionExpiration或NoncurrentVersionTransition,則必選 | 10 | 指定生命週期規則在Object成為非目前的版本多少天后生效。 當請求中存在IsAccessTime參數且IsAccessTime取值為true時,此參數表示生命週期規則在Object最後訪問多少天后生效。 父節點:NoncurrentVersionTransition、NoncurrentVersionExpiration |
IsAccessTime | 字串 | 否 | true | 指定是否基於last access time匹配規則。取值如下:
父節點:Transition或NoncurrentVersionTransition。 |
ReturnToStdWhenVisit | 字串 | 否 | false | 指定Object轉為非標準儲存後,再次訪問時是否將Object轉為標準儲存。只有當IsAccessTime設定為true時才有效。取值如下:
父節點:Transition或NoncurrentVersionTransition。 |
AllowSmallFile | 字串 | 否 | false | 基於最後一次訪問時間設定生命週期規則時,指定是否將小於64 KB的Object轉儲為低頻、歸檔、冷歸檔檔案類型。取值如下:
父節點:Transition或NoncurrentVersionTransition。 |
Filter | 容器 | 否 | 不涉及 | 本條排除規則的條件參數容器,至多一個,可置空。 父節點:Rule 子節點:Not |
Not | 容器 | 否 | 不涉及 | 如果Object滿足該條件,則跳過本條規則的匹配。如果配置了Filter,則Filter下必須有且只有一個Not節點。 父節點:Filter 子節點:Prefix、Tag |
Prefix | 字串 | 是 | tmp/not/ | 本條排除規則所適用的Object首碼。不可為空白。
父節點:Not 子節點:無 |
Tag | 容器 | 否 | 不涉及 | 本條排除規則所適用的Object標籤,至多一個,可置空。 |
回應標頭
此介面僅涉及公用回應標頭。更多資訊,請參見公用回應標頭(Common Response Headers)。
樣本
請求樣本
樣本1:基於最後一次修改時間策略僅執行轉換檔儲存類型操作
樣本2:基於最後一次修改時間策略僅執行刪除檔案操作
樣本3:基於最後一次修改時間執行轉換檔儲存類型以及刪除操作
樣本4:基於最後一次修改時間執行刪除歷史版本檔案及清理刪除標記的操作
樣本5:基於最後一次修改時間策略限制除指定首碼、標籤以外的檔案執行轉換儲存類型及刪除操作
樣本6:基於最後一次訪問時間策略轉換檔儲存類型
樣本7:基於最後一次修改時間執行刪除片段操作
樣本8:基於最後一次修改時間對重疊首碼的Object執行刪除操作
返回樣本
HTTP/1.1 200 OK
x-oss-request-id: 7D3435J59A9812BAD56E
Date: Mon, 6 May 2019 15:23:20 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
SDK
此介面對應的各語言SDK如下:
相關文檔
關於生命週期規則的更多資訊,請參見生命週期規則概述。
錯誤碼
錯誤碼 | HTTP狀態代碼 | 描述 |
InvalidArgument | 400 | 返回此錯誤的可能原因如下:
|
AccessDenied | 403 | 沒有操作許可權。僅支援擁有 |
MalforedXML | 400 | Lifecycle XML校正錯誤均報錯MalformedXML。例如,您對某個Bucket設定基於最後一次訪問時間的生命週期規則之前,該Bucket未開啟訪問追蹤。 |