确定Endpoint
Endpoint是阿里云OSS服务在各个区域的地址,目前支持两种形式
关于Endpoint,可以参考:
点击查看。
OSS区域地址
使用OSS Bucket所在区域地址,Endpoint查询可以有下面两种方式:
- 查询Endpoint与区域对应关系详情,可以参考:点击查看。
- 您可以登录 阿里云OSS控制台,进入Bucket概览页,Bucket域名的后缀部分:如bucket-1.oss-cn-hangzhou.aliyuncs.com的oss-cn-hangzhou.aliyuncs.com部分为该Bucket的外网Endpoint。
CNAME
配置密钥
要接入阿里云OSS,您需要拥有一对有效的 AccessKey(包括AccessKeyId和AccessKeySecret)用来进行签名认证。可以通过如下步骤获得:
在获取到 AccessKeyId和 AccessKeySecret之后,您可以按照下面步骤进行初始化
初始化请求选项
使用OSS C SDK时需要初始化请求选项(oss_request_options_t),其中config用于存储访问OSS的基本信息,比如OSS域名、用户的AccessKeyId 、用户的AccessKeySecret。is_cname变量指定访问OSS是否使用CNAME。 ctl用于设置访问OSS时的控制信息。
- [backcolor=transparent]void[backcolor=transparent] init_options[backcolor=transparent]([backcolor=transparent]oss_request_options_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]options[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] options[backcolor=transparent]->[backcolor=transparent]config [backcolor=transparent]=[backcolor=transparent] oss_config_create[backcolor=transparent]([backcolor=transparent]options[backcolor=transparent]->[backcolor=transparent]pool[backcolor=transparent]);
- [backcolor=transparent] aos_str_set[backcolor=transparent](&[backcolor=transparent]options[backcolor=transparent]->[backcolor=transparent]config[backcolor=transparent]->[backcolor=transparent]endpoint[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"<您的Endpoint>"[backcolor=transparent]);
- [backcolor=transparent] aos_str_set[backcolor=transparent](&[backcolor=transparent]options[backcolor=transparent]->[backcolor=transparent]config[backcolor=transparent]->[backcolor=transparent]access_key_id[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"<您的AccessKeyId>"[backcolor=transparent]);
- [backcolor=transparent] aos_str_set[backcolor=transparent](&[backcolor=transparent]options[backcolor=transparent]->[backcolor=transparent]config[backcolor=transparent]->[backcolor=transparent]access_key_secret[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"<您的AccessKeySecret>"[backcolor=transparent]);
- [backcolor=transparent] options[backcolor=transparent]->[backcolor=transparent]config[backcolor=transparent]->[backcolor=transparent]is_cname [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent];
- [backcolor=transparent] options[backcolor=transparent]->[backcolor=transparent]ctl [backcolor=transparent]=[backcolor=transparent] aos_http_controller_create[backcolor=transparent]([backcolor=transparent]options[backcolor=transparent]->[backcolor=transparent]pool[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent]);
- [backcolor=transparent]}
- [backcolor=transparent]int[backcolor=transparent] main[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]aos_pool_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]p[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]oss_request_options_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]options[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]/* 全局变量初始化,应该放在程序启动时,其他所有逻辑之前 */
- [backcolor=transparent] [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]aos_http_io_initialize[backcolor=transparent]([backcolor=transparent]NULL[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]!=[backcolor=transparent] AOSE_OK[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]1[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]/* 初始化内存池和options */
- [backcolor=transparent] aos_pool_create[backcolor=transparent](&[backcolor=transparent]p[backcolor=transparent],[backcolor=transparent] NULL[backcolor=transparent]);
- [backcolor=transparent] options [backcolor=transparent]=[backcolor=transparent] oss_request_options_create[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent]);
- [backcolor=transparent] init_options[backcolor=transparent]([backcolor=transparent]options[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]/* 逻辑代码 */
- [backcolor=transparent] [backcolor=transparent]/* 释放内存pool资源,包括了通过pool分配的内存,比如options等*/
- [backcolor=transparent] aos_pool_destroy[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]/* 释放全局资源,应该放在程序结束前 */
- [backcolor=transparent] aos_http_io_deinitialize[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent];
- [backcolor=transparent]}
[backcolor=transparent]注:
- 如果想使用https,只需要设置endpoint时,前缀使用https://即可。
- 支持多线程,但是aos_http_io_initialize和aos_http_io_deinitialize只需要在主线程里面调用即可,其他线程不需要调用。
- 如果想设置oss c sdk底层libcurl通信时的一些参数,可以对请求选项中的ctl进行设置,实现控制诸如数据上传最低速度、连接超时时间、DNS缓存失效时间等目的。
- 您也可以通过ctl获得使用oss c sdk访问OSS的性能参数。以上传数据为例,用户在上传完数据后可以得到一系列的参数指标,比如开始上传数据的时间start_time,第一字节上传的时间first_byte_time,完成数据上传的时间finish_time。
- 关于如何设置请求选项,请详见oss c sdk如何设置通信时和CURL相关的一些参数