开发指南

本文主要面向新浪云存储服务的开发者,开发者可通过此文学习如何使用新浪云存储进行开发

概述

新浪云存储,即SCS(Sina Cloud Storage),提供object网络存储服务,旨在利用新浪在分布式以及网络技术方面的优势为开发者提供安全、简单、高效的存储服务。

新浪云存储提供了一系列简单易用的RESTful API、SDK、工具和方案,使得开发者通过网络即可随时、随地存储任何类型的数据、进行安全分享及灵活的资源访问权限管理。

通过使用新浪云存储服务,开发者可以轻松地开发出扩展性强、稳定性好、安全快速的分布式网络服务;通过使用云存储服务提供的API、SDK及管理平台,开发者也可以迅速开发出适合各种业务的网络程序。

新浪云存储可以支持文本、多媒体、二进制等任何类型的数据,支持签名认证及ACL权限设置进行资源访问控制,开发者可以通过管理控制台直接进行上传、下载或通过RESTful API、Shell Tool、SDK、curl等方式实现上传、下载。

存储部署设计针对大陆互联网特点,数据和接入点部署在多个机房,覆盖网通、电信、移动等多家运营商。整个系统支持4个副本,可靠性达到99.999999999%。文件的多机房分发,一次上传保证各个运营商内都能快速访问。

 

云存储功能

新浪云存储服务主要提供以下功能供开发者使用:

#   功能 描述
1 支持任何类型数据的上传和下载 文本、多媒体、日志、二进制等类型数据
2 元信息机制 开发者可以使用通用的和自定义的元信息机制来定义资源属性。
3 容量无限制 对object的个数没有限制;云存储提供分片上传接口,可以实现T级超大文件的上传和下载。
4 分片上传、断点下载功能 该功能在网络不稳定的环境下具有非常好的表现
5 兼容AmazonS3的RESTful风格的HTTP接口和多语言SDK及工具 了解RESTful的相关信息,可参考http://en.wikipedia.org/wiki/Representational_State_Transfer
6 签名认证方案 基于公钥和密钥的认证方案可适应灵活的业务需求
7 强大的ACL权限控制 开发者可通过ACL设置资源的权限(公开或私有),也可授权特定用户具有特定权限
8 功能完善的控制台 开发者可通过管理控制台对所有资源进行统一管理
9 静态网页托管 开发者可通过将静态页面上传至云存储空间中,并将其访问权限设置为公开读,即可实现静态网站的效果
 

基本概念

- bucket

云存储bucket可以看成是命名空间,其名称全局唯一,如果某个名称已创建,则其他开发者将无法再创建相同名称的bucket;开发者上传的任何数据必须是属于某个bucket。上传任何数据之前需先确认是否已经创建bucket。 有关bucket的命名限制,请参考 #约束与限制

创建bucket有以下两种方式:

通过控制台创建

通过使用put bucket API创建

如果您的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(数据)及MetaData (元数据)组成。

  • Key(键):

    指object的唯一标识. 有关object的命名限制,请参考#约束与限制. 如: path/to/my/file.txt

  • Data(数据):

    object可支持文本、多媒体、二进制等任何类型的数据,开发者可以利用Object相关API实现上传、下载及获取object列表的功能。

  • MetaData (元数据):

    存储object的相关属性的描述性信息,为 key-value 组合

- 签名

为提高用户使用的安全性,云存储服务支持通过使用用户签名来验证请求者的身份。了解详细信息,请参考《签名算法》

- ACL

ACL: 访问控制列表 (Access Control List)

云存储通过ACL实现资源的权限认证,开发者可以通过设置ACL来实现复杂的资源管理。 开发者通过使用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字节

- 命名规则

API中的bucket和object的命名需符合以下规则:

  1. bucket命名:

    云存储内全局唯一;

    由小写字母、数字及“-”组成,长度为6~63位;

    不能以数字、‘-’开头;

    不能以‘-’开头或结尾;

    或者使用域名的名命名规则,例如:xxx.foo.com.cn,方便绑定您的域名

  2. object命名:

    key长度不超过128个字节;

    key除了“/”以外需要进行rawurlencode编码