体验 COS 与 CDN 服务 for Node.js-云服务器玩法在线实验

[复制链接]
查看: 381|回复: 0
发表于 2020-4-11 15:01:36 | 显示全部楼层 |阅读模式
实验内容
对象存储(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 的加速地址.


使用该加速地址来访问的资源文件可以得到更快的响应, 达到加速的目的. 如:



文件地址:
  1. http://cloud-1251435248.costj.myqcloud.com/hello.txt
复制代码
对应的 CDN 地址:
  1. http://cloud-1251435248.file.myqcloud.com/hello.txt
复制代码
cos地址与对应园区的关系
  • costj -- 华北(天津园区)
  • cossh -- 华东(上海园区)
  • cosgz -- 华南(广州园区)
  • cossgp -- 新加坡园区


三、使用 COS SDK for Node.js
准备工作
上面介绍了使用浏览器上传文件到 COS 并得到 CDN 地址的方式, 下面介绍如何通过 SDK 的方式使用 COS. 在这之前, 我们需要做一些准备工作

创建相关目录
  1. mkdir -p /data/upload
复制代码
准备相关的文件
执行下面的命令, 在 /data/upload 目录下创建一个名叫upload_example.txt的文件
  1. 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 环境
  1. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  2. yum install  nodejs npm -y
复制代码
使用 npm 安装 COS 的 Node.js SDK
  1. cd /data && npm i cos-nodejs-sdk-v5 --save
复制代码
如果下载速度较慢, 可以考虑更换 npm 源来安装
  1. 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
  1. var COS = require('cos-nodejs-sdk-v5');
  2. var cos = new COS({
  3.     AppId: '',     // 替换为你的appid
  4.     SecretId: '',  // 替换为你的SecretId
  5.     SecretKey: '', // 替换为你的SecretKey
  6. });

  7. cos.sliceUploadFile({
  8.     Bucket: '', // 替换为你的Bucket名称
  9.     Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
  10.     Key: 'upload_example_nodejs.txt', // 设置上传到cos后的文件的名称
  11.     FilePath: './upload/upload_example.txt' // 设置要上传的本地文件
  12. }, function (err, data) {
  13.     if (!err) {
  14.         console.log(data);
  15.     } else {
  16.         console.log(err);
  17.     }
  18. });
复制代码
将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域, 要上传的本地文件, 上传到cos后的文件的名称 填入后执行
  1. cd /data && node cos_nodejs_upload.js
复制代码
如果调用成功, 会返回类似如下结构的信息:
  1. ---------------- upload file -----------------
  2. file name : upload_example_nodejs.txt
  3. Async uploading...-----  1
  4. ---------------- upload complete -----------------
  5. { Location: 'detect-1253675457.cn-east.myqcloud.com/upload_example_nodejs.txt',
  6.   Bucket: 'detect',
  7.   Key: 'upload_example_nodejs.txt',
  8.   ETag: '"d9883e94617e5c7d60f115710b4ef7cd"' }
复制代码
在 bucket列表 中选择你刚才填入的 bucket 并查看文件列表, 会发现新增了 upload_sample_nodejs.txt 文件, 证明确实已经成功上传到 COS

如果调用失败, 会返回类似如下的信息:
  1. {
  2.     statusCode: 404,
  3.     error: {
  4.         Code: 'NoSuchBucket',
  5.         Message: 'The specified bucket does not exist.',
  6.         Resource: 'deect-1253675457.cn-east.myqcloud.com/upload_example_nodejs.txt',
  7.         RequestId: 'NTkyZmQ0MjdfOTJhMDY4XzUwZGNfODY0ZjY=',
  8.         TraceId: 'OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTY4OGQ5OWY4YWFhNjAzOTkyNDJhZmQyOTk1YWVmOW
  9. FlOTBkODY2ZjFjYTkwZDU4M2YyYmQ4MWMwNzhkOGY0ZTE='
  10.     }
  11. }
复制代码
结合 cos错误码说明 和message字段, 您可以知道发生错误的原因

使用 SDK 删除 COS 文件
COS 提供通过 SDK 删除文件的能力

在 /data 目录下创建 cos_nodejs_delete.js 文件, 并编辑内容如下

示例代码:/data/cos_nodejs_delete.js
  1. var COS = require('cos-nodejs-sdk-v5');
  2. var cos = new COS({
  3.     AppId: '',     // 替换为你的appid
  4.     SecretId: '',  // 替换为你的SecretId
  5.     SecretKey: '', // 替换为你的SecretKey
  6. });

  7. cos.deleteObject({
  8.     Bucket: '', // 替换为你的Bucket名称
  9.     Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
  10.     Key: 'upload_example_nodejs.txt', // 替换为要删除的cos文件的名称
  11. }, function(err, data) {
  12.     if (err) {
  13.         console.log(err);
  14.     } else {
  15.         console.log(data);
  16.     }
  17. });
复制代码
将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域, 要删除的cos文件的名称 填入后执行
  1. cd /data && node /data/cos_nodejs_delete.js
复制代码
如果调用成功, 会返回类似如下结构的信息:
  1. { DeleteObjectSuccess: true }
复制代码
在 bucket列表 中选择你刚才填入的 bucket 并查看文件列表, 会发现upload_sample_nodejs.txt文件已经不存在了, 证明文件删除成功

使用 SDK 列出 bucket 下的所有 Object
在 /data 目录下创建 cos_nodejs_list.js 文件, 并编辑内容如下

示例代码:/data/cos_nodejs_list.js
  1. var COS = require('cos-nodejs-sdk-v5');
  2. var cos = new COS({
  3.     AppId: '',     // 替换为你的appid
  4.     SecretId: '',  // 替换为你的SecretId
  5.     SecretKey: '', // 替换为你的SecretKey
  6. });

  7. cos.getBucket({
  8.     Bucket: '', // 替换为你的Bucket名称
  9.     Region: 'cn-north', // 设置COS所在的区域,对应关系: 华南->cn-south, 华东->cn-east, 华北->cn-north
  10. }, function(err, data) {
  11.     if(err) {
  12.         console.log(err);
  13.     } else {
  14.         console.log(data);
  15.     }
  16. });
复制代码
将你的 Appid, SecretId, SecretKey, Bucket名称, COS所在的区域 填入后执行
  1. cd /data && node /data/cos_nodejs_list.js
复制代码
如果调用成功, 会返回类似如下结构的信息:
  1. {
  2.     Name: 'detect',
  3.     Prefix: '',
  4.     Marker: '',
  5.     MaxKeys: '1000',
  6.     IsTruncated: 'false',
  7.     Contents: [
  8.         {
  9.             Key: 'sample_file_move.txt',
  10.             LastModified: '2017-06-01T06: 56: 05.000Z',
  11.             ETag: '"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a"',
  12.             Size: '12',
  13.             Owner: [Object],
  14.             StorageClass: 'Standard'
  15.         },
  16.         {
  17.             Key: 'sample_folder/',
  18.             LastModified: '2017-06-01T07: 05: 04.000Z',
  19.             ETag: '""',
  20.             Size: '0',
  21.             Owner: [Object],
  22.             StorageClass: 'Standard'
  23.         },
  24.         {
  25.             Key: 'sample_folder_php/',
  26.             LastModified: '2017-06-01T08: 08: 10.000Z',
  27.             ETag: '""',
  28.             Size: '0',
  29.             Owner: [Object],
  30.             StorageClass: 'Standard'
  31.         },
  32.         {
  33.             Key: 'upload_sample_php_move.txt',
  34.             LastModified: '2017-06-01T08: 02: 17.000Z',
  35.             ETag: '"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a"',
  36.             Size: '12',
  37.             Owner: [Object],
  38.             StorageClass: 'Standard'
  39.         }
  40.     ],
  41.     CommonPrefixes: []
  42. }
复制代码
点击查看 SDK for Node.js 文档 可以了解详细的返回字段对应信息

实验完成
恭喜您已经完成了 CDN 与 COS for Node.js 的学习
腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )