更新时间:2024-12-03 GMT+08:00

创建桶

开发过程中,您有任何问题可以在github上提交issue

桶是OBS全局命名空间,相当于数据的容器、文件系统的根目录,可以存储若干对象。以下代码展示如何新建一个桶:
static void test_create_bucket(obs_canned_acl canned_acl, char *bucket_name)
{
    obs_status ret_status = OBS_STATUS_BUTT;
    // 创建并初始化option 
    obs_options option;
    init_obs_options(&option);
    option.bucket_options.host_name = "<your-endpoint>";
    option.bucket_options.bucket_name = "<Your bucketname>";
    // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY。
    // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/intl/zh-cn/usermanual-ca/ca_01_0003.html
    option.bucket_options.access_key = getenv("ACCESS_KEY_ID");
    option.bucket_options.secret_access_key = getenv("SECRET_ACCESS_KEY");


    // 设置响应回调函数
    obs_response_handler response_handler =
    { 
        0, &response_complete_callback
    };

    // 创建桶,<预定义访问策略>值参考5.5 管理桶访问权限
    create_bucket(&option, "<bucket ACL>", NULL, &response_handler, &ret_status);
    if (ret_status == OBS_STATUS_OK) {
        printf("create bucket successfully. \n");
    }
    else
    {
        printf("create bucket failed(%s).\n", obs_get_status_name(ret_status));
    }
}

桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。桶命名规则如下:

  • 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
  • 禁止使用IP地址。
  • 禁止以“-”或“.”开头及结尾。
  • 禁止两个“.”相邻(如:“my..bucket”)。
  • 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。
  • 同一用户多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

本示例创建的桶的访问权限默认是私有读写,存储类型默认是标准类型,区域位置为全局域名所在的默认区域。

更多创建桶的信息,请参见创建桶

  • 创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区域名称可从这里查询。比如初始化时使用的终端节点EndPoint是obs. ap-southeast-1.myhuaweicloud.com,那么在创建桶的时候必须指定Location: ap-southeast-1才会创建成功,否则会返回状态码400。