開發(fā)指南

本文主要面向新浪云存儲服務(wù)的開發(fā)者,開發(fā)者可通過此文學(xué)習(xí)如何使用新浪云存儲進(jìn)行開發(fā)

概述

新浪云存儲,即SCS(Sina Cloud Storage),提供object網(wǎng)絡(luò)存儲服務(wù),旨在利用新浪在分布式以及網(wǎng)絡(luò)技術(shù)方面的優(yōu)勢為開發(fā)者提供安全、簡單、高效的存儲服務(wù)。

新浪云存儲提供了一系列簡單易用的RESTful API、SDK、工具和方案,使得開發(fā)者通過網(wǎng)絡(luò)即可隨時、隨地存儲任何類型的數(shù)據(jù)、進(jìn)行安全分享及靈活的資源訪問權(quán)限管理。

通過使用新浪云存儲服務(wù),開發(fā)者可以輕松地開發(fā)出擴展性強、穩(wěn)定性好、安全快速的分布式網(wǎng)絡(luò)服務(wù);通過使用云存儲服務(wù)提供的API、SDK及管理平臺,開發(fā)者也可以迅速開發(fā)出適合各種業(yè)務(wù)的網(wǎng)絡(luò)程序。

新浪云存儲可以支持文本、多媒體、二進(jìn)制等任何類型的數(shù)據(jù),支持簽名認(rèn)證及ACL權(quán)限設(shè)置進(jìn)行資源訪問控制,開發(fā)者可以通過管理控制臺直接進(jìn)行上傳、下載或通過RESTful API、Shell Tool、SDK、curl等方式實現(xiàn)上傳、下載。

存儲部署設(shè)計針對大陸互聯(lián)網(wǎng)特點,數(shù)據(jù)和接入點部署在多個機房,覆蓋網(wǎng)通、電信、移動等多家運營商。整個系統(tǒng)支持4個副本,可靠性達(dá)到99.999999999%。文件的多機房分發(fā),一次上傳保證各個運營商內(nèi)都能快速訪問。

 

云存儲功能

新浪云存儲服務(wù)主要提供以下功能供開發(fā)者使用:

#   功能 描述
1 支持任何類型數(shù)據(jù)的上傳和下載 文本、多媒體、日志、二進(jìn)制等類型數(shù)據(jù)
2 元信息機制 開發(fā)者可以使用通用的和自定義的元信息機制來定義資源屬性。
3 容量無限制 對object的個數(shù)沒有限制;云存儲提供分片上傳接口,可以實現(xiàn)T級超大文件的上傳和下載。
4 分片上傳、斷點下載功能 該功能在網(wǎng)絡(luò)不穩(wěn)定的環(huán)境下具有非常好的表現(xiàn)
5 兼容AmazonS3的RESTful風(fēng)格的HTTP接口和多語言SDK及工具 了解RESTful的相關(guān)信息,可參考http://en.wikipedia.org/wiki/Representational_State_Transfer
6 簽名認(rèn)證方案 基于公鑰和密鑰的認(rèn)證方案可適應(yīng)靈活的業(yè)務(wù)需求
7 強大的ACL權(quán)限控制 開發(fā)者可通過ACL設(shè)置資源的權(quán)限(公開或私有),也可授權(quán)特定用戶具有特定權(quán)限
8 功能完善的控制臺 開發(fā)者可通過管理控制臺對所有資源進(jìn)行統(tǒng)一管理
9 靜態(tài)網(wǎng)頁托管 開發(fā)者可通過將靜態(tài)頁面上傳至云存儲空間中,并將其訪問權(quán)限設(shè)置為公開讀,即可實現(xiàn)靜態(tài)網(wǎng)站的效果
 

基本概念

- bucket

云存儲bucket可以看成是命名空間,其名稱全局唯一,如果某個名稱已創(chuàng)建,則其他開發(fā)者將無法再創(chuàng)建相同名稱的bucket;開發(fā)者上傳的任何數(shù)據(jù)必須是屬于某個bucket。上傳任何數(shù)據(jù)之前需先確認(rèn)是否已經(jīng)創(chuàng)建bucket。 有關(guān)bucket的命名限制,請參考 #約束與限制。

創(chuàng)建bucket有以下兩種方式:

通過控制臺創(chuàng)建

通過使用put bucket API創(chuàng)建

如果您的bucket名稱為:my-bucket, 則可以通過如下方式訪問資源:

https://my-bucket.sinacloud.net/path/to/my/file.txt

https://sinacloud.net/my-bucket/path/to/my/file.txt

- object

object是SCS中的基本存儲實體,由Key(鍵)、Data(數(shù)據(jù))及MetaData (元數(shù)據(jù))組成。

  • Key(鍵):

    指object的唯一標(biāo)識. 有關(guān)object的命名限制,請參考#約束與限制. 如: path/to/my/file.txt

  • Data(數(shù)據(jù)):

    object可支持文本、多媒體、二進(jìn)制等任何類型的數(shù)據(jù),開發(fā)者可以利用Object相關(guān)API實現(xiàn)上傳、下載及獲取object列表的功能。

  • MetaData (元數(shù)據(jù)):

    存儲object的相關(guān)屬性的描述性信息,為 key-value 組合

- 簽名

為提高用戶使用的安全性,云存儲服務(wù)支持通過使用用戶簽名來驗證請求者的身份。了解詳細(xì)信息,請參考《簽名算法》

- ACL

ACL: 訪問控制列表 (Access Control List)

云存儲通過ACL實現(xiàn)資源的權(quán)限認(rèn)證,開發(fā)者可以通過設(shè)置ACL來實現(xiàn)復(fù)雜的資源管理。 開發(fā)者通過使用API可以更新bucket或者object的ACL policy,有關(guān)ACL policy的詳細(xì)說明請參考ACL的相關(guān)內(nèi)容。


 

約束與限制

- 編碼限制

bucket名稱、object key、meta、ACL內(nèi)容等只支持UTF-8編碼

訪問資源的url要進(jìn)行rawurlencode編碼

object key除了“/”以外需要進(jìn)行rawurlencode編碼

- API限制

新浪云存儲的API具有以下限制:

  1. 自定義meta:x-amz-meta-* 最多20個;
  2. header 最大長度為8k;
  3. bucket policy和object policy長度 不超過4096字節(jié)

- 命名規(guī)則

API中的bucket和object的命名需符合以下規(guī)則:

  1. bucket命名:

    云存儲內(nèi)全局唯一;

    由小寫字母、數(shù)字及“-”組成,長度為6~63位;

    不能以數(shù)字、‘-’開頭;

    不能以‘-’開頭或結(jié)尾;

    或者使用域名的名命名規(guī)則,例如:xxx.foo.com.cn,方便綁定您的域名

  2. object命名:

    key長度不超過128個字節(jié);

    key除了“/”以外需要進(jìn)行rawurlencode編碼