最近更新时间:2021-01-25 17:18:49
此PUT接口会设置一个Bucket的lifecyle规则。如果某个Bucket之前已经有lifecycle规则,新添加的规则将完全覆盖旧的,请注意这一点以免误删。
用户设置规则后,ks3内部会按照用户的设置,自动的将匹配到的object删除或者转化存储类型。
如果要使用此接口,您需要是这个Bucket的owner。
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 默认值: 无 |
是 |
一段描述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>
</LifecycleConfiguration>
Rule就是规则,主要包含:
注意:
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 |
否 |
Prefix | 符合这个前缀的object才会被删。一个Rule只能有一个Filter和一个Prefix 类型:String 父节点:Filter |
否 |
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有的话,则必须包含 |
其中,
本接口只带有常用响应头部。获取更多信息,请点击常用响应头部。
不返回内容。
不返回任何特殊错误。
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>
<Prefix>pic</Prefix>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Date>2018-01-01T00:00:00.000Z</Date>
</Expiration>
</Rule>
</LifecycleConfiguration>
以上在某个bucket里设2条规则。第一条删除2016-12-31 0点前的以documents开头的object key。第二条让logs开头的在最终modify后3天删除。第三条是未来时间,在2018.1.1才会执行,执行效果是删除lastmodify<2018-01-01的。
HTTP/1.1 200 OK
Content-Length: 0
Date: Tue, 19 Jul 2017 09:14:23 GMT
Server: Tengine
x-kss-request-id: 54a47bda18ac4e6e91de369add54218e
x-kss-request-id: 54a47bda18ac4e6e91de369add54218e