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