全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

PUT Bucket Lifecycle

最近更新时间:2024-09-18 17:00:50

描述

调用该接口可以为存储空间(Bucket)设置生命周期规则,KS3内部会按照您的设置,自动将匹配到的Object删除或转化存储类型。使用此接口,您必须是这个Bucket的Owner或拥有ks3:PutBucketLifecycle权限。

1. 如果某个Bucket之前已经有Lifecycle规则,新添加的规则将全部覆盖旧规则,请注意这一点以免误删。如果想要增加而不是覆盖规则,可以通过先GET Bucket LifeCycle获取已有规则后,在已有规则的基础上叠加规则进行设置。

2. 如果配置的Date是过去日期,该规则在成功配置的次日0点将会开始生效;如果配置的Date是未来日期,该规则在到达该日期的次日0点才会开始生效;如果配置的是Days,该规则在成功配置的次日0点将会开始生效。全部操作完成时间与对象的数量规模有关,建议客户在开始生效的次日观察生效情况。

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

请求

请求语法

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

  • 默认值:无

x-kss-allow-same-action-overlap

指定生命周期规则是否允许前缀重叠。当不携带该请求头时默认表示不允许前缀重叠。

  • 类型:String

  • 默认值:false

  • 合法值:true、false。设置为true表示允许前缀重叠,设置为false表示不允许前缀重叠。

当客户开启了允许前缀重叠时,同一个Object可能符合多个规则,KS3将遵循按时间先后顺序及成本最小原则生效。规则冲突生效说明详见文档:生命周期管理

请求体

一段描述LifecyleConfiguration的XML:

<LifecycleConfiguration>
    <Rule>
        <ID>id1</ID>
        <Filter>
            <Prefix>documents</Prefix>
        </Filter>
        <Expiration>
            <Date>2016-12-31T00:00:00.000+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.000+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.000+08:00</Date>
        </Expiration>
        <AbortIncompleteMultipartUpload>
            <DaysAfterInitiation>10</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>


XML中的节点具体描述如下:

名称

描述

是否必选

LifecycleConfiguration

生命周期配置的容器,一个Bucket最多可以配置1000条Rule。

  • 类型:Container

  • 子节点:Rule

  • 父节点:无

Rule

生命周期规则的容器。

  • 类型:Container

  • 子节点:ID, Filter, Status, Expiration

  • 父节点:LifecycleConfiguration

ID

Rule的唯一标识,一个Bucket内ID不能重复。ID可以是任意字符串,包括中文,但不能超过255个字符(UTF-8编码)。

  • 类型:String

  • 子节点:无

  • 父节点:Rule

Filter

规定匹配规则,支持分别设置筛选条件为前缀Prefix或标签Tag,也可组合使用。一个Rule只能有一个Filter,不同Rule的Prefix不能冲突。

  • 类型:Container

  • 子节点:Prefix

  • 父节点:Rule

And

对象筛选器中的一个子集,当指定Tag时需要此元素。

  • 类型:Container

  • 子节点:Prefix, Tag

  • 父节点:Filter

Prefix

符合规则的Object前缀。一个Rule只能有一个Filter和一个Prefix。

  • 类型:String

  • 子节点:无

  • 父节点:Filter

Tag

符合规则的Object标签,最多支持设置10个标签。

  • 类型:Container

  • 子节点:Key, Value

  • 父节点:And

Key

标签的Key,长度不超过128字节,支持大小写字母、数字、空格和符号 + - = . _ : /

  • 类型:String

  • 子节点:无

  • 父节点:Tag

Value

标签的Value,长度不超过256字节,支持大小写字母、数字、空格和符号 + - = . _ : /

  • 类型:String

  • 子节点:无

  • 父节点:Tag

Status

指定Rule是启用还是禁用。

  • 类型:String

  • 取值:Enabled、Disabled

    * Enabled:启用规则,该Rule将每日0点被执行一次

    * Disabled:不启用该Rule,该Rule随时能被Enable

  • 子节点:无

  • 父节点:Rule

Expiration

规定对应的Object何时被删。

  • 类型:Container

  • 子节点:Days, Date

  • 父节点:Rule

Date

指定一个日期,KS3会对最后修改时间早于该日期的数据执行生命周期规则。

  • 类型:String

  • 子节点:无

  • 父节点:Expiration, Transition

1. 必须是ISO8601格式的北京时间,且必须UTC的零点。日期格式为yyyy-MM-ddT00:00:00.000+08:00或yyyy-MM-ddT00:00:00Z。

2. 如果Date是过去日期,该规则在成功配置的次日0点将会开始生效;如果Date是未来日期,该规则在到达该日期的次日0点才会开始生效。全部操作完成时间与对象的数量规模有关,建议客户在开始扫描的次日观察生效情况。

是,如果没有Days

Days

指定生命周期规则在Object最后修改多少天后开始生效。

  • 类型:正整数

  • 取值范围:1-10000

  • 子节点:无

  • 父节点:Expiration, Transition

该规则在成功配置的次日0点将会开始生效,全部操作完成时间与对象的数量规模有关,建议客户在开始扫描的次日观察生效情况。

是,如果没有Date

Transition

指定Object在有效生命周期中,何时将对象转储为STANDARD_IA或者ARCHIVE存储类型。

  • 类型:Container

  • 子节点:Days, Date, StorageClass

  • 父节点:Rule

StorageClass

指定Object转储的目标存储类型。

  • 取值:STANDARD_IA, ARCHIVE

  • 子节点:无

  • 父节点:Transition

否,如果Transition有的话,则必须包含

AbortIncompleteMultipartUpload

指定未完成分块上传的过期属性。

  • 父节点:Rule

  • 子节点:DaysAfterInitiation, Date

否,如果没有Date

DaysAfterInitiation

指明分片上传开始后多少天内必须完成上传,否则删除。

  • 父节点:AbortIncompleteMultipartUpload

过期删除时间范围是1-10000。

1. 一个Bucket可以设置多条Rule。当在生命周期规则中指定对象标签时,必须使用And节点。

2. 规则的执行时间为每日0点,即KS3服务端每日0点会自动扫描符合规则的文件并执行规则。

3. Prefix与Tag可搭配使用,单条规则仅能有一个Prefix,Tag可以设置多个。

4. Rule的每个子节点最多只能出现一次,如ID和Status,都只能有一个。

5. 当未开启允许前缀重叠功能时,若某个Rule中同时设置Tag与Prefix,设置的前缀允许重叠。若某个Rule中仅设置了Prefix,设置的前缀不允许重叠。如logs和docs可以设置成功,但logs和logs2016会因为前缀重叠导致设置失败。

6. 当开启允许前缀重叠功能时,无论是否设置了Tag,多条前缀重叠均可以设置成功并且生效。

7. Days为指定相对时间,是相对Object的最后修改时间(last modfiy time),如Object在2017-01-02 15:05被修改,Days如果设置为2,删除将发生在2017-01-05 00:00,即顺延2天后的下一个0点。最后修改时间(last modfiy time),是最后一次PUT,POST,COPY的时间。

8. 如果Date是过去时间,该规则在成功配置的次日0点将会开始生效,执行时判断last modfiy time<=该Date;如果Date是未来时间,该规则在到达该日期的次日0点才会开始生效,执行时仍然判断last modfiy time<= 该Date。

9. 设置完生命周期规则后,请在KS3控制台或使用Get Bucket Lifecycle接口再次检查,确保设置结果与您的预期相符。

响应

响应头部

该接口只返回常用响应头部

响应内容

该接口不返回响应内容。

特殊错误

该接口不返回任何特殊错误。

示例

简单请求示例

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
x-kss-allow-same-action-overlap: true

<LifecycleConfiguration>
    <Rule>
        <ID>id1</ID>
        <Filter>
            <Prefix>logs/111</Prefix>
        </Filter>
        <Expiration>
            <Date>2016-12-31T00:00:00+08:00</Date>
        </Expiration>
        <Status>Enabled</Status>
    </Rule>
    <Rule>
        <ID>id2</ID>
        <Filter>
            <Prefix>logs/111/222</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点前的以logs/111开头的文件。
    2. 以logs/111/222开头的文件在最后修改时间130天后删除。
    3. 执行时间为未来某个时间(2021.1.1),执行效果是删除最后修改时间 < 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***

指定删除Bucket中碎片示例

PUT /?lifecycle HTTP/1.1
Host: {BucketName}.{endpoint}
Date: {date}
Authorization: {SignatureValue}
Content-length: {length}
Content-MD5: {md5}
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
    <Rule>
        <ID>id2</ID>
        <Filter>
            <Prefix>logs</Prefix>
        </Filter>
        <Status>Enabled</Status>
        <AbortIncompleteMultipartUpload>
            <DaysAfterInitiation>10</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>

以上示例为对某个Bucket设置了1条规则:对Bucket内的以logs开头的Part,在最后修改时间10天后删除

响应示例

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错误

AccessDenied

403

没有操作权限。仅支持Bucket拥有者或拥有ks3:PutBucketLifecycle权限的用户设置生命周期规则

InvalidArgument

400

当没有开启支持前缀重叠且没有设置Tag时,设置了前缀重叠的生命周期规则

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

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈