功能描述
COS 支持用户以生命周期配置的方式来管理 Bucket 中 Object 的生命周期。生命周期配置包含一个或多个将应用于一组对象规则的规则集(其中每个规则为 COS 定义一个操作)。
这些操作分为以下两种:
转换操作:定义对象转换为另一个存储类的时间。例如,您可以选择在对象创建30天后将其转换为低频存储(STANDARD_IA,适用于不常访问)存储类别。同时也支持将数据沉降到智能分层存储(INTELLIGENT_TIERING,访问模式不固定)和归档存储(ARCHIVE,成本更低)。具体参数查看请求示例说明中 Transition 项。
过期操作:指定 Object 的过期时间。COS 将会自动为用户删除过期的 Object。
授权说明
细节分析
PUT Bucket lifecycle 用于为 Bucket 创建一个新的生命周期配置。
注意:
如果该 Bucket 已配置生命周期,使用该接口创建新的配置的同时则会覆盖原有的配置。
同一条生命周期规则中不可同时支持 Days 和 Date 参数,请分成两条规则分别传入,具体请参见下文 实际案例。
开启了 多 AZ 配置的存储桶,不支持将多 AZ 存储类型沉降到单 AZ 存储类型。
每个存储桶最多可添加1000条生命周期规则。
基于访问时间(Access Time,Atime)的生命周期规则当前白名单开放,仅支持沉降到低频存储,不兼容 MAZ 存储桶,不支持标签筛选和对象大小筛选,更多限制及说明可参考 基于访问时间的生命周期规则。
请求
请求示例
PUT /?lifecycle HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comContent-Length: lengthDate: GMT DateAuthorization: Auth StringContent-MD5: MD5
说明:
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com,其中 <BucketName-APPID> 为带 APPID 后缀的存储桶名字,例如 examplebucket-1250000000,可参阅 存储桶概览 > 基本信息 和 存储桶概述 > 存储桶命名规范 文档;<Region> 为 COS 的可用地域,可参阅 地域和访问域名 文档。
Authorization: Auth String(详情请参见 请求签名 文档)。
请求头
请求体
该 API 接口请求的请求体具体节点内容为:
<LifecycleConfiguration><Rule><ID></ID><Filter><And><Prefix></Prefix><PrefixNotEquals></PrefixNotEquals><Tag><Key></Key><Value></Value></Tag><ObjectSizeGreaterThan></ObjectSizeGreaterThan><ObjectSizeLessThan></ObjectSizeLessThan></And></Filter><Status></Status><Transition><Days></Days><StorageClass></StorageClass></Transition><NoncurrentVersionExpiration><NoncurrentDays></NoncurrentDays></NoncurrentVersionExpiration></Rule><Rule><ID></ID><Filter><Prefix></Prefix></Filter><Status></Status><Transition><Days></Days><StorageClass></StorageClass></Transition><NoncurrentVersionTransition><NoncurrentDays></NoncurrentDays><StorageClass></StorageClass></NoncurrentVersionTransition></Rule><Rule><ID></ID><Filter><Prefix></Prefix></Filter><Status></Status><Expiration><ExpiredObjectDeleteMarker></ExpiredObjectDeleteMarker></Expiration><NoncurrentVersionExpiration><NoncurrentDays></NoncurrentDays></NoncurrentVersionExpiration><AbortIncompleteMultipartUpload><DaysAfterInitiation></DaysAfterInitiation></AbortIncompleteMultipartUpload></Rule><Rule><ID></ID><Filter><And><Prefix></Prefix><PrefixNotEquals></PrefixNotEquals></And></Filter><Status></Status><Transition><AccessFrequency><AccessCountLessThan></AccessCountLessThan><RecentDays></RecentDays></AccessFrequency><StorageClass></StorageClass></Transition><NoncurrentVersionTransition><AccessFrequency><AccessCountLessThan></AccessCountLessThan><RecentDays></RecentDays></AccessFrequency><StorageClass></StorageClass></NoncurrentVersionTransition></Rule></LifecycleConfiguration>
具体内容描述如下:
节点名称(关键字) | 父节点 | 描述 | 类型 | 是否必选 |
LifecycleConfiguration | 无 | 生命周期配置 | Container | 是 |
Rule | LifecycleConfiguration | 规则描述 | Container | 是 |
ID | LifecycleConfiguration.Rule | 用于唯一地标识规则,长度不能超过255个字符 | String | 否 |
Filter | LifecycleConfiguration.Rule | Filter 用于描述规则影响的 Object 集合 | Container | 否 |
And | LifecycleConfiguration.Rule .Filter | 对象筛选器中的一个子集,仅当需要指定多种筛选规则时才需要此元素,例如:同时指定 Prefix 和 Tag 筛选,或同时指定多个 Tag 筛选。 | Container | 否 |
Prefix | LifecycleConfiguration.Rule .Filter.And | 指定规则所适用的前缀。匹配前缀的对象受该规则影响,Prefix 最多只能有一个 | String | 否 |
PrefixNotEquals | LifecycleConfiguration.Rule.Filter.And | 筛选 Prefix 不匹配该字符串的 Objects。PrefixNotEquals 最多只能有一个,且覆盖范围是 Prefix 的子集。 | String | 否 |
ObjectSizeGreaterThan | LifecycleConfiguration.Rule
.Filter.And | 筛选条件,指定规则所适用的对象的大小必须大于某值(不包括等于),单位为 Bytes。 注意: ObjectSizeGreaterThan 的值必须大于等于65536。 | Integer | 否 |
ObjectSizeLessThan | LifecycleConfiguration.Rule
.Filter.And | 筛选条件,指定规则所适用的对象必须小于某值(不包括等于),单位为 Bytes。 注意: ObjectSizeLessThan 的值必须大于等于65537。 ObjectSizeLessThan 的值必须大于ObjectSizeGreaterThan。 | Integer | 否 |
Tag | LifecycleConfiguration.Rule .Filter.And | 标签集合,最多支持10个标签 | Container | 否 |
Key | LifecycleConfiguration.Rule .Filter.And.Tag | 标签的 Key,长度不超过128字节,支持英文字母、数字、空格、加号、 减号、下划线、等号、点号、冒号、斜线 | String | 否 |
Value | LifecycleConfiguration.Rule .Filter.And.Tag | 标签的 Value,长度不超过256字节, 支持英文字母、数字、空格、加号、 减号、下划线、等号、点号、冒号、斜线 | String | 否 |
Status | LifecycleConfiguration.Rule | 指明规则是否启用,枚举值:Enabled,Disabled | String | 是 |
Expiration | LifecycleConfiguration.Rule | 规则过期属性。可同时配置 Transition(规则转换属性) 或者选择其中一种属性进行配置 | Container | 否 |
ExpiredObjectDeleteMarker | LifecycleConfiguration.Rule .Expiration | 删除无历史版本的删除标记。枚举值:true、false。 true:表示删除无历史版本的删除标记。 false:表示不删除无历史版本的删除标记。 注意: 同一条规则中不支持同时设置删除当前版本的参数。 同一条规则中必须同时设置删除历史版本的规则(NoncurrentVersionsExpiration),本参数才能正常生效。 | Boolean | 否 |
Transition | LifecycleConfiguration.Rule | 规则转换属性,用于描述对象何时进行存储类型的转换和转换的存储类型。可同时配置 Expiration(规则过期属性) 或者选择其中一种属性进行配置 | Container | 否 |
Days | LifecycleConfiguration.Rule .Transition 或 Expiration | 指明规则对应的动作在对象最后的修改日期过后多少天操作: 如果是 Transition,该字段有效值是非负整数 如果是 Expiration,该字段有效值为正整数,最大支持3650天 | Integer | 否 |
AccessFrequency | Transition或NoncurrentVersionTransition | 指定基于访问时间的生命周期规则。配置此字段后,不支持配置最后修改时间相关的字段(Days 和 NocurrentDays)。 说明: | Container | 否 |
RecentDays | AccessFrequency | 连续X天访问次数小于N次,则尘沉降对象。配置此字段后,不支持配置最后修改时间相关的字段(Days 和 NocurrentDays)该参数表示X,该数值不的超过3650。 | Integer | 是 |
AccessCountLessThan | AccessFrequency | 整数值N,默认值为1,表示连续多天,访问次数小于N次,则执行沉降。配置此字段后,不支持配置最后修改时间相关的字段(Days 和 NocurrentDays)。 | Container | 是 |
DaysAfterInitiation | LifecycleConfiguration.Rule .AbortIncompleteMultipartUpload | 指明分片上传开始后多少天内必须完成上传 | Integer | 是 |
NoncurrentVersionExpiration | LifecycleConfiguration.Rule | 指明非当前版本对象何时过期 | Container | 否 |
NoncurrentVersionTransition | LifecycleConfiguration.Rule | 指明非当前版本对象何时进行存储类型的转换和转换的存储类型 | Container | 否 |
NoncurrentDays | LifecycleConfiguration.Rule .NoncurrentVersionExpiration 或NoncurrentVersionTransition | 指明规则对应的动作在对象变成非当前版本多少天后执行 如果是 Transition,该字段有效值是非负整数 如果是 Expiration,该字段有效值为正整数,最大支持3650天 | Integer | 否 |
StorageClass | LifecycleConfiguration.Rule Transition 或 NoncurrentVersionTransition | 指定 Object 沉降后的存储类型,枚举值: STANDARD_IA,MAZ_STANDARD_IA,INTELLIGENT_TIERING,MAZ_INTELLIGENT_TIERING,ARCHIVE,DEEP_ARCHIVE。关于存储类型的介绍,请参见 存储类型概述 | String | 是 |
响应
响应头
响应体
该响应体为空。
错误码
实际案例
案例一:基于最后修改时间沉降对象
请求
PUT /?lifecycle HTTP/1.1Host:examplebucket-1250000000.cos.ap-beijing.myqcloud.comDate: Wed, 16 Aug 2017 11:59:33 GMTAuthorization:q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR****&q-sign-time=1502855771;1502935771&q-key-time=1502855771;1502935771&q-header-list=content-md5;host&q-url-param-list=lifecycle&q-signature=f3aa2c708cfd8d4d36d658de56973c9cf1c2****Content-MD5: LcNUuow8OSZMrEDnvndw1Q==Content-Length: 348Content-Type: application/x-www-form-urlencoded<LifecycleConfiguration><Rule><ID>id1</ID><Filter><Prefix>documents/</Prefix></Filter><Status>Enabled</Status><Transition><Days>100</Days><StorageClass>ARCHIVE</StorageClass></Transition></Rule><Rule><ID>id2</ID><Filter><Prefix>logs/</Prefix></Filter><Status>Enabled</Status><Transition><Days>10</Days><StorageClass>STANDARD_IA</StorageClass></Transition></Rule></LifecycleConfiguration>
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 0Date: Wed, 16 Aug 2017 11:59:33 GMTServer: tencent-cosx-cos-request-id: NTk5NDMzYTRfMjQ4OGY3Xzc3NGRf****
案例二:基于访问时间沉降对象
请求
PUT /?lifecycle HTTP/1.1Host:examplebucket-1250000000.cos.ap-beijing.myqcloud.comDate: Wed, 16 Aug 2020 11:59:33 GMTAuthorization:q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR****&q-sign-time=1502855771;1502935771&q-key-time=1502855771;1502935771&q-header-list=content-md5;host&q-url-param-list=lifecycle&q-signature=f3aa2c708cfd8d4d36d658de56973c9cf1c2****Content-MD5: LcNUuow8OSZMrEDnvndw1Q==Content-Length: 348Content-Type: application/x-www-form-urlencoded<LifecycleConfiguration><Rule><ID>id1</ID><Filter><Prefix>documents/</Prefix></Filter><Status>Enabled</Status><Transition><AccessFrequency><AccessCountLessThan>2</AccessCountLessThan><RecentDays>7</RecentDays></AccessFrequency><StorageClass></StorageClass></Transition><NoncurrentVersionTransition><AccessFrequency><AccessCountLessThan>2</AccessCountLessThan><RecentDays>7</RecentDays></AccessFrequency><StorageClass></StorageClass></NoncurrentVersionTransition></Rule></LifecycleConfiguration>
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 0Date: Wed, 16 Aug 2020 11:59:33 GMTServer: tencent-cosx-cos-request-id: NTk5NDMzYTRfMjQ4OGY3Xzc3NGRf****