全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

生命周期管理

更新时间:2018-04-23 10:10:52

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

  • 规则ID,用于标识一条规则,不能重复
  • 受影响的文件前缀,此规则只作用于符合前缀的文件
  • 过期时间,有两种指定方式:
    1. 指定距文件最后修改时间N天过期
    2. 指定日期创建前的文件过期,之后的不过期
  • 是否生效

更多文档请参考:

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

设置生命周期规则

通过bucket.put_bucket_lifecycle来设置生命周期规则:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle,AbortMultipartUpload
  4. import datetime
  5. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
  6. bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
  7. #最近修改3天后过期
  8. rule1 = LifecycleRule('rule1', 'tests/',
  9. status=LifecycleRule.ENABLED,
  10. expiration=LifecycleExpiration(days=3))
  11. # 特定日期前创建的文件过期
  12. rule2 = LifecycleRule('rule2', 'logging-',
  13. status=LifecycleRule.DISABLED,
  14. expiration=LifecycleExpiration(created_before_date=datetime.date(2018, 12, 12)))
  15. # Multipart3天后过期
  16. rule3 = LifecycleRule('rule3', 'tests1/',
  17. status=LifecycleRule.ENABLED,
  18. abort_multipart_upload=AbortMultipartUpload(days=3))
  19. # 特定日期前的Multipart过期
  20. rule4 = LifecycleRule('rule4', 'logging1-',
  21. status=LifecycleRule.DISABLED,
  22. abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2018, 12, 12)))
  23. lifecycle = BucketLifecycle([rule1, rule2,rule3,rule4])
  24. bucket.put_bucket_lifecycle(lifecycle)

获取生命周期规则

通过bucket.get_bucket_lifecycle来查看生命周期规则:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
  4. bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
  5. lifecycle = bucket.get_bucket_lifecycle()
  6. for rule in lifecycle.rules:
  7. if rule.abort_multipart_upload is None:
  8. print('id={0}, prefix={1}, status={2}, days={3}, created_before_date={4}'
  9. .format(rule.id, rule.prefix, rule.status,
  10. rule.expiration.days,
  11. rule.expiration.created_before_date))
  12. else:
  13. print('id={0}, prefix={1}, status={2}, days={3}, created_before_date={4}'
  14. .format(rule.id, rule.prefix, rule.status,
  15. rule.abort_multipart_upload.days,
  16. rule.abort_multipart_upload.created_before_date))

删除生命周期规则

通过bucket.delete_bucket_lifecycle设置来清空生命周期规则

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
  4. bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
  5. bucket.delete_bucket_lifecycle()
  6. # 再次获取就会抛出异常
  7. try:
  8. lifecycle = bucket.get_bucket_lifecycle()
  9. except oss2.exceptions.NoSuchLifecycle:
  10. print('lifecycle is not configured')
本文导读目录