全部文档
当前文档

暂无内容

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

文档中心

新建存储空间(Java)

最近更新时间:2025-09-29 16:47:29

简单创建存储空间

简单创建存储空间使用的是默认配置,存储空间ACL权限默认为私密,所属地域默认为KS3 Client所使用的Endpoint对应的地域。

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

    // 创建Bucket
    String bucketName = "bucketName";
    try {
        // 创建 Bucket,默认 ACL 为 private,所属 region 为所使用的 endpoint 对应的 region
        ks3Client.createBucket(bucketName);
        System.out.println("Bucket " + bucketName + " created");
    } 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();
    }
}

创建存储空间并进行配置

用户创建存储空间时支持自主配置地域、ACL权限、存储类型、访问类型、加密算法(默认不加密)等。

/**
 * 新建 bucket 的时候配置 bucket 的存储地点和访问权限及其他属性
 */
public void createBucket() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        // 创建桶
        CreateBucketRequest request = new CreateBucketRequest("bucketName");
        // 设置桶类型,默认为 Normal
        request.setBucketType(BucketType.Normal);
        // 设置桶ACL,默认为 Private
        request.setCannedAcl(CannedAccessControlList.Private);
        // 或者设置自定义 ACL
        AccessControlList accessControlList = new AccessControlList();
        accessControlList.addGrant(new GranteeId("userId"), Permission.Read);
        request.setAcl(accessControlList);
        // 设置桶访问类型,默认为 Normal
        request.setVisitType(BucketVisitType.NORMAL);
        // 设置桶加密,取值:AES256、SM4
        request.setEncryptionAlgorithm(Constants.ALGORITHM_AES256);
        // 设置桶冗余类型,默认为 LRS, 可选值为 LRS(本地冗余), ZRS(同城冗余)
        request.setDataRedundancyType(DataRedundancyType.ZRS);
        // 设置桶区域,若没有设置,默认为 ks3Client 的 endpoint 对应的区域
        CreateBucketConfiguration config = new CreateBucketConfiguration(Region.BEIJING);
        request.setConfig(config);
        // 设置所属项目 ID,可选,@since 1.4.0
        request.setProjectId(15200L);
        // 发起请求,创建桶
        ks3Client.createBucket(request);
    } 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();
    }
}

自定义创建存储空间

如果用户需要指定桶所属项目,则需要自定义创建桶。

  • 创建自定义创建桶请求类,继承自 CreateBucketRequest

/**
 * 自定义创建桶请求
 * 由于 SDK 1.4.0 之前没有提供 projectId 参数,所以需要自定义一个 CustomCreateBucketRequest
 * 1.4.0 及以后版本使用 CreateBucketRequest 即可
 *
 * @author yanghui4
 * @date 2025-03-25
 **/
public class CustomCreateBucketRequest extends CreateBucketRequest {

    private Long projectId;

    public CustomCreateBucketRequest(String bucketName) {
        super(bucketName);
    }

    public CustomCreateBucketRequest(String bucketName, CannedAccessControlList cannedAcl) {
        super(bucketName, cannedAcl);
    }

    public CustomCreateBucketRequest(String bucketName, AccessControlList acl) {
        super(bucketName, acl);
    }

    public CustomCreateBucketRequest(String bucketName, Region region) {
        super(bucketName, region);
    }

    @Override
    public void buildRequest(Request request) {
        super.buildRequest(request);
        if (projectId != null) {
            request.getQueryParams().put("projectId", String.valueOf(projectId));
        }
    }

    public Long getProjectId() {
        return projectId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public CustomCreateBucketRequest withProjectId(Long projectId) {
        this.projectId = projectId;
        return this;
    }
}
  • 使用该自定义类创建桶

/**
 * 创建 Bucket 并设置 Bucket 的配置,包括项目 ID
 * 由于 SDK 1.4.0 之前没有提供 projectId 参数,所以需要自定义一个 CustomCreateBucketRequest
 * 1.4.0 及以后版本使用 CreateBucketRequest 即可
 */
public void createBucketWithProjectId() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        // 初始化 CustomCreateBucketRequest,并设置桶名
        CustomCreateBucketRequest request = new CustomCreateBucketRequest("bucketName");
        // 设置桶的访问权限
        request.setCannedAcl(CannedAccessControlList.Private);
        // 设置桶的所属 region
        request.setConfig(new CreateBucketConfiguration(Region.BEIJING));
        // 设置桶类型
        request.setBucketType(BucketType.Normal);
        // 设置桶访问类型
        request.setVisitType(BucketVisitType.NORMAL);
        // 设置加密算法
        request.setEncryptionAlgorithm(Constants.ALGORITHM_AES256);
        // 设置数据冗余类型
        request.setDataRedundancyType(DataRedundancyType.ZRS);
        // 设置项目 ID
        request.setProjectId(1234L);
        // 发送创建桶的请求
        ks3Client.createBucket(request);
        System.out.println("Bucket " + request.getBucket() + " created");
    } 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();
    }
}

Bucket名称是全局唯一的。

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

纯净模式

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