全部產品
Search
文件中心

:PutBucketLifecycle

更新時間:Jun 19, 2024

您可以基於最後一次修改時間以及最後一次訪問時間的策略建立生命週期規則,定期將儲存空間(Bucket)內的多個檔案(Object)轉儲為指定儲存類型,或者將到期的Object和片段刪除,從而節省儲存費用。本文為您介紹如何調用PutBucketLifecycle介面為儲存空間(Bucket)設定生命週期規則。

注意事項

  • 要為儲存空間設定生命週期規則,您必須有oss:PutBucketLifecycle許可權。具體操作,請參見為RAM使用者授權自訂的權限原則

  • PutBucketLifecycle為覆蓋語義。例如,某個Bucket已配置了生命週期規則Rule1,您需要在Rule1基礎上繼續追加生命週期規則Rule2,您需要執行以下操作。

    1. 調用GetBucketLifecycle介面擷取當前生命週期規則配置Rule1。

    2. 在Rule1基礎上疊加Rule2。

    3. 調用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

指定生命週期規則是否允許首碼重疊。取值如下:

  • true:允許首碼重疊。

  • false:不允許首碼重疊。

此介面涉及的其他公用要求標頭,例如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。

  • 如果指定了Prefix,則表示此規則僅適用於Bucket中與Prefix匹配的Object。

  • 如果Prefix置空,則表示此規則適用於Bucket中的所有Object。

子節點:無

父節點:Rule

Status

字串

Enabled

是否啟用規則。取值如下:

  • Enabled:表示啟用規則,OSS會定期執行該規則。

  • Disabled:表示不啟用規則,OSS會忽略該規則。

父節點: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

指定是否自動移除到期刪除標記。取值如下:

  • true:表示自動移除到期刪除標記。當取值為true時,不支援指定DaysCreatedBeforeDate

  • false:表示不會自動移除到期刪除標記。當取值為false時,必須指定DaysCreatedBeforeDate

父節點: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:低頻訪問

  • Archive:Archive Storage

  • ColdArchive:冷Archive Storage

  • DeepColdArchive:深度冷Archive Storage

重要

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匹配規則。取值如下:

  • true:採用Object的last access time(最後一次訪問時間)匹配規則。

  • false(預設值):採用Object的last modified time(最後一次修改時間)匹配規則。

父節點:Transition或NoncurrentVersionTransition。

ReturnToStdWhenVisit

字串

false

指定Object轉為非標準儲存後,再次訪問時是否將Object轉為標準儲存。只有當IsAccessTime設定為true時才有效。取值如下:

  • true:Object由非標準儲存轉為標準儲存。

  • false(預設值):Object仍為非標準儲存。

父節點:Transition或NoncurrentVersionTransition。

AllowSmallFile

字串

false

基於最後一次訪問時間設定生命週期規則時,指定是否將小於64 KB的Object轉儲為低頻、歸檔、冷歸檔檔案類型。取值如下:

  • true(預設值):轉儲包含小於64 KB在內的所有Object。當Object小於64 KB時,按照64 KB計算。當Object大於或等於64 KB時,按照實際大小計算。設定為true時,可能會增加儲存費用。

  • false:不轉儲小於64 KB的Object。

父節點:Transition或NoncurrentVersionTransition。

Filter

容器

不涉及

本條排除規則的條件參數容器,至多一個,可置空。

父節點:Rule

子節點:Not

Not

容器

不涉及

如果Object滿足該條件,則跳過本條規則的匹配。如果配置了Filter,則Filter下必須有且只有一個Not節點。

父節點:Filter

子節點:Prefix、Tag

Prefix

字串

tmp/not/

本條排除規則所適用的Object首碼。不可為空白。

  • 如果Rule節點下配置了Prefix,則Not節點下的Prefix必須以Rule節點下的Prefix為首碼。例如,Rule節點下配置的Prefix為dir,則Not節點下的Prefix必須以dir開頭,例如dir1dir2等。

  • 如果Not節點下未配置Tag,則Not節點下配置的Prefix不能和Rule節點下的Prefix相同。

父節點:Not

子節點:無

Tag

容器

不涉及

本條排除規則所適用的Object標籤,至多一個,可置空。

回應標頭

此介面僅涉及公用回應標頭。更多資訊,請參見公用回應標頭(Common Response Headers)

樣本

請求樣本

樣本1:基於最後一次修改時間策略僅執行轉換檔儲存類型操作

以下樣本用於指定Bucket中首碼為log的檔案在距離最後一次修改時間30天后轉為低頻訪問類型。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix>log/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
    </Transition>    
  </Rule>
</LifecycleConfiguration>

樣本2:基於最後一次修改時間策略僅執行刪除檔案操作

以下樣本用於指定Bucket中首碼為log的檔案在距離最後一次修改時間90天后刪除。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix>log/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <Days>90</Days>
    </Expiration>    
 </Rule>
</LifecycleConfiguration>

樣本3:基於最後一次修改時間執行轉換檔儲存類型以及刪除操作

以下規則用於指定Bucket中首碼為log的檔案在距離最後一次修改時間30天后轉為低頻訪問類型,60天后轉為歸檔類型,3600天后刪除。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix>log/</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>
</LifecycleConfiguration>

樣本4:基於最後一次修改時間執行刪除歷史版本檔案及清理刪除標記的操作

以下規則用於指定Bucket中檔案成為歷史版本5天后刪除,並在所有歷史版本檔案刪除後清理刪除標記。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix></Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
    </Expiration>
    <NoncurrentVersionExpiration>
      <NoncurrentDays>5</NoncurrentDays>
    </NoncurrentVersionExpiration>    
  </Rule>
</LifecycleConfiguration>

樣本5:基於最後一次修改時間策略限制除指定首碼、標籤以外的檔案執行轉換儲存類型及刪除操作

以下規則用於通過NOT元素進行過濾,指定Bucket中除首碼為log、且包含Key為key1,Value為value1標籤的檔案外,其餘檔案在距離最後一次修改時間30天后轉Archive Storage,100天后刪除。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix></Prefix>
    <Status>Enabled</Status>
    <Filter>
      <Not>
        <Prefix>log</Prefix>
        <Tag><Key>key1</Key><Value>value1</Value></Tag>
      </Not>
    </Filter>    
    <Transition>
      <Days>30</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
    <Expiration>
      <Days>100</Days>
    </Expiration>
  </Rule>
</LifecycleConfiguration>

樣本6:基於最後一次訪問時間策略轉換檔儲存類型

以下規則用於指定首碼為log的檔案距離最後一次訪問時間30天后轉為低頻訪問類型。且再次訪問首碼為log的檔案時,這些檔案將轉為標準儲存。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix>log/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
      <IsAccessTime>true</IsAccessTime>
      <ReturnToStdWhenVisit>true</ReturnToStdWhenVisit>
    </Transition>
  </Rule>
</LifecycleConfiguration>

樣本7:基於最後一次修改時間執行刪除片段操作

以下規則用於指定刪除Bucket中產生時間早於30天的片段。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    <Prefix>/</Prefix>
    <Status>Enabled</Status>    
    <AbortMultipartUpload>
      <Days>30</Days>
    </AbortMultipartUpload>
 </Rule>
</LifecycleConfiguration>

樣本8:基於最後一次修改時間對重疊首碼的Object執行刪除操作

以下規則用於指定dir1/目錄下的Object距離最後修改時間180天后刪除,子目錄dir1/dir2/下的Object距離最後修改時間30天后刪除。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
x-oss-allow-same-action-overlap: true
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>Rule1</ID>
    <Prefix>dir1/</Prefix>
    <Status>Status</Status>
    <Expiration>
      <Days>180</Days>
    </Expiration>
  </Rule>
  <Rule>
    <ID>Rule2</ID>
    <Prefix>dir1/dir2/</Prefix>
    <Status>Status</Status>
    <Expiration>
      <Days>30</Days>
    </Expiration>
  </Rule>
</LifecycleConfiguration>
說明

如果x-oss-allow-same-action-overlap取值為false,因後台檢測到dir1/dir2/目錄下的Object同時匹配兩條刪除規則,OSS將拒絕配置以上兩條生命週期規則,並報錯Overlap for same action type Expiration

返回樣本

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

返回此錯誤的可能原因如下:

  • OSS支援Standard Bucket中Standard Objects轉儲為IA、Archive儲存類型。Standard Bucket可以針對一個Object同時配置轉儲IA和Archive儲存類型規則,但轉儲Archive儲存類型必須晚於轉儲IA儲存類型的時間。

  • 指定Object的到期時間必須晚於轉儲為IA或者Archive儲存類型的時間。

AccessDenied

403

沒有操作許可權。僅支援擁有oss:PutBucketLifecycle許可權的使用者佈建生命週期規則。

MalforedXML

400

Lifecycle XML校正錯誤均報錯MalformedXML。例如,您對某個Bucket設定基於最後一次訪問時間的生命週期規則之前,該Bucket未開啟訪問追蹤。