阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

生命週期管理

更新時間: Oct 19, 2018

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

  • 規則ID。用於標識一條規則,同一儲存空間內規則ID不能重複。
  • 策略。有以下兩種設定方式。同一儲存空間內僅支援一種設定方式。
    • 按首碼匹配。此種方式允許建立多條規則,首碼不能重複。
    • 配置到整個儲存空間。此種方式只能建立一條規則。
  • 過期時間。有兩種指定方式:
    • 指定距檔案最後修改時間N天后過期。
    • 指定日期建立前的檔案過期,之後的不過期。
  • 是否生效。

通過uploadPart方法上傳的分區也支援設定生命週期規則。檔案最後修改時間以初始化分區上傳事件的時間為準。

更多關於生命週期的內容請參見管理對象生命週期

設定生命週期規則

以下代碼用於設定生命週期規則:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);
  10. // 設定規則ID和檔案首碼。
  11. String ruleId0 = "rule0";
  12. String matchPrefix0 = "A0/";
  13. String ruleId1 = "rule1";
  14. String matchPrefix1 = "A1/";
  15. String ruleId2 = "rule2";
  16. String matchPrefix2 = "A2/";
  17. String ruleId3 = "rule3";
  18. String matchPrefix3 = "A3/";
  19. // 距最後修改時間3天后過期。
  20. request.AddLifecycleRule(new LifecycleRule(ruleId0, matchPrefix0, RuleStatus.Enabled, 3));
  21. // 指定日期之前建立的檔案過期。
  22. LifecycleRule rule = new LifecycleRule(ruleId1, matchPrefix1, RuleStatus.Enabled);
  23. rule.setCreatedBeforeDate(DateUtil.parseISO8601Date("2022-10-12T00:00:00.000Z"));
  24. request.AddLifecycleRule(rule);
  25. // 分區3天后過期。
  26. rule = new LifecycleRule(ruleId2, matchPrefix2, RuleStatus.Enabled);
  27. LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
  28. abortMultipartUpload.setExpirationDays(3);
  29. rule.setAbortMultipartUpload(abortMultipartUpload);
  30. request.AddLifecycleRule(rule);
  31. // 指定日期之前的分區過期。
  32. rule = new LifecycleRule(ruleId3, matchPrefix3, RuleStatus.Enabled);
  33. abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
  34. abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseISO8601Date("2022-10-12T00:00:00.000Z"));
  35. rule.setAbortMultipartUpload(abortMultipartUpload);
  36. request.AddLifecycleRule(rule);
  37. ossClient.setBucketLifecycle(request);
  38. // 關閉OSSClient。
  39. ossClient.shutdown();

查看生命週期規則

以下代碼用於查看生命週期規則:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. List<LifecycleRule> rules = ossClient.getBucketLifecycle(bucketName);
  10. for (LifecycleRule rule : rules) {
  11. System.out.println(rule.getId());
  12. System.out.println(rule.getPrefix());
  13. System.out.println(rule.getExpirationDays());
  14. System.out.println(rule.getCreatedBeforeDate());
  15. if(rule.hasAbortMultipartUpload()) {
  16. System.out.println(rule.getAbortMultipartUpload().getExpirationDays());
  17. System.out.println(rule.getAbortMultipartUpload().getCreatedBeforeDate());
  18. }
  19. }
  20. // 關閉OSSClient。
  21. ossClient.shutdown();

清空生命週期規則

以下代碼用於清空生命週期規則:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. ossClient.deleteBucketLifecycle(bucketName);
  10. // 關閉OSSClient。
  11. ossClient.shutdown();