開發(fā)指南

本文主要面向新浪云存儲服務的開發(fā)者,開發(fā)者可通過此文學習如何使用新浪云存儲進行開發(fā)

概述

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

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

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

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

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

 

云存儲功能

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

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

基本概念

- bucket

云存儲bucket可以看成是命名空間,其名稱全局唯一,如果某個名稱已創(chuàng)建,則其他開發(fā)者將無法再創(chuàng)建相同名稱的bucket;開發(fā)者上傳的任何數(shù)據(jù)必須是屬于某個bucket。上傳任何數(shù)據(jù)之前需先確認是否已經(jīng)創(chuàng)建bucket。 有關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的唯一標識. 有關object的命名限制,請參考#約束與限制. 如: path/to/my/file.txt

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

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

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

    存儲object的相關屬性的描述性信息,為 key-value 組合

- 簽名

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

- ACL

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

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


 

約束與限制

- 編碼限制

bucket名稱、object key、meta、ACL內容等只支持UTF-8編碼

訪問資源的url要進行rawurlencode編碼

object key除了“/”以外需要進行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命名:

    云存儲內全局唯一;

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

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

    不能以‘-’開頭或結尾;

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

  2. object命名:

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

    key除了“/”以外需要進行rawurlencode編碼