生命周期配置元素

最近更新时间: 2024-10-17 17:10:00

基本结构

生命周期配置使用 XML 描述方法,其可以配置一条或多条生命周期规则,基本结构如下:

<LifecycleConfiguration>
    <Rule>
        <ID>**your lifecycle name**</ID>
        <Status>Enabled</Status>
        <Filter>
            <And>
                <Prefix>projectA/</Prefix>
                <Tag>
                    <Key>key1</Key>
                    <Value>value1</Value>
                </Tag>
            </And>
        </Filter>
        **transition/expiration actions**
    </Rule>
    <Rule>
        ...
    </Rule>
</LifecycleConfiguration>

其中每一条规则包含如下内容:

  • ID(可选):可自定义的描述规则的内容。
  • Status:可选择规则启用 Enabled 或禁用 Disabled 的状态。
  • Filter:用于指定需要操作的对象的筛选条件。
  • 操作:需要对符合以上描述的对象执行的操作。
  • 时间:支持根据最后修改时间指定天数 Days,或指定某个具体的日期 Date 前修改的对象。

规则描述

Filter 元素

针对存储桶中的所有对象

指定空的筛选条件,将会应用于存储桶中的所有对象。

<LifecycleConfiguration>
    <Rule>
        <Filter>
        </Filter>
        <Status>Enabled</Status>
        **transition/expiration actions**
    </Rule>
</LifecycleConfiguration>

针对指定的对象键前缀

指定对象前缀,可以对一部分符合前缀描述的对象组执行操作,例如设置以 logs/ 为前缀的所有对象。

<LifecycleConfiguration>
    <Rule>
        <Filter>
           <Prefix>logs/</Prefix>
        </Filter>
        <Status>Enabled</Status>
        **transition/expiration actions**
    </Rule>
</LifecycleConfiguration>

针对指定的对象标签

指定某些符合对象标签的 key 和 value 为筛选条件,对特定标签的对象执行操作,例如设置标签的 key=type 和 value=image 为筛选条件的对象:

<LifecycleConfiguration>
    <Rule>
        <Filter>
           <Tag>
              <Key>type</Key>
              <Value>image</Value>
           </Tag>
        </Filter>
        <Status>Enabled</Status>
        **transition/expiration actions**
    </Rule>
</LifecycleConfiguration>

合并使用多个筛选条件

COS 支持通过 AND 的逻辑来合并使用多个筛选条件,例如设置以 logs/ 为前缀,同时对象标签的 key=type 和 value=image 为筛选条件的对象:

<LifecycleConfiguration>
    <Rule>
        <Filter>
            <And>
                <Prefix>logs/</Prefix>
                <Tag>
                      <Key>type</Key>
                      <Value>image</Value>
                </Tag>
            </And>
        </Filter>
        <Status>Enabled</Status>
        **transition/expiration actions**
    </Rule>
</LifecycleConfiguration>

操作元素

在生命周期规则中,可以对符合条件的一组对象执行一个或多个操作。

转换操作

指定 Transition 操作可以使对象从一个存储类型转换到另一个存储类型,如果存储桶开启了版本控制,其只对当前版本执行操作。最短的 Transition 设置时间为0天。例如,设置30天后沉降至归档存储:

<Transition>
    <StorageClass>ARCHIVE</StorageClass>
    <Days>30</Days>
</Transition>

过期删除

指定 Expiration 操作可以使符合规则的对象执行过期删除操作,如果存储桶从未启用过版本控制,则将永久删除对象。如果存储桶启用过版本控制,则将为过期的对象添加一个 DeleteMarker 标记,并将其设置为当前版本。例如,设置30天后删除对象:

<Expiration>
    <Days>30</Days>
</Expiration>

未完成的分块上传

指定 AbortIncompleteMultipartUpload 操作可以允许分块上传的指定 UploadId 任务在保持一段时间后删除,其不再提供续传或可被检索的特性。例如,设置7天后清除未完成的分块上传任务:

<AbortIncompleteMultipartUpload>
    <Days>7</Days>
</AbortIncompleteMultipartUpload>

非当前版本的对象

在启用过版本控制的存储桶中,转换只会对最新版本执行,过期操作只会添加删除标记,因此对象存储 COS 对非当前版本的推向提供了如下操作:

指定 NoncurrentVersionTransition 可以将非当前版的对象在指定时间转换到另一个存储类型。例如,设置历史版本在30天后沉降至归档存储:

<NoncurrentVersionTransition>
    <StorageClass>ARCHIVE</StorageClass>
    <Days>30</Days>
</NoncurrentVersionTransition>

指定 NoncurrentVersionExpiration 可以将非当前版本的对象在指定时间内过期删除。例如,设置历史版本在30天后删除:

<NoncurrentVersionExpiration>
    <Days>30</Days>
</NoncurrentVersionExpiration>

指定 ExpiredObjectDeleteMarker 可以在对象键的所有历史版本都已经删除,且最新的对象版本是删除标记 DeleteMarker 时,清除掉这个删除标记。例如,设置31天后移除过期对象的删除标记:

<ExpiredObjectDeleteMarker>
    <Days>31</Days>
</ExpiredObjectDeleteMarker>

时间元素

按天数计算

使用 Days 指定天数,是按照对象的最后修改时间来计算的。

  • 例如,设置一个对象在0天后转换为归档存储类型,对象于2018-01-01 23:55:00 GMT+8上传,则其将于2018-01-02 00:00:00 GMT+8起进入转换存储类型的处理队列,最晚于2018-01-02 23:59:59 GMT+8前完成转换。
  • 例如,设置一个对象在1天后过期删除,对象于2018-01-01 23:55:00 GMT+8上传,则其将于2018-01-03 00:00:00 GMT+8起进入过期删除的处理队列,最晚于2018-01-03 23:59:59 GMT+8前完成删除。

按指定日期

使用 Date 指定日期,将会在到达特定日期时,对符合筛选条件的所有对象执行该操作。目前仅支持指定 GMT+8 时区,设置为0时的 ISO8601 格式的时间。 例如,2018 年01月01日,描述为:2018-01-01T00:00:00+08:00。