您可以基于最后一次修改时间以及最后一次访问时间的策略创建生命周期规则,定期将存储空间(Bucket)内的多个文件(Object)转储为指定存储类型,或者将过期的Object和碎片删除,从而节省存储费用。本文为您介绍如何调用PutBucketLifecycle接口为存储空间(Bucket)设置生命周期规则。
注意事项
要为存储空间设置生命周期规则,您必须有
oss:PutBucketLifecycle
权限。具体操作,请参见为RAM用户授权自定义的权限策略。PutBucketLifecycle为覆盖语义。例如,某个Bucket已配置了生命周期规则Rule1,您需要在Rule1基础上继续追加生命周期规则Rule2,您需要执行以下操作。
调用GetBucketLifecycle接口获取当前生命周期规则配置Rule1。
在Rule1基础上叠加Rule2。
调用PutBucketLifecycle接口更新生命周期规则为Rule1+Rule2。
支持对Object以及Part(以分片方式上传,但最后未提交的分片)设置过期时间。
支持基于last access time(最后一次访问时间)或者last modify time(最后一次修改时间)匹配规则。
请求语法
PUT /?lifecycle HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Authorization: SignatureValue
Host: BucketName.oss.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>RuleID</ID>
<Prefix>Prefix</Prefix>
<Status>Status</Status>
<Expiration>
<Days>Days</Days>
</Expiration>
<Transition>
<Days>Days</Days>
<StorageClass>StorageClass</StorageClass>
</Transition>
<AbortMultipartUpload>
<Days>Days</Days>
</AbortMultipartUpload>
</Rule>
</LifecycleConfiguration>
请求头
名称 | 类型 | 是否必选 | 示例值 | 描述 |
x-oss-allow-same-action-overlap | 字符串 | 否 | true | 指定生命周期规则是否允许前缀重叠。取值如下:
|
此接口涉及的其他公共请求头,例如Date,Authorization等。更多信息,请参见公共请求头(Common Request Headers)。
请求元素
名称 | 类型 | 是否必选 | 示例值 | 描述 |
LifecycleConfiguration | 容器 | 是 | 不涉及 | Lifecycle配置的容器,最多支持1000条规则。 子节点:Rule 父节点:无 |
Rule | 容器 | 是 | 不涉及 | 生命周期规则的容器。Object设置过期时间必须大于转储为IA或者Archive存储类型的时间。 子节点:ID、Prefix、Status、Expiration 父节点:LifecycleConfiguration |
ID | 字符串 | 否 | rule1 | 标识规则的唯一ID,最多由255个字符组成。如果未指定或者指定该值为空时,OSS会自动生成一个唯一ID。 子节点:无 父节点:Rule |
Prefix | 字符串 | 否 | tmp/ | 指定规则所适用的前缀(Prefix)。不支持设置相同的Prefix。
子节点:无 父节点:Rule |
Status | 字符串 | 是 | Enabled | 是否启用规则。取值如下:
父节点:Rule |
Expiration | 容器 | 否 | 不涉及 | 指定Object的过期属性。 对于已开启版本控制的Bucket,指定的过期时间只对Object当前版本生效。 Object的过期时间必须大于转储为IA或Archive类型的时间。 子节点:Days、CreatedBeforeDate或ExpiredObjectDeleteMarker 父节点:Rule |
Days | 正整数 | Days与CreatedBeforeDate互斥 | 1 | 指定生命周期规则在距离Object最后更新多少天后生效。 当请求中存在IsAccessTime参数且IsAccessTime取值为true时,此参数表示生命周期规则在距离Object最后访问多少天后生效。 父节点:Expiration或AbortMultipartUpload |
CreatedBeforeDate | 字符串 | CreatedBeforeDate与Days互斥 | 2002-10-11T00:00:00.000Z | 指定一个日期,OSS会对最后更新时间早于该日期的数据执行生命周期规则。日期格式为yyyy-MM-ddT00:00:00.000Z。 日期需要按照ISO8601标准表示并使用UTC时间,且必须为UTC的零点。 父节点:Expiration或者AbortMultipartUpload |
ExpiredObjectDeleteMarker | 字符串 | 否 | true | 指定是否自动移除过期删除标记。取值如下:
父节点:Expiration |
Transition | 容器 | 否 | 不涉及 | 指定Object在有效生命周期中,OSS何时转换Object的存储类型。 Standard Bucket中Standard Object可以转储为IA、Archive或ColdArchive存储类型,但转储Archive存储类型的时间必须比转储IA存储类型的时间长。例如Transition IA设置Days为30,Transition Archive设置Days必须大于30。 父节点:Rule 子节点:Days、CreatedBeforeDate和StorageClass 重要 重要 使用该选项时,Days或CreatedBeforeDate只能二选一。 |
StorageClass | 字符串 | 如果存在父节点Transition或NoncurrentVersionTransition,则必选 | IA | 指定Object转储的存储类型。取值如下:
重要 IA Bucket中的Object可以转储为Archive或者ColdArchive存储类型,但不支持转储为Standard存储类型。 父节点:Transition |
AbortMultipartUpload | 容器 | 否 | 不涉及 | 指定未完成分片上传的过期属性。 子节点:Days或CreatedBeforeDate 父节点:Rule |
Tag | 容器 | 否 | 不涉及 | 指定规则所适用的对象标签,可设置多个。 父节点:Rule 子节点:Key、Value |
Key | 字符串 | 如果存在父节点Tag,则必选 | TagKey1 | 对象标签的键。 父节点:Tag |
Value | 字符串 | 如果存在父节点Tag,则必选 | TagValue1 | 对象标签的值。 父节点:Tag |
NoncurrentVersionExpiration | 容器 | 否 | 不涉及 | 指定Object非当前版本生命周期规则的过期属性。 子节点:NoncurrentDays |
NoncurrentVersionTransition | 容器 | 否 | 不涉及 | 在有效的生命周期规则中,OSS何时将指定Object的非当前版本转储为IA或者Archive存储类型。 Standard类型的Object转储为Archive类型的时间必须大于转储为IA类型的时间。 子节点:NoncurrentDays、StorageClass |
NoncurrentDays | 字符串 | 如果存在父节点NoncurrentVersionExpiration或NoncurrentVersionTransition,则必选 | 10 | 指定生命周期规则在Object成为非当前版本多少天后生效。 当请求中存在IsAccessTime参数且IsAccessTime取值为true时,此参数表示生命周期规则在Object最后访问多少天后生效。 父节点:NoncurrentVersionTransition、NoncurrentVersionExpiration |
IsAccessTime | 字符串 | 否 | true | 指定是否基于last access time匹配规则。取值如下:
父节点:Transition或NoncurrentVersionTransition。 |
ReturnToStdWhenVisit | 字符串 | 否 | false | 指定Object转为非标准存储后,再次访问时是否将Object转为标准存储。只有当IsAccessTime设置为true时才有效。取值如下:
父节点:Transition或NoncurrentVersionTransition。 |
AllowSmallFile | 字符串 | 否 | false | 基于最后一次访问时间设置生命周期规则时,指定是否将小于64 KB的Object转储为低频、归档、冷归档文件类型。取值如下:
父节点:Transition或NoncurrentVersionTransition。 |
Filter | 容器 | 否 | 不涉及 | 本条排除规则的条件参数容器,至多一个,可置空。 父节点:Rule 子节点:Not |
Not | 容器 | 否 | 不涉及 | 如果Object满足该条件,则跳过本条规则的匹配。如果配置了Filter,则Filter下必须有且只有一个Not节点。 父节点:Filter 子节点:Prefix、Tag |
Prefix | 字符串 | 是 | tmp/not/ | 本条排除规则所适用的Object前缀。不可为空。
父节点:Not 子节点:无 |
Tag | 容器 | 否 | 不涉及 | 本条排除规则所适用的Object标签,至多一个,可置空。 |
响应头
此接口仅涉及公共响应头。更多信息,请参见公共响应头(Common Response Headers)。
示例
请求示例
示例1:基于最后一次修改时间策略仅执行转换文件存储类型操作
示例2:基于最后一次修改时间策略仅执行删除文件操作
示例3:基于最后一次修改时间执行转换文件存储类型以及删除操作
示例4:基于最后一次修改时间执行删除历史版本文件及清理删除标记的操作
示例5:基于最后一次修改时间策略限制除指定前缀、标签以外的文件执行转换存储类型及删除操作
示例6:基于最后一次访问时间策略转换文件存储类型
示例7:基于最后一次修改时间执行删除碎片操作
示例8:基于最后一次修改时间对重叠前缀的Object执行删除操作
返回示例
HTTP/1.1 200 OK
x-oss-request-id: 7D3435J59A9812BAD56E
Date: Mon, 6 May 2019 15:23:20 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
SDK
此接口对应的各语言SDK如下:
相关文档
关于生命周期规则的更多信息,请参见生命周期规则概述。
错误码
错误码 | HTTP状态码 | 描述 |
InvalidArgument | 400 | 返回此错误的可能原因如下:
|
AccessDenied | 403 | 没有操作权限。仅支持拥有 |
MalforedXML | 400 | Lifecycle XML校验错误均报错MalformedXML。例如,您对某个Bucket设置基于最后一次访问时间的生命周期规则之前,该Bucket未开启访问追踪。 |