最近更新时间:2026-06-03 21:32:12
以下代码用于设置生命周期规则:
from ks3.connection import Connection
from datetime import datetime
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
# 获取存储空间实例
b = c.get_bucket('<YOUR_BUCKET_NAME>')
from ks3.xmlParsers.bucketLifecycle import BucketLifecycle, Rule as LifecycleRule, Filter as LifecycleFilter, \
Expiration as LifecycleExpiration, Transition as LifecycleTransition, AbortIncompleteMultipartUpload
from ks3.objectTagging import Tag
tag = Tag(key="tag1", value="test1")
# 筛选前缀为prefix1、标签为tag1:test1的objects,设置过期规则,在其最后修改时间3天后过期。
rule1 = LifecycleRule('rule1', LifecycleFilter('prefix1', tags=[tag]),
status='Enabled',
expiration=LifecycleExpiration(days=3))
# 设置过期规则,筛选标签为tag1:test1 的objects,最后修改时间在指定日期之前的,过期
rule2 = LifecycleRule('rule2', LifecycleFilter(tags=[tag]),
status='Enabled',
expiration=LifecycleExpiration(
date=datetime(2021, 12, 12).isoformat(timespec='seconds') + '+08:00'))
# 设置存储类型转换规则,筛选前缀为prefix3的objects,在其最后修改时间20天之后转为低频访问类型,在其最后修改时间30天之后转为归档类型。
rule3 = LifecycleRule('rule3', LifecycleFilter('prefix3'),
status='Enabled',
transitions=[LifecycleTransition(days=20, storage_class='STANDARD_IA'),
LifecycleTransition(days=30, storage_class='ARCHIVE')])
# 设置存储类型转换规则,筛选前缀为prefix4的objects,最后修改时间在指定日期之前的,转为低频访问类型
rule4 = LifecycleRule('rule4', LifecycleFilter('prefix4'),
status='Enabled',
transitions=[
LifecycleTransition(date=datetime(2021, 12, 12).isoformat(timespec='seconds') + '+08:00',
storage_class='STANDARD_IA')])
# 设置分片上传碎片清理规则,筛选前缀为prefix5的part,在最后修改时间7天后删除
rule5 = LifecycleRule('rule5', LifecycleFilter('prefix5'),
status='Enabled',
abort_incomplete_multipart_upload=AbortIncompleteMultipartUpload(days_after_initiation=7))
# 设置分片上传碎片清理规则,筛选前缀为prefix5的part,文件碎片生成时间早于指定日期的,文件碎片删除。
# rule5 = LifecycleRule('rule5', LifecycleFilter('prefix5'),
# status='Enabled',
# abort_incomplete_multipart_upload=AbortIncompleteMultipartUpload(date=datetime(2021, 12, 12).isoformat(timespec='seconds') + '+08:00'))
lifecycle = BucketLifecycle([rule1, rule2, rule3, rule4, rule5])
# 设置生命周期规则
ret = b.set_bucket_lifecycle(lifecycle)
print("set_bucket_lifecycle, request_id: ", ret.response_metadata.request_id)
有关设置生命周期相关API,请参见Put Bucket Lifecycle。
from ks3.connection import Connection
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
# 获取存储空间实例
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 查看生命周期规则
lifecycle = b.get_bucket_lifecycle()
print("get_bucket_lifecycle, request_id: ", lifecycle.response_metadata.request_id)
print(lifecycle.to_xml())
有关查看生命周期规则相关API,请参见Get Bucket Lifecycle。
from ks3.connection import Connection
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
# 获取存储空间实例
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 删除生命周期规则
resp = b.delete_bucket_lifecycle()
print("delete_bucket_lifecycle, request_id: ", resp.response_metadata.request_id)
有关删除生命周期规则相关API,请参见Delete Bucket Lifecycle。
以下代码用于设置带对象大小(ObjectSize)过滤条件的生命周期规则,仅对指定大小范围内的对象生效:
from ks3.connection import Connection
from ks3.xmlParsers.bucketLifecycle import BucketLifecycle, Rule as LifecycleRule, Filter as LifecycleFilter, \
Expiration as LifecycleExpiration
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 使用 object_size_greater_than 和 object_size_less_than 过滤对象大小
# 仅对大于 500 字节且小于 64000 字节的对象生效
rule = LifecycleRule(
'size-filter-rule',
LifecycleFilter('logs/', object_size_greater_than=500, object_size_less_than=64000),
status='Enabled',
expiration=LifecycleExpiration(days=30)
)
lifecycle = BucketLifecycle([rule])
ret = b.set_bucket_lifecycle(lifecycle)
print("set_bucket_lifecycle, request_id:", ret.response_metadata.request_id)
object_size_greater_than 和 object_size_less_than
可单独使用或组合使用,单位为字节。当同时指定前缀和对象大小时,两个条件需同时满足。
以下代码用于设置带排除条件(Not)的生命周期规则,排除特定前缀或标签的对象:
from ks3.connection import Connection
from ks3.xmlParsers.bucketLifecycle import BucketLifecycle, Rule as LifecycleRule, Filter as LifecycleFilter, \
Expiration as LifecycleExpiration, Not
from ks3.objectTagging import Tag
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 方式一:排除特定前缀
not_condition = Not(prefix='documents/important/')
rule = LifecycleRule(
'exclude-important-rule',
LifecycleFilter('documents/', nots=[not_condition]),
status='Enabled',
expiration=LifecycleExpiration(days=30)
)
# 方式二:排除带有特定标签的对象
exclude_tag = Tag()
exclude_tag.key = 'retain'
exclude_tag.value = 'true'
not_with_tag = Not(prefix='temp/', tag=exclude_tag)
rule2 = LifecycleRule(
'exclude-tagged-rule',
LifecycleFilter('temp/', nots=[not_with_tag]),
status='Enabled',
expiration=LifecycleExpiration(days=7)
)
# 方式三:多个 Not 条件
not1 = Not(prefix='prefix1/')
not2 = Not(prefix='prefix2/')
rule3 = LifecycleRule(
'multi-exclude-rule',
LifecycleFilter('', nots=[not1, not2]),
status='Enabled',
expiration=LifecycleExpiration(days=90)
)
lifecycle = BucketLifecycle([rule, rule2, rule3])
ret = b.set_bucket_lifecycle(lifecycle)
print("set_bucket_lifecycle, request_id:", ret.response_metadata.request_id)
Not 条件用于排除匹配的对象,支持按前缀(prefix)和标签(tag)进行排除。一个 Filter 中可以包含多个 Not
条件,对象只要匹配任一 Not 条件即被排除。
以下代码用于设置允许相同操作重叠(AllowSameActionOverlap)的生命周期规则:
from ks3.connection import Connection
from ks3.xmlParsers.bucketLifecycle import BucketLifecycle, Rule as LifecycleRule, Filter as LifecycleFilter, \
Expiration as LifecycleExpiration, Transition as LifecycleTransition
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='<YOUR_REGION_ENDPOINT>')
b = c.get_bucket('<YOUR_BUCKET_NAME>')
rule = LifecycleRule(
'overlap-rule',
LifecycleFilter('data/'),
status='Enabled',
transitions=[
LifecycleTransition(days=30, storage_class='STANDARD_IA'),
LifecycleTransition(days=60, storage_class='ARCHIVE')
],
expiration=LifecycleExpiration(days=90)
)
# 设置 allow_same_action_overlap=True,允许多条规则对同一对象执行相同操作
# 此选项通过 x-kss-allow-same-action-overlap 请求头传递
lifecycle = BucketLifecycle([rule], allow_same_action_overlap=True)
ret = b.set_bucket_lifecycle(lifecycle)
print("set_bucket_lifecycle, request_id:", ret.response_metadata.request_id)
allow_same_action_overlap 参数控制是否允许多条生命周期规则对同一对象执行相同操作。默认情况下,如果多条规则对同一对象有冲突操作,请求会被拒绝。设置为
True 后可允许此类重叠。
纯净模式
