最近更新时间: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名称是全局唯一的。
纯净模式
