对象存储BOS

初始化

确定Endpoint

在确认您使用SDK时配置的Endpoint时,可先阅读开发人员指南中关于BOS访问域名的部分,理解Endpoint相关的概念。 | 区域 | 访问Endpoint | 协议 | | --- | ------------- | ----------- | | BJ | bcebos.cloud.geely.com | HTTP, HTTPS |

获取密钥

要使用云平台BOS,您需要拥有一个有效的 AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问BOS做签名验证。

新建BosClient

BosClient是BOS服务的客户端,为开发者与BOS服务进行交互提供了一系列的方法。

使用AK/SK新建BosClient

通过AK/SK方式访问BOS,用户可以参考如下代码新建一个BosClient:

#include <bcesdk/bos/client.h>
using namespace bcesdk_ns;
int main() {
    std::string ACCESS_KEY_ID = <your-access-key-id>;  // 用户的Access Key ID
    std::string SECRET_ACCESS_KEY = <your-secret-access-key>; // 用户的Secret Access Key

    /* 初始化一个Client*/

    //设置日志
    FILE *logfp = fopen("sdk.log", "w");
    sdk_set_log_stream(logfp);
    sdk_set_log_level(SDK_LOG_DEBUG);
    //设置客户端
    Client client(ACCESS_KEY_ID, SECRET_ACCESS_KEY);
}

在上面代码中,ACCESS_KEY_ID对应控制台中的“Access Key ID”,SECRET_ACCESS_KEY对应控制台中的“Access Key Secret”,获取方式请参考《操作指南 管理ACCESSKEY》。

上面的方式使用默认域名作为BOS的服务地址,如果用户需要自己指定域名,可以通过传入ENDPOINT参数来指定。

std::string ACCESS_KEY_ID = <your-access-key-id>;  // 用户的Access Key ID
std::string SECRET_ACCESS_KEY = <your-secret-access-key>; // 用户的Secret Access Key
std::string ENDPOINT = <domain-name>;  // 用户自己指定的域名


config.endpoint = ENDPOINT;
Client client(ACCESS_KEY_ID, SECRET_ACCESS_KEY, config);

注意:ENDPOINT参数只能用指定的包含区域的域名来进行定义,不指定时默认为北京区域http://bcebos.cloud.geely.com

使用STS创建BOS Client

申请STS token

BOS可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是云平台提供的临时授权服务。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用云平台的API或SDK访问云平台资源。

通过STS方式访问BOS,用户需要先通过STS的client申请一个认证字符串,申请方式可参见云平台STS使用介绍

用STS token新建BOS Client

申请好STS后,可将STS Token配置到BOS Client中,从而实现通过STS Token创建BOS Client。

代码示例

使用申请好的STS Token创建BOS Client对象。

#include <bcesdk/bos/client.h>
using namespace bcesdk_ns;
int main() {
  	//设置日志
    FILE *logfp = fopen("sdk.log", "w");
    sdk_set_log_stream(logfp);
    sdk_set_log_level(SDK_LOG_DEBUG);
  
    std::string ak = <access-key-id>;  // 用于STS凭证访问的AK
    std::string sk = <secret-access-key>; // 用于STS凭证访问的SK
    std::string sts_token = <session_token>;//SessionToken,使用STS凭证访问时必须携带    
  	//使用自定义选项
    ClientOptions option;  
  	option.endpoint = <domain-name>; 
  	//配置STS客户端
    Client client(Credential(ak, sk, sts_token), option);
}

配置HTTPS协议访问BOS

BOS支持HTTPS传输协议,您可以通过如下两种方式在BOS C++ SDK中使用HTTPS访问BOS服务:

在endpoint中指明https:

std::string endpoint = "https://bcebos.cloud.geely.com";
std::string ak = "ak";
std::string sk = "sk";
ClientOptions config;
config.endpoint = endpoint;
Client client(ak, sk, config);

配置BosClient

如果用户需要配置Client的一些细节的参数,可以在构造Client的时候传入ClientOptions对象。 ClientOptions是BOS服务的配置类,可以为客户端配置超时、重试次数等。

设置网络参数

用户可以用对ClientOptions基本网络参数进行设置:

ClientOptions config;

// 设置HTTP请求超时为120秒
config.timeout = 120;
    
// 设置额外重试次数
config.retry = 2;

// 设置并发请求数
config.max_parallel = 10;

参数说明

通过ClientOptions能指定的所有参数如下表所示:

参数 默认值 说明
endpoint http://bcebos.cloud.geely.com HTTP请求终端
retry 2 HTTP请求额外的重试次数
timeout 120 是秒为单位的超时,这个要根据请求类型慎重选取,比如下载一个大文件可能用到比较大的超时
user_agent cppsdk相关 可以指定请求发送的时候的UA
max_parallel 10 并发请求接口的默认并发数(也可以直接在调用接口时参数指定)
multi_part_size 10MB 功能性函数里封装三步上传或者并发下载的块大小
sign_expire_seconds 1200s 指定签名超时的时间
上一篇
安装SDK工具包
下一篇
Bucket管理