基本的桶操作
华为云obs服务提供的桶基本操作如下
上篇文章中已经创建好了我们需要的桶,现在对桶进行管理和操作
/* 列举桶 */
public static List<ObsBucket> listBucket()
{
System.out.println("start listing all bucket");
ListBucketsRequest request = new ListBucketsRequest();
request.setQueryLocation(true);
List<ObsBucket> buckets = obsClient.listBuckets(request);
for (ObsBucket bucket : buckets) {
System.out.println("Bucket Name:" + bucket.getBucketName());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("Create Date:" + bucket.getCreationDate());
System.out.println("Location:" + bucket.getLocation());
System.out.println();
}
return buckets;
}
/* 删除桶 */
public int removeBucket(String bucketName) throws IOException
{
boolean exist = existBucket(bucketName);
if (exist) {
obsClient.deleteBucket(bucketName);
System.out.println("delete bucket : " + bucketName + "success");
obsClient.close();
return 1;
} else {
System.out.println("Not exist:" + bucketName);
return 0;
}
}
/* 判断桶是否存在 */
public boolean existBucket(String bucketName)
{
boolean exist = obsClient.headBucket(bucketName);
return exist;
}
/* 获取桶元数据 */
public BucketMetadataInfoResult getresult(String bucketName)
{
BucketMetadataInfoRequest request = new BucketMetadataInfoRequest(bucketName);
request.setOrigin("http://www.a.com");
BucketMetadataInfoResult result = obsClient.getBucketMetadata(request);
System.out.println("\t:" + result.getDefaultStorageClass());
System.out.println("\t:" + result.getAllowOrigin());
System.out.println("\t:" + result.getMaxAge());
System.out.println("\t:" + result.getAllowHeaders());
System.out.println("\t:" + result.getAllowMethods());
System.out.println("\t:" + result.getExposeHeaders());
return result;
}
/* 为桶设置预定义访问策略 */
public void setBucketAcl(String bucketName,int rwPolicy)
{
switch (rwPolicy) {
case 0: {
//私有读写
obsClient.setBucketAcl(bucketName, AccessControlList.REST_CANNED_PRIVATE);
}
case 1: {
//公共读私有写
obsClient.setBucketAcl(bucketName, AccessControlList.REST_CANNED_PUBLIC_READ);
}
case 2: {
//桶公共读,桶内对象公共读
obsClient.setBucketAcl(bucketName, AccessControlList.REST_CANNED_PUBLIC_READ_DELIVERED);
}
case 3: {
//公共读写
obsClient.setBucketAcl(bucketName, AccessControlList.REST_CANNED_PUBLIC_READ_WRITE);
}
case 4: {
//桶公共读写,桶内对象公共读写
obsClient.setBucketAcl(bucketName, AccessControlList.REST_CANNED_PUBLIC_READ_WRITE_DELIVERED);
}
}
}
/* 获取桶访问权限 */
public AccessControlList getBucketAcl(String bucketName){
AccessControlList acl = obsClient.getBucketAcl(bucketName);
return acl;
}
删除桶操作需要提供桶的名称,在后台对桶的所有者权限判断后,可以将桶删除
列举桶操作会将本账户下的全部桶信息提取出来,通过list输出
调用bucket.getName() bucket.getCreationDate() 等方法获取每个桶的名称、创建时间、配额大小、区域位置等信息
通过BucketMetadataInfoRequest请求,可以获得桶的元数据信息,包括DefaultStorageClass、AllowOriginMaxAge、AllowHeader、AllowMethods、ExposeHeaders六项参数
setbucketacl和getbucketacl设置和获取桶的访问控制权限策略