全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

初始化

更新时间:2017-06-07 13:26:11

确定Endpoint

Endpoint是阿里云OSS服务在各个区域的地址,目前支持两种形式

Endpoint类型 解释
OSS区域地址 使用OSS Bucket所在区域地址,各个区域Endpoint参考这里
用户自定义域名 用户自定义域名,且CNAME指向OSS域名

关于Endpoint,可以参考:点击查看

OSS区域地址

使用OSS Bucket所在区域地址,Endpoint查询可以有下面两种方式:

  • 查询Endpoint与区域对应关系详情,可以参考:点击查看
  • 您可以登录 阿里云OSS控制台,进入Bucket概览页,Bucket域名的后缀部分:如bucket-1.oss-cn-hangzhou.aliyuncs.comoss-cn-hangzhou.aliyuncs.com部分为该Bucket的外网Endpoint。

CNAME

  • 您可以将自己拥有的域名通过CNAME绑定到某个存储空间(Bucket)上,然后通过自己域名访问存储空间内的文件
  • 比如您要将域名new-image.xxxxx.com绑定到深圳区域的名称为image的存储空间上:
  • 您需要到您的域名xxxxx.com托管商那里设定一个新的域名解析,将http://new-image.xxxxx.com 解析到 http://image.oss-cn-shenzhen.aliyuncs.com ,类型为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时的控制信息。

  1. void init_options(oss_request_options_t *options) {
  2. options->config = oss_config_create(options->pool);
  3. aos_str_set(&options->config->endpoint, "<您的Endpoint>");
  4. aos_str_set(&options->config->access_key_id, "<您的AccessKeyId>");
  5. aos_str_set(&options->config->access_key_secret, "<您的AccessKeySecret>");
  6. options->config->is_cname = 0;
  7. options->ctl = aos_http_controller_create(options->pool, 0);
  8. }
  9. int main() {
  10. aos_pool_t *p;
  11. oss_request_options_t *options;
  12. /* 全局变量初始化,应该放在程序启动时,其他所有逻辑之前 */
  13. if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
  14. return -1;
  15. }
  16. /* 初始化内存池和options */
  17. aos_pool_create(&p, NULL);
  18. options = oss_request_options_create(p);
  19. init_options(options);
  20. /* 逻辑代码 */
  21. /* 释放内存pool资源,包括了通过pool分配的内存,比如options等*/
  22. aos_pool_destroy(p);
  23. /* 释放全局资源,应该放在程序结束前 */
  24. aos_http_io_deinitialize();
  25. return 0;
  26. }

注:

  • 如果想使用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相关的一些参数

本文导读目录