Bucket是OSS上的存储空间,也是计费、权限控制、日志记录等高级功能的管理实体;存储空间名称在整个OSS服务中具有全局唯一性,且不能修改;存储在OSS上的每个文件必须都包含在某个存储空间中。
新建存储空间
通过oss_create_bucket接口,可以实现创建一个存储空间,用户需要指定存储空间的名字:
aos_pool_t *p;
oss_request_options_t *options;
oss_acl_e oss_acl = OSS_ACL_PRIVATE;
char *bucket_name = "<您的bucket名字>";
aos_string_t bucket;
aos_table_t *resp_headers;
aos_status_t *s;
aos_pool_create(&p, NULL);
/* 创建并初始化options */
options = oss_request_options_create(p);
init_options(options);
/* 初始化参数 */
aos_str_set(&bucket, bucket_name);
/* 创建存储空间 */
s = oss_create_bucket(options, &bucket, oss_acl, &resp_headers);
if (aos_status_is_ok(s)) {
printf("create bucket succeeded\n");
} else {
printf("create bucket failed\n");
}
aos_pool_destroy(p);[backcolor=transparent]注:
- Bucket的命名规范请查看OSS 基本概念
- 由于存储空间的名字是全局唯一的,所以必须保证您的存储空间名字不与别人的重复
删除存储空间
通过oss_delete_bucket接口,可以实现删除一个存储空间,用户需要指定存储空间的名字:
aos_pool_t *p;
oss_request_options_t *options;
char *bucket_name = "<您的bucket名字>";
aos_string_t bucket;
aos_table_t *resp_headers;
aos_status_t *s;
aos_pool_create(&p, NULL);
/* 创建并初始化options */
options = oss_request_options_create(p);
init_options(options);
/* 初始化参数 */
aos_str_set(&bucket, bucket_name);
/* 删除存储空间 */
s = oss_delete_bucket (options, &bucket, &resp_headers);
if (aos_status_is_ok(s)) {
printf("delete bucket succeeded\n");
} else {
printf("delete bucket failed\n");
}
aos_pool_destroy(p);
注:
如果该存储空间下还有文件存在,则需要先删除所有文件才能删除存储空间
如果该存储空间下还有未完成的上传请求,则需要通过oss_list_multipart_upload和 oss_abort_multipart_upload先取消那些请求才能删除存储空间。
存储空间访问权限
用户可以设置存储空间的访问权限,允许或者禁止匿名用户对其内容进行读写。
获取存储空间的访问权限(ACL)
通过oss_get_bucket_acl接口,可以实现查看存储空间的ACL:
aos_pool_t *p;
oss_request_options_t *options;
char *bucket_name = "<您的bucket名字>";
aos_string_t bucket;
aos_table_t *resp_headers;
aos_status_t *s;
char *oss_acl;
aos_pool_create(&p, NULL);
/* 创建并初始化options */
options = oss_request_options_create(p);
init_options(options);
/* 初始化参数 */
aos_str_set(&bucket, bucket_name);
/* 获取存储空间访问权限 */
s = oss_get_bucket_acl(options, &bucket,& oss_acl, &resp_headers);
if (aos_status_is_ok(s)) {
printf("get bucket acl succeeded\n");
} else {
printf("get bucket acl failed\n");
}
aos_pool_destroy(p);
设置存储空间的访问权限(ACL)
通过oss_create_bucket接口,可以实现设置存储空间的ACL:
aos_pool_t *p;
oss_request_options_t *options;
oss_acl_e oss_acl = OSS_ACL_PRIVATE;
char *bucket_name = "<您的bucket名字>";
aos_string_t bucket;
aos_table_t *resp_headers;
aos_status_t *s;
aos_pool_create(&p, NULL);
/* 创建并初始化options */
options = oss_request_options_create(p);
init_options(options);
/* 初始化参数 */
aos_str_set(&bucket, bucket_name);
/* 设置存储空间访问权限 */
s = oss_put_bucket_acl(options, &bucket, oss_acl, &resp_headers);
if (aos_status_is_ok(s)) {
printf("put bucket acl succeeded\n");
} else {
printf("put bucket acl failed\n");
}
aos_pool_destroy(p);
注:
操作者必须是Bucket的拥有者,否则不允许设置该存储空间的访问权限。
存储空间的访问权限oss_acl_e是一个枚举值,可选值包括:OSS_ACL_PRIVATE、OSS_ACL_PUBLIC_READ、OSS_ACL_PUBLIC_READ_WRITE