设置托管配置
开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。
您可以通过set_bucket_website_configuration设置桶的托管配置。
配置默认主页错误页面和重定向规则
以下代码展示了如何配置默认主页、错误页面和重定向规则,参数描述如下表:
字段名 |
类型 |
约束 |
说明 |
---|---|---|---|
option |
请求桶的上下文,配置option |
必选 |
桶参数。 |
set_bucket_redirect_all |
obs_set_bucket_redirect_all_conf * |
必选 |
描述重定向的配置。 |
set_bucket_redirect_all->host_name |
const char * |
必选 |
描述重定向的站点名。 |
set_bucket_redirect_all->protocol |
const char * |
可选 |
描述重定向请求时使用的协议(http,https),默认使用http协议。 |
set_bucket_website_conf |
obs_set_bucket_website_conf * |
必选 |
描述重定向规则website元素的配置。 |
set_bucket_website_conf->suffix |
const char * |
必选 |
suffix元素被追加在对文件夹的请求的末尾(例如:suffix配置的是“index.html”,请求的是“samplebucket/images/”,返回的数据将是“samplebucket”桶内名为“images/index.html”的对象的内容)。suffix元素不能为空或者包含“/”字符。 |
set_bucket_website_conf->key |
const char * |
可选 |
当4XX错误出现时使用的对象的名称。这个元素指定了当错误出现时返回的页面。 |
set_bucket_website_conf->routingrule_info |
bucket_website_routingrule * |
可选 |
重定向规则的具体描述,请参看下表 |
set_bucket_website_conf->routingrule_count |
int |
可选 |
set_bucket_website_conf.routingrule_info的总大小 |
handler |
obs_response_handler* |
必选 |
回调函数。 |
callback_data |
void * |
可选 |
回调数据。 |
重定向规则结构bucket_website_routingrule描述如下表:
字段名 |
类型 |
约束 |
说明 |
---|---|---|---|
key_prefix_equals |
const char * |
可选 |
描述当重定向生效时对象名的前缀。 |
http_errorcode_returned_equals |
const char * |
可选 |
描述重定向生效时的HTTP错误码。当发生错误时,如果错误码等于这个值,那么重定向生效。 |
protocol |
const char * |
可选 |
描述重定向请求时使用的协议。 |
host_name |
const char * |
可选 |
描述重定向请求时使用的站点名。 |
replace_key_prefix_with |
const char * |
可选 |
描述重定向请求时使用的对象名前缀。 |
replace_key_with |
const char * |
可选 |
描述重定向请求时使用的对象名。 |
http_redirect_code |
const char * |
可选 |
描述响应中的HTTP状态码。 |
static void test_set_bucket_website_configuration() { 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_set_bucket_website_conf set_bucket_website_conf; // 配置默认主页 set_bucket_website_conf.suffix = "index.html"; // 配置错误页面 set_bucket_website_conf.key = "Error.html"; // 定义重定向规则 set_bucket_website_conf.routingrule_count = 2; bucket_website_routingrule temp[2]; memset(&temp[0], 0, sizeof(bucket_website_routingrule)); memset(&temp[1], 0, sizeof(bucket_website_routingrule)); set_bucket_website_conf.routingrule_info = temp; temp[0].key_prefix_equals = "key_prefix1"; temp[0].replace_key_prefix_with = "replace_key_prefix1"; temp[0].http_errorcode_returned_equals="404"; temp[0].http_redirect_code = NULL; temp[0].host_name = "www.example.com"; temp[0].protocol = "http"; temp[1].key_prefix_equals = "key_prefix2"; temp[1].replace_key_prefix_with = "replace_key_prefix2"; temp[1].http_errorcode_returned_equals="404"; temp[1].http_redirect_code = NULL; temp[1].host_name = "www.example.com"; temp[1].protocol = "http"; // 设置响应回调函数 obs_response_handler response_handler = { 0, &response_complete_callback }; // 设置重定向规则 set_bucket_website_configuration(&option, NULL, &set_bucket_website_conf, &response_handler, &ret_status); if (OBS_STATUS_OK == ret_status) { printf("set bucket website conf successfully. \n"); } else { printf("set bucket website conf failed(%s).\n", obs_get_status_name(ret_status)); } }
配置所有请求重定向
以下代码展示了如何配置所有请求重定向:
static void test_set_bucket_website_all() { 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 }; // 设置所有请求重定向 obs_set_bucket_redirect_all_conf set_bucket_redirect_all; set_bucket_redirect_all.host_name = "www.example.com"; set_bucket_redirect_all.protocol = "https"; set_bucket_website_configuration(&option, &set_bucket_redirect_all, NULL, &response_handler, &ret_status); if (OBS_STATUS_OK == ret_status) { printf("set bucket website all successfully. \n"); } else { printf("set bucket website all failed(%s).\n", obs_get_status_name(ret_status)); } }