|
实验内容
对象存储(Cloud Object Storage)是稳定安全的云端存储服务,可以存放任意数量和形式的非结构化内容。结合内容分发网络(Content Delivery Network),将内容分发至加速节点,利用全球调度系统使用户在就近节点获取内容。本实验介绍如何在NodeJs应用中使用COS 与 CDN 服务。
免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器
软件环境:CentOS 7.2 64 位
一、CDN 服务申请
实名认证与申请服务
[color=rgb(68, 68, 68) !important]腾讯云提供了 CDN 的加速服务, 阿里云也提供了CDN的加速服务,但使用服务前您需要实名认证。
二、使用 COS 服务
开通 COS 并上传文件
CDN 开通后, 我们既可以使用 CDN 全站加速的功能, 也可以使用 CDN 部署资源文件的功能,本实验使用 COS/CDN 超出免费配额可能产生小额费用。
在使用 CDN 部署资源文件的功能前, 我们需要开通腾讯云的 COS 服务, 点击下面的视频了解如何申请该服务
如何申请和使用腾讯云的 COS 服务
COS 文件地址与 CDN 加速地址
文件通过腾讯云官网控制台web页面上传后, 通过查看上传文件信息可以得到形如 Bucket名称-id.cos地区缩写.myqcloud.com/文件名 的 URL 地址, 将该地址中的 cos地区缩写 改为 file 即可得到 CDN 的加速地址.
使用该加速地址来访问的资源文件可以得到更快的响应, 达到加速的目的. 如:
文件地址:
- http://cloud-1251435248.costj.myqcloud.com/hello.txt
复制代码 对应的 CDN 地址:- http://cloud-1251435248.file.myqcloud.com/hello.txt
复制代码 cos地址与对应园区的关系
- costj -- 华北(天津园区)
- cossh -- 华东(上海园区)
- cosgz -- 华南(广州园区)
- cossgp -- 新加坡园区
三、使用 COS SDK for Node.js
准备工作
上面介绍了使用浏览器上传文件到 COS 并得到 CDN 地址的方式, 下面介绍如何通过 SDK 的方式使用 COS. 在这之前, 我们需要做一些准备工作
创建相关目录
准备相关的文件
执行下面的命令, 在 /data/upload 目录下创建一个名叫upload_example.txt的文件
- echo 'Hello World' > /data/upload/upload_example.txt
复制代码 查看 appid, secret_id 和 secret_key 信息
如果您 Bucket 的默认域名中包含125开头的 APPID,请使用“API密钥”;
如果您 Bucket 的默认域名中包含100开头的项目 ID,请使用“项目密钥”;
查看 bucket 属于哪个园区
打开 bucket列表
在列表中点击将要上传的 bucket, 进入详情页
选择 基础配置 tab
查看 基本信息 - 所属地区
华北地区对应 tj, 华南地区对应 gz, 华东地区对应 sh
安装 Node.js 环境
- curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
- yum install nodejs npm -y
复制代码 使用 npm 安装 COS 的 Node.js SDK
- cd /data && npm i cos-nodejs-sdk-v5 --save
复制代码 如果下载速度较慢, 可以考虑更换 npm 源来安装- cd /data && npm i cos-nodejs-sdk-v5 --save --registry=https://registry.npm.taobao.org
复制代码
使用 SDK 上传文件到 COS
在 /data 目录下创建 cos_nodejs_upload.js 文件, 并编辑内容如下
示例代码:/data/cos_nodejs_upload.js
- var COS = require('cos-nodejs-sdk-v5');
- var cos = new COS({
- AppId: '', // 替换为你的appid
- SecretId: '', // 替换为你的SecretId
- SecretKey: '', // 替换为你的SecretKey
- });
- cos.sliceUploadFile({
- Bucket: '', // 替换为你的Bucket名称
- Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
- Key: 'upload_example_nodejs.txt', // 设置上传到cos后的文件的名称
- FilePath: './upload/upload_example.txt' // 设置要上传的本地文件
- }, function (err, data) {
- if (!err) {
- console.log(data);
- } else {
- console.log(err);
- }
- });
复制代码 将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域, 要上传的本地文件, 上传到cos后的文件的名称 填入后执行
- cd /data && node cos_nodejs_upload.js
复制代码 如果调用成功, 会返回类似如下结构的信息:- ---------------- upload file -----------------
- file name : upload_example_nodejs.txt
- Async uploading...----- 1
- ---------------- upload complete -----------------
- { Location: 'detect-1253675457.cn-east.myqcloud.com/upload_example_nodejs.txt',
- Bucket: 'detect',
- Key: 'upload_example_nodejs.txt',
- ETag: '"d9883e94617e5c7d60f115710b4ef7cd"' }
复制代码 在 bucket列表 中选择你刚才填入的 bucket 并查看文件列表, 会发现新增了 upload_sample_nodejs.txt 文件, 证明确实已经成功上传到 COS
如果调用失败, 会返回类似如下的信息:
- {
- statusCode: 404,
- error: {
- Code: 'NoSuchBucket',
- Message: 'The specified bucket does not exist.',
- Resource: 'deect-1253675457.cn-east.myqcloud.com/upload_example_nodejs.txt',
- RequestId: 'NTkyZmQ0MjdfOTJhMDY4XzUwZGNfODY0ZjY=',
- TraceId: 'OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTY4OGQ5OWY4YWFhNjAzOTkyNDJhZmQyOTk1YWVmOW
- FlOTBkODY2ZjFjYTkwZDU4M2YyYmQ4MWMwNzhkOGY0ZTE='
- }
- }
复制代码 结合 cos错误码说明 和message字段, 您可以知道发生错误的原因
使用 SDK 删除 COS 文件
COS 提供通过 SDK 删除文件的能力
在 /data 目录下创建 cos_nodejs_delete.js 文件, 并编辑内容如下
示例代码:/data/cos_nodejs_delete.js
- var COS = require('cos-nodejs-sdk-v5');
- var cos = new COS({
- AppId: '', // 替换为你的appid
- SecretId: '', // 替换为你的SecretId
- SecretKey: '', // 替换为你的SecretKey
- });
- cos.deleteObject({
- Bucket: '', // 替换为你的Bucket名称
- Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
- Key: 'upload_example_nodejs.txt', // 替换为要删除的cos文件的名称
- }, function(err, data) {
- if (err) {
- console.log(err);
- } else {
- console.log(data);
- }
- });
复制代码 将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域, 要删除的cos文件的名称 填入后执行
- cd /data && node /data/cos_nodejs_delete.js
复制代码 如果调用成功, 会返回类似如下结构的信息:- { DeleteObjectSuccess: true }
复制代码 在 bucket列表 中选择你刚才填入的 bucket 并查看文件列表, 会发现upload_sample_nodejs.txt文件已经不存在了, 证明文件删除成功
使用 SDK 列出 bucket 下的所有 Object
在 /data 目录下创建 cos_nodejs_list.js 文件, 并编辑内容如下
示例代码:/data/cos_nodejs_list.js
- var COS = require('cos-nodejs-sdk-v5');
- var cos = new COS({
- AppId: '', // 替换为你的appid
- SecretId: '', // 替换为你的SecretId
- SecretKey: '', // 替换为你的SecretKey
- });
- cos.getBucket({
- Bucket: '', // 替换为你的Bucket名称
- Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
- }, function(err, data) {
- if(err) {
- console.log(err);
- } else {
- console.log(data);
- }
- });
复制代码 将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域 填入后执行- cd /data && node /data/cos_nodejs_list.js
复制代码 如果调用成功, 会返回类似如下结构的信息:- {
- Name: 'detect',
- Prefix: '',
- Marker: '',
- MaxKeys: '1000',
- IsTruncated: 'false',
- Contents: [
- {
- Key: 'sample_file_move.txt',
- LastModified: '2017-06-01T06: 56: 05.000Z',
- ETag: '"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a"',
- Size: '12',
- Owner: [Object],
- StorageClass: 'Standard'
- },
- {
- Key: 'sample_folder/',
- LastModified: '2017-06-01T07: 05: 04.000Z',
- ETag: '""',
- Size: '0',
- Owner: [Object],
- StorageClass: 'Standard'
- },
- {
- Key: 'sample_folder_php/',
- LastModified: '2017-06-01T08: 08: 10.000Z',
- ETag: '""',
- Size: '0',
- Owner: [Object],
- StorageClass: 'Standard'
- },
- {
- Key: 'upload_sample_php_move.txt',
- LastModified: '2017-06-01T08: 02: 17.000Z',
- ETag: '"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a"',
- Size: '12',
- Owner: [Object],
- StorageClass: 'Standard'
- }
- ],
- CommonPrefixes: []
- }
复制代码 点击查看 SDK for Node.js 文档 可以了解详细的返回字段对应信息
实验完成
恭喜您已经完成了 CDN 与 COS for Node.js 的学习
|
|