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

生命周期管理

更新时间:2018-06-20 10:50:08

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

  • 规则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();
本文导读目录