最近更新时间:2022-12-30 15:48:03
此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 默认值: 无 |
是 |
一段描述lifecyle configuration的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+08:00</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>
xml中的节点具体如下:
名称 | 描述 | 是否必选 |
---|---|---|
LifecycleConfiguration | 包含一堆Rule的容器, 一个Bucket最多1000条Rule。 类型:Container 子节点: Rule 父节点:无 |
是 |
Rule | 包含一条规则 类型:Container 父节点:LifecycleConfiguration |
是 |
ID | Rule的唯一标识,一个Bucket内ID不能重复。ID可以是任意字符串,包括中文,但不能超过255个字符(UTF-8编码)。 类型:String 父节点:Rule |
是 |
Filter | 规定匹配规则,支持分别设置筛选条件为前缀Prefix或标签Tag,也可组合使用。一个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 | 指定Rule是启用还是禁用。 Enabled:该Rule定期被执行 Disabled:该Rule被忽略,但该Rule随时能被Enable而不是被删 类型:String 父节点:Rule 取值: Enabled, Disabled |
是 |
Expiration | 规定对应的object何时被删。 类型:Container 子节点:Days,Date 父节点:Rule |
是 |
Date | 指定一个日期,KS3会对最后修改时间早于该日期的数据执行生命周期规则。如果Date为将来日期,要等到了该日期规则才会生效。必须是ISO8601格式的北京时间,且必须UTC的零点。日期格式为yyyy-MM-ddT00:00:00+08:00。 类型:String 父节点: Expiration,Transition |
是,如果没有Days |
Days | 指定生命周期规则在Object最后修改多少天后生效。 类型: 正整数 取值范围:1-10000 父节点: Expiration,Transition |
是,如果没有Date |
Transition | 指定Object在有效生命周期中,何时将对象转储为STANDARD_IA或者ARCHIVE存储类型 类型:Container 子节点: Days,Date,StorageClass |
否 |
StorageClass | 指定对象转储到目标存储类型。 父节点:Transition 取值:STANDARD_IA, ARCHIVE |
否,如果Transition有的话,则必须包含 |
注意:
注意:这里说的object last modify time,是上一次PUT,POST,COPY的时间。
本接口只带有常用响应头部。获取更多信息,请点击常用响应头部。
不返回内容。
不返回任何特殊错误。
PUT /?lifecycle HTTP/1.1
Host: ks3-example.ks3-cn-beijing.ksyuncs.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.ksyuncs.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+08:00</Date>
</Expiration>
</Rule>
</LifecycleConfiguration>
以上在某个bucket里设3条规则。
1. 删除2016-12-31 0点前的以documents开头的object key。 2. 让logs开头的在最终modify后3天删除。 3. 未来时间,在2021.1.1才会执行,执行效果是删除lastmodify < 2021-01-01 且符合以docs开头,具有age=21,name=li标签的文件。
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Date: Tue, 19 Jul 2017 09:14:23 GMT
Server: KS3
x-kss-request-id: 54a47bda18ac4e6e91de369add54218***
错误码 | HTTP状态码 | 描述 |
---|---|---|
InvalidArgument | 400 Bad Request | 不满足以下任意一项时,将返回该错误码: 过期删除时间必须晚于存储类型转换时间 同一条Rule设置的时间格式必须相同,Date和Days二选一* 文件转为低频存储后至少30天,才可以转换为归档存储 |
InvalidArgument | 400 Bad Request | 请求体格式错误或缺少相关必需元素 |
BadDigest | 400 Bad Request | 请求头不带Content-MD5或Content-MD5错误 |
说明: 更多信息请参见管理文件生命周期。
纯净模式