创建并行文件系统
开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。
您可以通过create_bucket或create_bucket_with_params创建一个桶,通过create_pfs_bucket创建一个并行文件系统。
方法定义
1 2 |
void create_bucket_with_params(const obs_options *options, const obs_create_bucket_params *param, obs_response_handler *handler, void *callback_data); |
请求参数描述
|
参数名称 |
参数类型 |
是否必选 |
描述 |
|---|---|---|---|
|
options |
const obs_options * |
必选 |
请求桶的上下文,配置option(C SDK),通过obs_options设置AK、SK、endpoint、bucket、超时时间、临时鉴权 |
|
canned_acl |
必选 |
权限控制策略。 |
|
|
location_constraint |
char * |
可选 |
桶的区域位置。 |
|
handler |
必选 |
回调结构体,结构体内所有成员都是回调函数的指针,用于设置处理接口响应数据的回调函数。您可以通过设置回调函数,把服务端的响应数据复制到您的自定义回调数据callback_data中。 |
|
|
callback_data |
void * |
可选 |
用户自定义回调数据。 |
|
param |
obs_create_bucket_params * |
必选 |
仅限create_bucket_with_params接口使用。 结构体包含:
|
|
参数名称 |
参数类型 |
是否必选 |
描述 |
|---|---|---|---|
|
bucket_options |
必选 |
参数解释: 桶相关设置 约束限制: 取值范围: 默认取值: 无 |
|
|
request_options |
必选 |
请求相关设置 |
|
|
temp_auth |
可选 |
用于临时计算签名的结构体,不使用时请设置为NULL |
代码示例
以下代码展示如何新建一个:
static void test_create_bucket(obs_canned_acl canned_acl, char *bucket_name)
{
// 创建并初始化option
obs_options option;
obs_status ret_status = OBS_STATUS_BUTT;
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/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管理桶ACL
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));
}
}
以下代码展示如何新建一个3AZ的并行文件系统:
static void test_create_3az_bucket(obs_canned_acl canned_acl, char *bucket_name)
{
// 创建并初始化option
obs_options option;
obs_status ret_status = OBS_STATUS_BUTT;
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
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管理桶ACL
obs_create_bucket_params create_param;
create_param.canned_acl = canned_acl;
create_param.location_constraint = "Region name that support 3AZ";
create_param.az_redundancy = OBS_REDUNDANCY_3AZ;
create_bucket_with_params(&option, &create_param, &response_handler, &ret_status);
if (ret_status == OBS_STATUS_OK) {
printf("create bucket with params successfully. \n");
}
else
{
printf("create bucket with params failed(%s).\n", obs_get_status_name(ret_status));
}
}
以下代码展示如何新建一个并行文件系统的桶:
static void test_create_pfs_bucket(obs_canned_acl canned_acl, char *bucket_name)
{
// 创建并初始化option
obs_options option;
obs_status ret_status = OBS_STATUS_BUTT;
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/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管理桶ACL
create_pfs_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.cn-north-4. myhuaweicloud.com,那么在创建并行文件系统的时候必须指定Location:cn-north-4 才会创建成功,否则会返回状态码400。
带参数创建
创建并行文件系统时可以指定并行文件系统的访问权限、存储类别和区域位置。代码示例如下:
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/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
};
// 创建并行文件系统,入参可设置并行文件系统预定义访问策略、并行文件系统区域位置
create_bucket(&option, "<bucket ACL>", "<Your bucket location>", &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));
}