第十七天 OSS云存储
阿里云存储服务(Open Storage Service,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过简单的REST接口,在任何时间、任何地点上传和下载数据,也可以使用WEB页面对数据进行管理
OSS具有如下特点:
(1)稳定:服务可用性高达99.9%;系统规模自动扩展,不影响对外服务;数据三重备份,可靠性达到99.99999999%。
(2)安全:多层次安全防护和防DDoS攻击;多用户隔离机制;
(3)大规模,高性能:具有海量的存储空间,随用户使用量的增加,空间弹性增长,并能支持同时间内高并发、大流量的读写访问。
同时OSS还提供图片处理功能,对存储在OSS上的图片,支持缩略、裁剪、水印、压缩和格式转换等图片处理。
开始使用OSS
oss-quick-start-flow.jpg
快速开始-Node.js
下面介绍如何在Node.js环境中使用OSS JavaScript SDK来访问OSS服务,包括查看Bucket列表,查看文件列表,上传/下载文件和删除文件。为了方便修改,下面的介绍会新建一个app.js,下面的功能演示代码都写在这个文件中。
- 安装SDK
首先在工作目录安装ali-oss:
npm install ali-oss
- 使用同步方式
由于SDK基于ES6开发,使用了Generator Function使得用户能够方便地用同步的方式异步的代码,需要配合co使用。具体可参考这篇博客。使用同步方式还需要安装co:
npm install co
- 使用异步方式
为了支持callback的使用方式,SDK同时也提供了异步的基于Promise的接口,使用上类似callback,具体可参考这篇博客。
下面的文档将以同步的方式为例。
-
初始化Client
创建一个文件:app.js并写入下面的内容:
var co = require('co'); var OSS = require('ali-oss'); var client = new OSS({ region: '<Your region>', accessKeyId: '<Your AccessKeyId>', accessKeySecret: '<Your AccessKeySecret>' });
其中region参数是指您申请OSS服务时的区域,例如’oss-cn-hangzhou’。完整的区域列表可以在OSS服务节点查看。
如果所使用的endpoint不在上述列表中,可以通过以下参数指定endpoint: internal: 配合region使用,如果指定internal为true,则访问内网节点 secure: 配合region使用,如果指定了secure为true,则使用HTTPS访问 endpoint: 例如http://oss-cn-hangzhou.aliyuncs.com,如果指定了endpoint,则region会被忽略,endpoint可以指定HTTPS,也可以是IP形式 cname: 配合endpoint使用,如果指定了cname为true,则将endpoint视为用户绑定的自定义域名 bucket: 如果未指定bucket,则进行Object相关的操作时需要先调用useBucket接口(只需要调用一次) timeout: 默认为60秒,指定访问OSS的API的超时时间
-
查看Bucket列表
在app.js末尾添加如下内容,使用listBuckets接口查看Bucket列表:
co(function* () { var result = yield client.listBuckets(); console.log(result); }).catch(function (err) { console.log(err); });
运行并查看结果:node app.js。
-
查看文件列表
修改app.js,使用list接口查看文件列表:
co(function* () { client.useBucket('Your bucket name'); var result = yield client.list({ 'max-keys': 5 }); console.log(result); }).catch(function (err) { console.log(err); });
使用node app.js运行并查看结果。
-
上传一个文件
修改app.js,使用put接口上传一个文件:
co(function* () { client.useBucket('Your bucket name'); var result = yield client.put('object-key', 'local file'); console.log(result); }).catch(function (err) { console.log(err); });
-
下载一个文件
修改app.js,使用get接口下载一个文件:
co(function* () { var result = yield client.get('object-key', 'local file'); console.log(result); }).catch(function (err) { console.log(err); });
-
删除一个文件
修改app.js,使用delete接口下载一个文件:
co(function* () { var result = yield client.delete('object-key'); console.log(result); }).catch(function (err) { console.log(err); });
具体使用请参考页面链接: