用户可以为自己的Bucket设置生命周期规则,来管理器中的文件。目前,用户可以通过规则来删除相匹配的文件。每条规则都由如下几个部分组成:
- 规则ID,用于表示一条规则,不可以和别的规则重复
- Object名称前缀,只有匹配该前缀的Object才适用这个规则。前缀之间不能重叠,如 /home 和 /home/user 是不合法的。因为前者是后者的前缀
- 操作,用户希望对匹配的Object所执行的操作。
- 过期天数,指定距文件最后修改时间多少天之后删除
- 是否生效
更多文档请参考:
注意:生命周期涉及到删除用户数据,请务必仔细阅读相关文档,并在测试Bucket上进行试验后,再在生产Bucket中使用。
设置生命周期规则
以下示例设置了两条规则:
- 规则一:规则ID是rule1;前缀是tests/;状态是启用;有效期是356天。
- 规则二:规则ID是rule2;前缀是logging-;状态是关闭;有效期是1天。
- # -*- coding: utf-8 -*-
- import oss2
- from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle
- auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
- bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
- rule1 = LifecycleRule('rule1', 'tests/',
- status=LifecycleRule.ENABLED,
- expiration=LifecycleExpiration(days=356))
- rule2 = LifecycleRule('rule2', 'logging-',
- status=LifecycleRule.DISABLED,
- expiration=LifecycleExpiration(days=1))
- bucket.put_bucket_lifecycle(BucketLifecycle([rule1, rule2]))
获取生命周期规则
- lifecycle = bucket.get_bucket_lifecycle()
- for rule in lifecycle.rules:
- print('id={0}, prefix={1}, status={2}, days={3}, date={4}'
- .format(rule.id, rule.prefix, rule.status, rule.expiration.days, rule.expiration.date))
删除生命周期规则
删除Bucket所有的生命周期规则,即关闭生命周期功能:
- bucket.delete_bucket_lifecycle()
- # 再次获取就会抛出异常
- try:
- lifecycle = bucket.get_bucket_lifecycle()
- except oss2.exceptions.NoSuchLifecycle:
- print('lifecycle is not configured')