全部产品
阿里云办公

生命周期管理

更新时间:2018-07-04 20:46:14

OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。每条规则包含:

  • 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
  • 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
    • 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
    • 配置到整个存储空间。此种方式只能创建一条规则。
  • 过期时间。有两种指定方式:
    • 指定距文件最后修改时间N天后过期。
    • 指定日期创建前的文件过期,之后的不过期。
  • 是否生效。

通过upload_part方法上传的分片也支持设置生命周期规则。文件最后修改时间以初始化分片上传事件的时间为准。

更多关于生命周期的内容请参见管理对象生命周期

设置生命周期规则

以下代码用于设置生命周期规则:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle,AbortMultipartUpload
  4. import datetime
  5. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  6. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  7. # Endpoint以杭州为例,其它Region请按实际情况填写。
  8. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  9. # 距最后修改时间3天后过期。
  10. rule1 = LifecycleRule('rule1', 'tests/',
  11. status=LifecycleRule.ENABLED,
  12. expiration=LifecycleExpiration(days=3))
  13. # 指定日期之前创建的文件过期。
  14. rule2 = LifecycleRule('rule2', 'logging-',
  15. status=LifecycleRule.DISABLED,
  16. expiration=LifecycleExpiration(created_before_date=datetime.date(2018, 12, 12)))
  17. # 分片3天后过期。
  18. rule3 = LifecycleRule('rule3', 'tests1/',
  19. status=LifecycleRule.ENABLED,
  20. abort_multipart_upload=AbortMultipartUpload(days=3))
  21. # 指定日期之前的分片过期。
  22. rule4 = LifecycleRule('rule4', 'logging1-',
  23. status=LifecycleRule.DISABLED,
  24. abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2018, 12, 12)))
  25. lifecycle = BucketLifecycle([rule1, rule2,rule3,rule4])
  26. bucket.put_bucket_lifecycle(lifecycle)

查看生命周期规则

以下代码用于查看生命周期规则:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. lifecycle = bucket.get_bucket_lifecycle()
  8. for rule in lifecycle.rules:
  9. if rule.abort_multipart_upload is None:
  10. print('id={0}, prefix={1}, status={2}, days={3}, created_before_date={4}'
  11. .format(rule.id, rule.prefix, rule.status,
  12. rule.expiration.days,
  13. rule.expiration.created_before_date))
  14. else:
  15. print('id={0}, prefix={1}, status={2}, days={3}, created_before_date={4}'
  16. .format(rule.id, rule.prefix, rule.status,
  17. rule.abort_multipart_upload.days,
  18. rule.abort_multipart_upload.created_before_date))

清空生命周期规则

以下代码用于清空生命周期规则:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. bucket.delete_bucket_lifecycle()
  8. # 再次查看生命周期规则会抛出异常。
  9. try:
  10. lifecycle = bucket.get_bucket_lifecycle()
  11. except oss2.exceptions.NoSuchLifecycle:
  12. print('lifecycle is not configured')
本文导读目录