阿里云 OSS_API_20121008
,目 錄前 言 ..................................................... 3 1. 阿里云存儲服務(wù)簡介........
目 錄
前 言 ..................................................... 3 1. 阿里云存儲服務(wù)簡介...................................... 4 2. 基本概念 ............................................... 5
2.1
2.2
2.3
2.4 Object ..................................................................................................... 5 Bucket .................................................................................................... 5 Access Key ID、Access Key Secret.................................................... 5 Service . ................................................................................................... 6 3. OSS 功能簡介............................................ 7
3.1
3.2
3.3 OSS 基本功能 . ...................................................................................... 7 Object 外鏈地址的構(gòu)成規(guī)則............................................................... 7 OSS 防盜鏈 ........................................................................................... 8 4. 訪問控制 ............................................... 9
4.1
4.2
4.3
4.4 用戶簽名驗證(Authentication ) ...................................................... 9 在Head 中包含簽名 ............................................................................ 9 在URL 中包含簽名 . .......................................................................... 14 Bucket 權(quán)限控制 . ................................................................................ 15 5. 開放接口規(guī)范 ...........................................17
5.1 公共HTTP 頭定義 . ............................................................................ 18
5.1.1
5.1.2
5.2 公共請求頭(Common Request Headers) . ..................... 18 公共響應(yīng)頭(Common Response Headers) ................... 19 關(guān)于Service 的操作 . .......................................................................... 20
5.2.1 GetService (ListBucket) . ...................................................... 20
5.3 關(guān)于Bucket 的操作 ........................................................................... 23
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5 Delete Bucket . ....................................................................... 23 Get Bucket (List Object) ...................................................... 25 Get Bucket Acl . ..................................................................... 33 Put Bucket ............................................................................. 35 Put Bucket Acl ...................................................................... 37
1
,5.4 關(guān)于Object 操作 ................................................................................ 39
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6 Copy Object .......................................................................... 39 Delete Object......................................................................... 42 Delete Multiple Objects........................................................ 43 Get Object ............................................................................. 47 Head Object . .......................................................................... 51 Put Object . ............................................................................. 53
5.5 關(guān)于Multipart Upload的操作 .......................................................... 56
5.5.1
5.5.2
5.5.3
5.5.4
5.5.5
5.5.6 Initiate Multipart Upload . ..................................................... 56 Upload Part............................................................................ 59 Complete Multipart Upload ................................................. 61 Abort Multipart Upload . ....................................................... 65 List Multipart Uploads ......................................................... 66 List Parts . ............................................................................... 70
6. OSS 的錯誤響應(yīng) . .........................................74
6.1.
6.2.
6.3.
6.4.
6.5.
OSS 的錯誤響應(yīng)格式 ........................................................................ 74 OSS 的錯誤碼 . .................................................................................... 75 OSS 不支持分塊傳輸編碼 ................................................................ 77 OSS 不支持的操作............................................................................. 78 OSS 操作支持但參數(shù)不支持的操作 ............................................... 80
2
,前 言
本文檔是阿里云存儲服務(wù)(OSS )的開發(fā)幫助指南,描述了OSS 中的基本概念、提供的服務(wù)以及可用的API 。
3
,1. 阿里云存儲服務(wù)簡介
阿里云存儲服務(wù)(OpenStorageService ,簡稱OSS ),是阿里云對外提供的海量,安全,低成本,高可靠的云存儲服務(wù)。用戶可以通過簡單的REST 接口,在任何時間、任何地點、任何互聯(lián)網(wǎng)設(shè)備上進(jìn)行上傳和下載數(shù)據(jù),也可以使用WEB 頁面對數(shù)據(jù)進(jìn)行管理。同時,OSS 提供Java 、 Python 、 PHP 、C#語言的SDK ,簡化用戶的編程?;贠SS ,用戶可以搭建出各種多媒體分享網(wǎng)站、網(wǎng)盤、個人和企業(yè)數(shù)據(jù)備份等基于大規(guī)模數(shù)據(jù)的服務(wù)。
公網(wǎng)的OSS 訪問地址: http://oss.aliyuncs.com
阿里云主機的內(nèi)網(wǎng)OSS 訪問地址1:http://oss-internal.aliyuncs.com
OSS 的web 控制臺地址:
1 阿里云主機通過內(nèi)網(wǎng)域名訪問OSS ,會擁有比訪問公網(wǎng)域名更快的響應(yīng)時間、更高的傳輸速度;同時,上傳、下載流量都是免費的。
4
,2. 基本概念
2.1 Object
在OSS 中,用戶操作的基本數(shù)據(jù)單元是Object 。單個Object 最大允許存儲5TB 的數(shù)據(jù)。Object 包含key 、meta 和data 。其中,key 是Object 的名字;meta 是用戶對該object 的描述,由一系列name-value 對組成;data 是Object 的數(shù)據(jù)。
? Object 命名規(guī)范
使用UTF-8編碼
長度必須在1-1023字節(jié)之間
不能以“/”或者“”字符開頭
2.2 Bucket
Bucket 是OSS 上的命名空間,也是計費、權(quán)限控制、日志記錄等高級功能的管理實體;Bucket 名稱在整個OSS 服務(wù)中具有全局唯一性,且不能修改;存儲在OSS 上的每個Object 必須都包含在某個Bucket 中。一個應(yīng)用,例如圖片分享網(wǎng)站,可以對應(yīng)一個或多個Bucket 。一個用戶最多可創(chuàng)建10個Bucket ,但每個Bucket 中存放的Object 的數(shù)量和大小總和沒有限制,用戶不需要考慮數(shù)據(jù)的可擴展性。
? Bucket 命名規(guī)范
只能包括小寫字母,數(shù)字,短橫線(-)
必須以小寫字母或者數(shù)字開頭
長度必須在3-63字節(jié)之間
2.3 Access Key ID、Access Key Secret
用戶注冊O(shè)SS 時,系統(tǒng)會給用戶分配一對Access Key ID 和Access Key Secret ,
5
,稱為ID 對,用于標(biāo)識用戶,為訪問OSS 做簽名驗證。
2.4 Service
OSS 提供給用戶的虛擬存儲空間,在這個虛擬空間中,每個用戶可擁有一個到多個Bucket 。
6
,3. OSS 功能簡介
3.1 OSS 基本功能
OSS 為用戶提供數(shù)據(jù)存儲服務(wù),用戶可以通過以下操作來處理OSS 上的數(shù)據(jù): ? 創(chuàng)建、查看、羅列、刪除 Bucket
? 修改、獲取Bucket 的訪問權(quán)限
? 上傳、查看、羅列、刪除、批量刪除Object
? 對于大文件支持分片上傳(Multi-Part Upload)
? 訪問時支持If-Modified-Since 和If-Match 等HTTP 參數(shù)
3.2 Object 外鏈地址的構(gòu)成規(guī)則
如果一個bucket 設(shè)置成公開讀權(quán)限(詳見下一章:訪問控制),意味著你允許其他用戶來訪問屬于你的object 。你的object 的外鏈地址構(gòu)成規(guī)則如下:
例如,在一個名為oss-example 的bucket 中,有一個名為"aliyun-log.png" 的object (content-type 為image/png
)。那么這個object 的外鏈URL 為:
構(gòu)成規(guī)則的示意圖如下:
用戶可以直接該URL 鏈接放入HTML 中使用:
7
,3.3 OSS 防盜鏈
OSS 是按使用收費的服務(wù),為了防止用戶在OSS 上的數(shù)據(jù)被其他人盜鏈,OSS 支持基于HTTP header 中表頭字段referer 的防盜鏈方法。目前,只有通過OSS 的控制臺(http://oss.aliyun.com)可以對一個bucket 設(shè)置referer 字段的白名單和是否允許referer 字段為空的請求訪問。例如,對于一個名為oss-example 的bucket ,設(shè)置其referer 白名單為http://www.aliyun.com。則所有referer 為http://www.aliyun.com的請求才能訪問oss-example 這個bucket 中的Object 。
細(xì)節(jié)分析:
1) 用戶只有通過URL 簽名或者匿名訪問Object 時,才會做防盜鏈驗證。請求
的Header 中有“Authorization ”字段的,不會做防盜鏈驗證。
2) 一個bucket 可以支持多個referer 參數(shù),這些參數(shù)之間由“,”號分隔。
3) Referer 參數(shù)支持通配符“*”和“?”。
4) 用戶可以設(shè)置是否允許referer 字段為空的請求訪問。
5) 白名單為空時,不會檢查referer 字段是否為空(不然所有的請求都會被拒絕)。
6) 白名單不為空,且設(shè)置了不允許referer 字段為空的規(guī)則;則只有referer 屬于
白名單的請求被允許,其他請求(包括referer 為空的請求)會被拒絕。
7) 如果白名單不為空,但設(shè)置了允許referer 字段為空的規(guī)則;則referer 為空的
請求和符合白名單的請求會被允許;其他請求都會被拒絕。
8) Bucket 的三種權(quán)限(private ,public-read ,public-read-write )都會檢查referer
字段。
注意:OSS 更多的防盜鏈的規(guī)則正在開發(fā)中。
8
,4. 訪問控制
4.1 用戶簽名驗證(Authentication )
OSS 通過使用Access Key ID/ Access Key Secret對稱加密的方法來驗證某個請求的發(fā)送者身份。Access Key ID用于標(biāo)示用戶,Access Key Secret是用戶用于加密簽名字符串和OSS 用來驗證簽名字符串的密鑰,其中Access Key Secret 必須保密,只有用戶和OSS 知道。每個ACCESS Key對(Access Key ID和Access Key Secret)都有active/inactive兩種狀態(tài)。
? active 表明用戶可以用此ID 對簽名驗證請求
? inactive 表明用戶暫停此ID 對簽名驗證的功能
一個用戶可以同時擁有0至2個active 或者inactive 的ID 對。用戶可以登錄http://oss.aliyun.com/,在OSS 管理控制臺申請新增或刪除ID 對。
當(dāng)用戶想以個人身份向OSS 發(fā)送請求時,需要首先將發(fā)送的請求按照OSS 指定的格式生成簽名字符串;然后使用Access Key Secret對簽名字符串進(jìn)行加密產(chǎn)生驗證碼。 OSS 收到請求以后,會通過Access Key ID找到對應(yīng)的Access Key Secret ,以同樣的方法提取簽名字符串和驗證碼,如果計算出來的驗證碼和提供的一樣即認(rèn)為該請求是有效的;否則,OSS 將拒絕處理這次請求,并返回HTTP 403錯誤。
4.2 在Head 中包含簽名
用戶可以在HTTP 請求中增加Authorization (授權(quán))的Head 來包含簽名(Signature)信息,表明這個消息已被授權(quán)。
Authorization 字段計算方法如下:
9