Storage ########### 服务概述 ============ Storage 是新浪云为开发者提供的分布式对象存储服务,可以用来保存资源文件、备份数据等。 创建 Bucket ============== **Bucket** 是一个容器,这个容器中可以存放各种数据(Object)。上传任何数据之前需先创建 Bucket。您可以在控制台 『应用/存储与CDN/Storage 』中创建 Bucket 。 .. image:: /images/storage-create-bucket.png :width: 500 Bucket 中存储的内容叫做 **Object** ,可以是文本、多媒体、二进制等任意类型的数据文件。 访问控制 =============== Bucket 可以根据业务需求设置不同的访问权限。按照权限大小可以有以下几种: - 私有 Bucket 的 Object 是完全私有的,可以用来保存应用的备份数据等。私有 Bucket 中的数据只可以通过 SDK 读取或者通过 SDK 中的 getTempUrl 获取一个临时的访问 URL 来让用户访问,这个 URL 有过期时间,到期后 URL 会失效,无法再访问。例:http://myapp-mybucket.stor.sinaapp.com/path/to/object?temp_url_sig=1e5c3d0a6af2ede4e327a44a7ef4a72e3423f1fb&temp_url_expires=1472711334 - 公开+防盗链 对于公有的 Bucket 也可以开启防盗链、设置只允许自己的应用域名来访问 Bucket 中的 Object。服务器会根据 HTTP 请求里的 Referer 头来判断一个请求是否在允许的域名里,不在会 302 跳转到您设置的跳转地址。 - 公开 用户可以直接通过 Object 的公开 URL 来访问。 例:http://myapp-mybucket.stor.sinaapp.com/path/to/object **浏览器缓存** 目前几乎所有的浏览器都有本地缓存机制。开发者可以通过控制 Object 的浏览器缓存过期时间,也就是设置 Object 的 HTTP 响应的 Cache-Control 和 Expires 这两个 HTTP Header,来提升 Web 应用的性能,减轻服务端的资源消耗。如果用户没有设置 Bucket 或者 Object 的浏览器缓存过期时间,Storage 默认的时间是 2 小时。 上传、下载、管理 =================== 创建完 Bucket 之后,你可以通过以下方法以及 API 接口往 Bucket 中存数据。 Web ------- 你可以直接通过 Storage 的 Web 控制台来管理创建的 Bucket。 FTP ------- Storage 提供了一个 FTP 管理接口,您可以使用任意 FTP 客户端来操作。FTP 服务器的连接信息如下: - 地址: `ftp.sinas3.com `_ - 端口: 10021 - 用户名:应用的 AccessKey - 密码:应用的 SecretKey Cyberduck ------------------------ 在 Windows 和 Mac 系统下面,你可以使用 Cyberduck 来操作 Storage。 下载地址: `http://cyberduck.io `_ 打开 Cyberduck,点击左上角的“新建连接”。 .. image:: /images/cyberduck-new-connection.png 在弹出的对话框中填写连接相关信息: :: 类型:Swift。 服务器:auth.sinas3.com 端口:443(默认) 用户名:应用 AccessKey(在应用“汇总信息”页面中查看) 密码:应用 SecretKey(在应用“汇总信息”页面中查看) 填写完成后点击连接。如果弹出 auth.sinas3.com,api.sinas3.com 相关证书问题,请选择信任。 .. image:: /images/cyberduck-setting.png 有些版本的 Cyberduck 会弹出下面的对话框,忽略,直接点登录就可以了。 .. image:: /images/cyber-duck-tenant.png 连接完成后,将会看到该应用 Storage 的所有 Bucket 列表: .. image:: /images/cyberduck-ui.png 操作:双击 Bucket 名称,可进入 Bucket,列出文件和文件夹,此时,可进行文件的上传、下载、以及删除操作。 Swift 命令行工具 -------------------- .. note:: 以下文档以 Ubuntu 系统为例。 首先,安装客户端。 .. code-block:: console $ apt-get install python-pip; $ pip install python-swiftclient; 安装完成后,你可以通过 *swift* 这个命令来对应用的 Storage 进行操作。在每次使用 *swift* 之前,请首先执行以下命令将以下配置信息加入到环境变量中去。 .. code-block:: console $ export ST_AUTH='https://auth.sinas3.com/v1.0' $ export ST_USER='AccessKey' $ export ST_KEY='SecretKey' 获取访问 URL --------------- 你可以在 Storage 控制台中直接在对应的 Object 上右击,选择“复制链接”来获取 Object 的访问 URL,如果是公开的 Bucket,URL 为 Object 的公开 URL,如果是私有 Bucket,该 URL 为一个 5 分钟后过期的临时 URL。 在代码里,你也可以通过 SDK 中的 getURL 或者 getTempurl 来获取 Object 的公开 URL和临时 URL。