Bucket生命周期管理
更新时间:2026-09-23
应用场景
一个数据是有其生命周期的,从创建到归档再到删除可以认为是一个完整的循环。创建之初的数据往往需要频繁访问读取,之后迅速冷却归档,最终被删除。生命周期管理就是对象存储服务帮助用户自动化管理数据的生命周期。通常可以服务于以下场景:
- 数据达到一定寿命后自动归档或删除。
- 指定时间执行操作。
运行以下示例前,请先参考初始化完成 BOS Client 初始化,并将示例中的 bucket_name(及其它占位符)替换为实际值。
新建 Lifecycle 配置
put_bucket_lifecycle(bucket_name, rules) 用于创建生命周期规则。rules 是规则列表,每条规则由 id、status、resource、condition、action 等字段组成。
注意:
- 只有 Bucket 的 Owner 且拥有
FULL_CONTROL权限才能进行此操作。put_bucket_lifecycle会覆盖原有的全部生命周期规则;如需在原有规则基础上新增,请在请求中携带所有新旧规则。
如下代码新建了一个 Lifecycle 配置:
Python
1rule = {}
2rule['id'] = 'rule1'
3rule['status'] = 'enabled'
4rule['action'] = {}
5rule['action']['name'] = 'Transition'
6rule['action']['storageClass'] = 'STANDARD_IA'
7rule['resource'] = [bucket_name + '/*']
8rule['condition'] = {}
9rule['condition']['time'] = {'dateGreaterThan': '2030-01-01T00:00:00Z'}
10
11rules = []
12rules.append(rule)
13
14bos_client.put_bucket_lifecycle(bucket_name, rules)
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
bucket_name |
str | 是 | 需要配置 Lifecycle 的 Bucket 名称。 |
rules |
list | 是 | 生命周期规则列表。 |
id |
str | 是 | 规则标识符,同一 Bucket 内必须唯一;若不填,服务端会自动生成。 |
status |
str | 是 | 规则状态,取值 enabled 或 disabled,disabled 时规则不生效。 |
resource |
list | 是 | 规则生效的资源范围,形式为 bucket_name/<前缀>*。每条规则仅支持一个 resource。例如 bucket_name/prefix/* 对该前缀下所有 Object 生效,bucket_name/* 对全部 Object 生效。 |
condition |
dict | 是 | 规则依赖的条件,必须包含 time。智能分层(IntelligentTiering)规则不设置 condition。 |
condition['time']['dateGreaterThan'] |
str | 是 | 时间条件。支持绝对时间与相对时间:绝对时间格式为 yyyy-mm-ddThh:mm:ssZ(UTC,且必须以 00:00:00Z 结尾),如 2030-01-01T00:00:00Z;相对时间遵循 ISO8601、最小粒度为天,如 $(lastModified)+P7D(对象最后修改 7 天后)、$(lastAccessed)+P90D(对象最后访问 90 天后)。 |
condition['tag'] |
dict | 否 | 对象标签条件,仅对匹配标签的 Object 生效,最多 10 个标签;为空表示应用所有 Object。 |
condition['objectSize'] |
dict | 否 | 对象大小条件,含 minSize/maxSize(单位字节);为空表示不限制大小。 |
action['name'] |
str | 是 | 执行的动作,取值 Transition、DeleteObject、AbortMultipartUpload、IntelligentTiering、NonCurrentVersionDeleteObject、NonCurrentVersionTransition。 |
action['storageClass'] |
str | 否 | 仅当 action 为 Transition/NonCurrentVersionTransition 时设置。非多 AZ Bucket 取值 STANDARD_IA、COLD、ARCHIVE;多 AZ Bucket 取值 MAZ_STANDARD_IA、MAZ_COLD。 |
ExpiredObjectDeleteMarker |
str | 否 | 删除标记过期标志,取值 "true" 或 "false";设置时 action 只能为 DeleteObject。 |
not |
dict | 否 | 排除条件,含 resource(排除前缀,须以 resource 前缀开头且更长)与/或 tag,两者至少存在其一。 |
调用成功后,BOS 会保存该 Bucket 的 Lifecycle 配置。如果服务端返回错误,SDK 会抛出异常。
注意:
- 只有 Bucket 的 Owner 拥有 full control 才能够进行此操作。
"resource"指明规则对哪些资源生效。例如,对 samplebucket 里以prefix/为前缀的 Object 生效:samplebucket/prefix/*;对 samplebucket 里所有 Object 生效:samplebucket/*。
生命周期管理功能相关参数的详细解释及配置注意事项请参见 PutBucketLifecycle接口。
读取 Bucket 的 Lifecycle 配置
如下代码可读取 Bucket 的 Lifecycle 配置。执行前,请确保目标 Bucket 已存在,且已经配置 Lifecycle。
Python
1response = bos_client.get_bucket_lifecycle(bucket_name)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
bucket_name |
是 | 需要读取 Lifecycle 配置的 Bucket 名称。 |
返回值说明如下:
| 返回值 | 说明 |
|---|---|
response |
SDK 返回的响应对象。 |
response.rule |
Bucket 的 Lifecycle 规则列表,包含规则 ID、状态、资源范围、条件和动作等信息。 |
删除 Bucket Lifecycle
如下代码可以删除 Bucket 的 Lifecycle 配置。执行前,请确保目标 Bucket 已存在,且已经配置 Lifecycle。
Python
1bos_client.delete_bucket_lifecycle(bucket_name)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
bucket_name |
是 | 需要删除 Lifecycle 配置的 Bucket 名称。 |
调用成功后,目标 Bucket 的 Lifecycle 配置会被删除。删除后再次读取该 Bucket 的 Lifecycle 配置时,如果返回 NoLifecycleConfiguration,表示 Lifecycle 配置已不存在。
评价此篇文章
