开发者社区> 问答> 正文

Python-SDK之如何实现生命周期管理?

用户可以为自己的Bucket设置生命周期规则,来管理器中的文件。目前,用户可以通过规则来删除相匹配的文件。每条规则都由如下几个部分组成:

  • 规则ID,用于表示一条规则,不可以和别的规则重复
  • Object名称前缀,只有匹配该前缀的Object才适用这个规则。前缀之间不能重叠,如 /home 和 /home/user 是不合法的。因为前者是后者的前缀
  • 操作,用户希望对匹配的Object所执行的操作。
  • 过期天数,指定距文件最后修改时间多少天之后删除
  • 是否生效

更多文档请参考:

注意:生命周期涉及到删除用户数据,请务必仔细阅读相关文档,并在测试Bucket上进行试验后,再在生产Bucket中使用。


设置生命周期规则


以下示例设置了两条规则:
  • 规则一:规则ID是rule1;前缀是tests/;状态是启用;有效期是356天。
  • 规则二:规则ID是rule2;前缀是logging-;状态是关闭;有效期是1天。
  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle
  4. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
  5. bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
  6. rule1 = LifecycleRule('rule1', 'tests/',
  7.                       status=LifecycleRule.ENABLED,
  8.                       expiration=LifecycleExpiration(days=356))
  9. rule2 = LifecycleRule('rule2', 'logging-',
  10.                       status=LifecycleRule.DISABLED,
  11.                       expiration=LifecycleExpiration(days=1))
  12. bucket.put_bucket_lifecycle(BucketLifecycle([rule1, rule2]))


获取生命周期规则

  1. lifecycle = bucket.get_bucket_lifecycle()
  2. for rule in lifecycle.rules:
  3.     print('id={0}, prefix={1}, status={2}, days={3}, date={4}'
  4.           .format(rule.id, rule.prefix, rule.status, rule.expiration.days, rule.expiration.date))


删除生命周期规则


删除Bucket所有的生命周期规则,即关闭生命周期功能:
  1. bucket.delete_bucket_lifecycle()
  2. # 再次获取就会抛出异常
  3. try:
  4.     lifecycle = bucket.get_bucket_lifecycle()
  5. except oss2.exceptions.NoSuchLifecycle:
  6.     print('lifecycle is not configured')

展开
收起
青衫无名 2017-10-18 11:41:17 1972 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载