开发者社区> 问答> 正文

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

OSS允许用户对Bucket设置生命周期规则,以自动淘汰过期掉的文件,节省存储空间。针对不同前缀的文件,用户可以同时设置多条规则。一条规则包含:

  • 规则ID,用于标识一条规则,不能重复
  • 受影响的文件前缀,此规则只作用于符合前缀的文件
  • 过期时间,有三种指定方式:
    1. 指定距文件最后修改时间N天过期
    2. 指定日期创建前的文件过期,之后的不过期
    3. 指定在具体的某一天过期,即在那天之后符合前缀的文件将会过期,而不论文件的最后修改时间。不推荐使用。
  • 是否生效

上面的过期规则对用户上传的文件有效。用户通过uploadPart上传的分片,也可以设置过期规则。Multipart的Lifecycle和文件的类似,过期时间支持1、2两种,不支持3,生效是以init Multipart upload的时间为准。
更多关于生命周期的内容请参考 文件生命周期

设置生命周期规则


通过OSSClient.setBucketLifecycle来设置生命周期规则:
  1. SetBucketLifecycleRequest request = new SetBucketLifecycleRequest("bucketName");
  2. // 最近修改3天后过期
  3. request.AddLifecycleRule(new LifecycleRule(ruleId0, matchPrefix0, RuleStatus.Enabled, 3));
  4. // 特定日期后过期
  5. request.AddLifecycleRule(new LifecycleRule(ruleId1, matchPrefix1, RuleStatus.Enabled,
  6.         DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z")));
  7. // 特定日期前创建的文件过期
  8. LifecycleRule rule = new LifecycleRule(ruleId4, matchPrefix4, RuleStatus.Enabled);
  9. rule.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
  10. request.AddLifecycleRule(rule);
  11. // Multipart3天后过期
  12. rule = new LifecycleRule(ruleId2, matchPrefix2, RuleStatus.Enabled);
  13. LifecycleRule.AbortMultipartUpload abortMultipartUpload = rule.new AbortMultipartUpload();
  14. abortMultipartUpload.setExpirationDays(3);
  15. rule.setAbortMultipartUpload(abortMultipartUpload);
  16. request.AddLifecycleRule(rule);
  17. // 特定日期前的Multipart过期
  18. rule = new LifecycleRule(ruleId3, matchPrefix3, RuleStatus.Enabled);
  19. abortMultipartUpload = rule.new AbortMultipartUpload();
  20. abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
  21. rule.setAbortMultipartUpload(abortMultipartUpload);
  22. request.AddLifecycleRule(rule);
  23. ossClient.setBucketLifecycle(request);


查看生命周期规则


通过OSSClient.GetBucketLifecycle来查看生命周期规则:
  1. List<LifecycleRule> rules = ossClient.getBucketLifecycle("bucketName");
  2. for (LifecycleRule rule : rules) {
  3.     System.out.println(rule.getId());
  4.     System.out.println(rule.getPrefix());
  5.     System.out.println(rule.getExpirationDays());
  6. }


清空生命周期规则


通过OSSClient.DeleteBucketLifecycle设置来清空生命周期规则:
  1. ossClient.deleteBucketLifecycle("bucketName");

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

相关电子书

更多
跨平台的云服务SDK需要什么 立即下载
如何通过 Serverless 提高 Java 微服务治理效 立即下载
一个跨平台的云服务SDK需要什么 立即下载