Put Bucket Lifecycle

最近更新时间:2021-04-12 15:40:27

查看PDF

描述

此PUT接口会设置一个Bucket的lifecyle规则。如果某个Bucket之前已经有lifecycle规则,新添加的规则将完全覆盖旧的,请注意这一点以免误删。

提示:为避免出错,推荐用户在控制台进行生命周期规则的设置,更加简单高效。

用户设置规则后,ks3内部会按照用户的设置,自动的将匹配到的object删除或者转化存储类型。

如果要使用此接口,您需要是这个Bucket的owner或者拥有设置生命周期管理规则的权限,即ks3:PutBucketLifecycle。

注意:当在生命周期规则中指定对象标签时,无论是一个还是多个均需要And节点。

请求

语法

PUT /?lifecycle HTTP/1.1
Host: {BucketName}.{endpoint}
Date: {date}
Authorization: {SignatureValue}
Content-length: {length}
Content-MD5: {md5}

Lifecycle configuration in the request body

注意:

请求参数

该接口不使用请求参数。

请求头部

除公共头部外,本接口必须有下面一项

名称 描述 必须
Content-MD5 body里data的128位md5 digest,再用base64编码。这个header必须存在,以便检查body是否损坏。详见RFC-1864
类型: String
默认值: 无

请求Body

一段描述lifecyle configuration的xml。

<LifecycleConfiguration>
  <Rule>
    <ID>id1</ID>
    <Filter>
      <Prefix>documents</Prefix>
    </Filter>
    <Expiration>
      <Date>2016-12-31T00:00:00.000Z</Date>
    </Expiration>
    <Status>Enabled</Status>
  </Rule>
  <Rule>
    <ID>id2</ID>
    <Filter>
      <Prefix>logs</Prefix>
    </Filter>
    <Expiration>
      <Days>130</Days>
    </Expiration>
    <Transition>
      <Days>10</Days>
      <StorageClass>STANDARD_IA</StorageClass>
    </Transition>
    <Transition>
      <Days>40</Days>
      <StorageClass>ARCHIVE</StorageClass>
    </Transition>
    <Status>Enabled</Status>
  </Rule>
  <Rule>
    <ID>id3</ID>
    <Filter>
      <Prefix>pic</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Date>2018-01-01T00:00:00.000Z</Date>
    </Expiration>
  </Rule>
  <Rule>
    <ID>id4</ID>
        <Filter>
         <And>
            <Prefix>123</Prefix>
            <Tag>
               <Key>age</Key>
               <Value>21</Value>
            </Tag>
            <Tag>
              <Key>name</Key>
              <Value>li</Value>
             </Tag>
         </And>
      </Filter>
  <Status>Enabled</Status>
  <Expiration>
    <Date>2021-01-01T00:00:00.000Z</Date>
  </Expiration>
        </Rule>
  
</LifecycleConfiguration>

Rule就是规则,主要包含:

  • Filter:规定匹配规则,支持分别设置筛选条件为前缀Prefix或标签Tag,也可组合使用。设置文件前缀时,单条规则仅容许设置一个。如规定了log的前缀的文件的删除操作,那object key是log1,log2,log/2016开头的都会被删,Tag为对象标签,单条规则可设置最多10个标签。
  • Status:指定这条规则是启用还是禁用。
  • Expiration:object过期的描述,哪个时间之前过期,或存在多少天就过期。
  • Transition:object转换存储类型的描述。


注意:

  • 规则的执行在每天0点。
  • 一个Bukcet rule总条数 <= 1000。
  • Rule的ID在一个bucket内必须唯一,不同bucket可以相同。ID可以是任意字符串,包括中文,但不能超过255字符(utf8编码)。
  • 一个bucket里可以有多条rule,仅设置前缀匹配时,每条rule可以设置不重叠的的prefix,如logs和docs,如logs和logs2016就是重叠的,导致冲突不可设置。规则中同时指定Tag 与prefix同时设置时可支持重叠前缀 。
  • Days指定相对时间,是相对object的last modfiy time,如object在2017-01-02 15:05被modify,Days是2,删除发生在2017-01-05 00:00,即顺延2天再找到下一个0点。
    注意:这里说的object last modify time,是上一次PUT,POST,COPY的时间。
  • Date指定绝对时间,必须是2017-01-01T00:00:00+08:00 这样ISO 8601格式, 北京时间, 时分秒必须写成0点,传非0点会报错。该规则会在Date指定的那天0点执行,把last modify time<=该Date的object删除; 如果Date是过去时间,该规则在当天深夜就会执行,执行时判断last modify time <= 该Date; 如果是未来时间,该规则在到达那个Date才会被执行,执行时仍然判断last modify time <= 该Date。
  • StorageClass 指文件要转换哪种存储类型,取值包括:STANDARD_IA,ARCHIVE。
  • 在您设置完对象标签相关的生命周期规则之后,请在控制台或使用Get Bucket Lifecycle接口再次检查,确认设置结果是否与您的预期相符。

    xml中的节点具体如下:
名称 描述 是否必须
LifecycleConfiguration 包含一堆Rule的容器, 一个Bucket最多1000条Rule。
类型:Container
子节点: Rule
父节点:无
Rule 包含一条规则
类型:Container
父节点:LifecycleConfiguration
ID Rule的唯一标识, 一个Bucket内ID不能重复。ID长度<=255字符,注意是utf8编码字符,不是字节
类型:String
父节点:Rule
Filter 规定前缀,一个Rule只能有一个Filter, 不同rule的prefix不能冲突。
类型:Container
子节点:Prefix
父节点:Rule
And 对象筛选器中的一个子集,当指定tag时需要此元素,
包括同时指定 Prefix 和 Tag 筛选,以及指定一个或多个 Tag 筛选。
类型:Container
父节点:LifecycleConfiguration.Rule.Filter
Prefix 符合这个前缀的object才会被删。一个Rule只能有一个Filter和一个Prefix
类型:String
父节点:Filter
Tag 标签集合,最多支持10个标签
类型:Container
Key 标签的 Key,长度不超过128字节,支持大小写字母、数字、空格和符号 + - = . _ : /
类型:String
Value 标签的 Value,长度不超过256字节, 支持大小写字母、数字、空格和符号 + - = . _ : /
类型:String
Status Enabled状态,该Rule就定期被执行;Disabled,该Rule被忽略,但该Rule随时能被Enable而不是被删。
类型:String
父节点:Rule
取值: Enabled, Disabled
Expiration 规定对应的object何时被删。
类型:Container
子节点:Days,Date
父节点:Rule
Date last modify day<这个数的object被删。必须是ISO 8601格式的北京时间。时分秒必须填0,即必须是0点。
类型:String
父节点: Expiration,Transition
是,如果没有Days
Days 规定一个正数,对应object在last modify多少天之后被删。
类型: 整数
父节点: Expiration,Transition
是,如果没有Date
Transition 指定Object在有效生命周期中,何时将对象转储为IA或者Archive存储类型
类型:Container
子节点: Days,Date,StorageClass
StorageClass 指定对象转储到目标存储类型。
父节点:Transition
取值:STANDARD_IA,ARCHIVE(控制台使用aws sdk,不支持ARCHIVE)
否,如果Transition有的话,则必须包含


其中,

  • ID必须有。不同Rule的ID不能重复。
  • Date和Days只能二选一,并且不能不选,必须填写其中一个。
  • Status节点一定要有。
  • Expiration一定要有。
  • Filter和Prefix可以没有。但如果有prefix,不同rule之间不能冲突,如log和log2016就是冲突的。
  • Prefix与Tag可搭配使用,单条规则仅能有一个Prefix,Tag可以设置多个。
  • Rule的子节点里,应该出现的,都只能出现一次。如ID,只能有一个;Status,只能有一个。

响应头部

本接口只带有常用响应头部。获取更多信息,请点击常用响应头部

响应内容

不返回内容。

特殊错误

不返回任何特殊错误。

示例

简单请求示例

PUT /?lifecycle HTTP/1.1
Host: ks3-example.ks3-cn-beijing.ksyun.com
Date: Wed, 14 May 2014 02:11:21 GMT
Content-MD5: xxx 
Authorization: authorization string
Content-Length: yyy
Content-type: application/xml

<LifecycleConfiguration>
  <Rule>
    <ID>id1</ID>
    <Filter>
      <And>
          <Tag>
             <Key>age</Key>
             <Value>21</Value>
          </Tag>
      </And>
    </Filter>
    <Expiration>
      <Date>2016-12-31T00:00:00+08:00</Date>
    </Expiration>
    <Status>Enabled</Status>
  </Rule>
</LifecycleConfiguration>

复杂请求示例

PUT /?lifecycle HTTP/1.1
Host: ks3-example.ks3-cn-beijing.ksyun.com
Date: Wed, 14 May 2014 02:11:21 GMT
Content-MD5: xxx 
Authorization: authorization string
Content-Length: yyy
Content-type: application/xml

<LifecycleConfiguration>
  <Rule>
    <ID>id1</ID>
    <Filter>
      <Prefix>documents</Prefix>
    </Filter>
    <Expiration>
      <Date>2016-12-31T00:00:00+08:00</Date>
    </Expiration>
    <Status>Enabled</Status>
  </Rule>
 <Rule>
    <ID>id2</ID>
    <Filter>
      <Prefix>logs</Prefix>
    </Filter>
    <Expiration>
      <Days>130</Days>
    </Expiration>
    <Transition>
      <Days>10</Days>
      <StorageClass>STANDARD_IA</StorageClass>
    </Transition>
    <Transition>
      <Days>40</Days>
      <StorageClass>ARCHIVE</StorageClass>
    </Transition>
    <Status>Enabled</Status>
  </Rule>
  <Rule>
    <ID>id3</ID>
     <Filter>
       <And>
          <Prefix>docs</Prefix>
          <Tag>
             <Key>age</Key>
             <Value>21</Value>
          </Tag>
          <Tag>
            <Key>name</Key>
            <Value>li</Value>
           </Tag>
       </And>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Date>2021-01-01T00:00:00.000Z</Date>
    </Expiration>
  </Rule>
</LifecycleConfiguration>


以上在某个bucket里设3条规则。

  • 第一条删除2016-12-31 0点前的以documents开头的object key。
  • 第二条让logs开头的在最终modify后3天删除。
  • 第三条是未来时间,在2021.1.1才会执行,执行效果是删除lastmodify < 2021-01-01 且符合以docs开头,具有age=21,name=li标签的文件。

响应示例

HTTP/1.1 200 OK
Content-Length: 0
Date: Tue, 19 Jul 2017 09:14:23 GMT
Server: Tengine
x-kss-request-id: 54a47bda18ac4e6e91de369add54218***

说明: 更多信息请参见管理文件生命周期

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

  • 内容不全,不深入
  • 内容更新不及时
  • 描述不清晰,比较混乱
  • 系统或功能太复杂,缺乏足够的引导
  • 内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈