全部產品
Search
文件中心

Object Storage Service:生命週期管理

更新時間:Aug 30, 2018

OSS支援設定生命週期(Lifecycle)規則,自動刪除過期的檔案和碎片,或將到期的檔案轉儲為低頻或Archive Storage類型,從而節省儲存費用。每條規則包含:

  • 規則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')