全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

管理存储空间生命周期(Java)

最近更新时间:2025-08-20 20:02:36

创建存储空间生命周期规则

生命周期相关说明请参见文档:生命周期管理

如需按最后访问时间设置生命周期规则,须先开启访问追踪功能。

public void putLifecycle() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        // 规则1
        Rule rule1 = new Rule();
        // 设置规则ID,不可重复
        rule1.setId("rule-1");
        // 设置要匹配的文件的前缀
        rule1.setPrefix("0001/");
        // 设置过期时间,最后修改时间为该时间之前的文件将会在该日期+1天后过期删除
        rule1.setExpirationDate(new SimpleDateFormat("yyyy-MM-dd").parse("2023-01-01"));
        // 启用该规则
        rule1.setStatus(Status.ENABLED);

        // 规则2
        Rule rule2 = new Rule();
        rule2.setId("rule-2");
        rule2.setStatus(Status.ENABLED);
        rule2.setPrefix("0002/");
        // 设置要匹配的文件的Tag,可添加多个
        rule2.setTagSet(Arrays.asList(new ObjectTag("key1", "value1"), new ObjectTag("key2", "value2")));
        // 设置过期时间为文件的最后修改时间+130天
        rule2.setExpirationInDays(130);
        // 设置存储类型转:文件最后修改时间+10天后转为低频存储,文件最后修改时间+40天后转为归档存储
        Transition transition1 = new Transition(10, StorageClass.StandardInfrequentAccess);
        Transition transition2 = new Transition(40, StorageClass.Archive);
        rule2.setStorageTransitions(Arrays.asList(transition1, transition2));

        // 规则 3,文件和碎片的过期规则
        Rule rule3 = new Rule();
        rule3.setId("rule-3");
        rule3.setStatus(Status.ENABLED);
        // 设置要匹配的文件的前缀
        rule3.setPrefix("0003/");
        // 设置过期时间为文件最后修改时间 +100 天
        rule3.setExpirationInDays(100);
        // 设置指定日期作为过期时间
        // rule3.setExpirationDate(date);
        AbortMultipartUpload abortMultipartUpload = new AbortMultipartUpload();
        // 碎片的过期时间为 init multi upload 的时间 +15 天
        abortMultipartUpload.setExpirationDays(15);
        // 设置指定日期作为碎片的过期时间
        // abortMultipartUpload.setExpirationDate(date);
        rule3.setAbortMultipartUpload(abortMultipartUpload);

        // 规则4,按最后访问时间
        Rule rule4 = new Rule();
        rule4.setId("rule-4");
        rule4.setStatus(Status.ENABLED);
        rule4.setPrefix("0004/");
        // 设置要匹配的文件的Tag,可添加多个
        rule4.setTagSet(Arrays.asList(new ObjectTag("key1", "value1"), new ObjectTag("key4", "value4")));
        // 设置过期时间为文件的最后修改时间+130天
        rule4.setExpirationInDays(130);
        // 设置存储类型转:文件最后访问时间+10天后转为低频存储,文件最后访问时间+40天后转为归档存储,当Object被访问后自动转回标准存储类型。
        Transition transition3 = new Transition(10, StorageClass.StandardInfrequentAccess);
        transition3.setIsAccessTime(true);
        transition3.setReturnToStdWhenVisit(true);
        Transition transition4 = new Transition(40, StorageClass.Archive);
        transition4.setIsAccessTime(true);
        transition4.setReturnToStdWhenVisit(true);
        rule4.setStorageTransitions(Arrays.asList(transition3, transition4));

        // 生命周期配置
        BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration(Arrays.asList(rule1, rule2, rule3, rule4));
        // 支持前缀重叠
        configuration.setAllowSameActionOverlap(true);
        // 创建Bucket生命周期
        ks3Client.putBucketLifecycle("bucketName", configuration);
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } catch (ParseException e) {
        throw new RuntimeException(e);
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}

获取存储空间生命周期规则

以下代码用于获取存储空间生命周期规则:

public void getBucketLifecycle() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        BucketLifecycleConfiguration bucketLifecycle = ks3Client.getBucketLifecycle("bucketName");
        System.out.println("Allow same action overlap: " + bucketLifecycle.getAllowSameActionOverlap());
        System.out.println("Rules:");
        for (Rule rule : bucketLifecycle.getRules()) {
            System.out.println("Rule ID: " + rule.getId());
            System.out.println("Rule Prefix: " + rule.getPrefix());
            System.out.println("Rule Status: " + rule.getStatus());
            System.out.println("Rule Expiration Date: " + rule.getExpirationDate());
            System.out.println("Rule Expiration In Days: " + rule.getExpirationInDays());
            System.out.println("Rule Storage Transitions: " + rule.getStorageTransitions());
            System.out.println("Rule Tag Set: " + rule.getTagSet());
            System.out.println("Rule Abort Multipart Upload: " + rule.getAbortMultipartUpload());
        }
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}

删除存储空间生命周期规则


以下代码用于删除存储空间生命周期规则:

public void deleteBucketLifecycle() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        ks3Client.deleteBucketLifecycle("bucketName");
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈