阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

初始化

更新時間: Oct 19, 2018

確定Endpoint

Endpoint是阿里雲OSS服務在各個區域的地址,目前支援兩種形式

Endpoint類型 解釋
OSS區域地址 使用OSS Bucket所在區域地址,各個區域Endpoint參考這裡
使用者自訂網域名 使用者自訂網域名,且CNAME指向OSS網域名稱

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相關的一些參數