初始化
确定Endpoint
在确认您使用SDK时配置的Endpoint时,可先阅读开发人员指南中关于BOS访问域名的部分,理解Endpoint相关的概念。百度智能云目前开放了多区域支持,请参考区域选择说明。
region与endpoint参考如下链接
https://cloud.baidu.com/doc/BOS/s/akrqd2wcx
常见示例如下:
访问区域 | 对应Endpoint |
---|---|
BJ | bj.bcebos.com |
BD | bd.bcebos.com |
SU | su.bcebos.com |
GZ | gz.bcebos.com |
CD | cd.bcebos.com |
HKG | hkg.bcebos.com |
FWH | fwh.bcebos.com |
FSH | fsh.bcebos.com |
获取密钥
要使用百度智能云BOS,您需要拥有一个有效的 AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问BOS做签名验证。 可以通过如下步骤获得并了解您的AK/SK信息:
新建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://bj.bcebos.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://bj.bcebos.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://bj.bcebos.com |
HTTP请求终端 |
retry | 2 | HTTP请求额外的重试次数 |
timeout | 120 | 是秒为单位的超时,这个要根据请求类型慎重选取,比如下载一个大文件可能用到比较大的超时 |
user_agent | cppsdk相关 | 可以指定请求发送的时候的UA |
max_parallel | 10 | 并发请求接口的默认并发数(也可以直接在调用接口时参数指定) |
multi_part_size | 10MB | 功能性函数里封装三步上传或者并发下载的块大小 |
sign_expire_seconds | 1200s | 指定签名超时的时间 |