随着互联网速度的逐渐提升以及用户设备数量的增多,云存储服务从新兴走向火热,现在俨然成为了大众数字生活不可或缺的一部分。但是,市面上的个人云存储产品中存在的订阅费用高昂速度受限功能不够全面等问题使单一产品难以满足每个人的需求;另一方面,云存储产品间各自独立、相对封闭的生态也使得不同云存储平台的用户协作存在一定困难。这些不便之处使我重新认识到了「对象存储」这一「古老」的基础服务在个人存储领域可以发挥的价值。

对象存储和个人云服务之间的关系?区别?

对象存储(object storage)属于公有云服务中的基础设施服务(以下简称 IaaS 服务),是最常见的云存储服务;而目前主流的个人云服务都属于「软件即服务」(以下简称 SaaS 服务)。SaaS 服务和 IaaS 服务的关系就好比是「汤」和「水」:SaaS 服务提供商往往是在 IaaS 服务的基础上「加点料」(开发软件、平台),然后「烧开」(包装成服务)就能「上桌」(面向用户发布)了。

如果把云服务比作乐高,那么 SaaS 就是在 IaaS 基础上多叠了几层(图片来自网络)
如果把云服务比作乐高,那么 SaaS 就是在 IaaS 基础上多叠了几层(图片来自网络)

IaaS 存储服务并不只有「对象存储」这一种,但是它使用最为广泛、工具最为全面、形态也最为成熟,成本也较低,更像是城市中随处可见的「自来水」。通过简单处理(配置)、再加入调料烹煮(开发或使用相关的工具),每个人都能自己创建定制程度更高的「个人云存储」服务。

在价格方面,我们可以用坚果云(个人版)作为参考对象:坚果云提供了 30GB 存储空间和无限制流量访问,定价为 30 元/月;而 COS(以北京为例)30GB 标准存储容量和每月各 1 万次读写请求的基础价格为 3.56 元/月,下载流量价格则为 0.4 元/GB。另外值得注意的是,对象存储服务和其他云基础设施服务一样,都是按照实际使用量进行计费,这也就意味着在不需要频繁下载大文件的情况下,使用对象存储往往会是更经济的选择。

此外,对象存储还提供了许多个人云存储不具备(或无法提供)的特性,包括快速迁移、网站部署、图片自动处理等等,对于有博客图床等需求的用户也更值得推荐。举例来说,我们想要在百度网盘、115 网盘等网盘间迁移文件,往往需要先下载到本地,再上传到另一个网盘。而从 AWS S3 对象存储服务迁移数据到腾讯云 COS,只需要在 COS 控制台上创建迁移任务,并填写原始位置、目标位置和 AWS 的访问密钥,提交后系统就会自动将 S3 中的内容同步到 COS

COS 用于数据处理(来自腾讯云官网)
COS 用于数据处理(来自腾讯云官网)

COS 用于内容分发(来自腾讯云官网)
COS 用于内容分发(来自腾讯云官网)

除此之外,由于依托大型公有云平台,大多数对象存储服务提供商对于个人用户依旧保持了极高的工单(可以理解为「一对一技术支持」)服务水平,这也是个人云服务难以企及的。

「对象」是什么?什么是「存储桶」?对象存储和本地存储有哪些区别?

在对象存储服务中,用户上传的每一个文件会被封装为「对象」,而文件附加的其他信息(如文件类型、名称、图片长宽等)都是这一对象的「属性」。在这些属性之中,名为「key」的属性是最为关键的「索引」,我们可以通过 key 对存储对象进行直接的搜索和定位。

在对象存储服务中,用户可以创建一个个独立的「存储桶」,然后在「桶」中存放「对象」——互联网的世界就是这么朴实而生动。对于存储桶,我们应当以用途为粒度进行划分,确保每个存储桶的用途尽可能单一。例如,针对存放个人文件、发布静态网站、存储备份等用途都应该创建不同的存储桶。此外,不同项目的数据、不同的网站,或者完全私人的文件与工作性质、需要分享的文件,也应该划分不同的存储桶。存储桶的创建和销毁都是免费的,大家完全可以尽可能精细化分配。

对象存储服务抹除了物理存储的概念,在逻辑上是无层次的。同一个存储桶中,对象的存储层次是扁平的,不像本地文件系统一般都有「目录深度」这样的概念。这样的区别体现在如下两个方面:

  • 文件对象的 key 与实际存储路径无关,因此可以使用部分文件系统或操作系统不支持的字符。这可能会在下载到本地计算机时发生问题,不应被滥用。

  • 对象存储中也没有「文件夹」的概念。对象存储的管理平台为了模仿本地存储的使用习惯,并与本地存储系统互相兼容而模拟了目录结构,背后的原理也仅仅是根据 / 这个字符对 key 进行分隔。为了表示空目录,部分云平台也提供「文件夹」对象,实际上只是 key 以 / 结尾的空存储对象。

树状结构与扁平结构的区别
树状结构与扁平结构的区别

道理我懂了,那为什么是腾讯云?收钱了吗?

非但没收,还交了不少钱(叹气)。腾讯云 COS 当然不是完美的对象存储服务,也不是运用最广泛的对象存储服务。在这里推荐大家选择腾讯云,最重要的原因是:腾讯云 COS 是我体验过的对象存储服务中管理工具最为丰富(平台支持全面)、使用体验最接近网盘(上手门槛极低)的一个,而且保持了较为低廉的价格(对比国外大厂近乎白菜价)。它提供了十分丰富的管理工具。除了最常见的 web 控制台,腾讯云 COS 还提供了小程序、手机 app、桌面客户端等管理平台,极大降低了管理的门槛。

「腾讯云助手」小程序

「腾讯云助手」是腾讯云提供的移动端管理工具,寄托于微信平台可以随开随用。「腾讯云助手」提供了无推送广告、基本没有界面广告的清爽体验,相比友商的重量级 app,在功能上毫不承让。尤其是小程序具备的快速更新、体积轻小的特点,迭代迅速、经常添加新功能,使用起来也越发顺手。

使用「腾讯云助手」小程序并不需要将微信与自己的腾讯云账号绑定。在微信中搜索并打开「腾讯云助手」小程序后,可以通过微信、QQ、手机号、腾讯云账号等四种方式登录自己的账号,一次登录后在其他设备及本机上使用都不需要再次登陆

腾讯云助手功能页(可定制显示,非全部功能)和存储桶列表页
腾讯云助手功能页(可定制显示,非全部功能)和存储桶列表页

对于 COS 对象存储,腾讯云助手支持创建、删除存储桶,查看详情、删除文件,以及修改文件权限,基本涵盖了除上传外的所有常用控制台操作

当然,腾讯云助手并不能完全取代网页控制台,但是基本功能一应俱全,是随时掌握自己的存储桶状态与开支等信息的不二之选。

「COSBrowser」 app

COSBrowser app 支持 iOS、Android 两大移动平台Windows、macOS、Linux 三大桌面平台,堪称真正的「全平台」应用。这个 app 从设计上与个人网盘极为相似,支持多种登录方式。作为对象存储的配套服务,COSBrowser 内可以方便地查看每个存储对象的权限等附加信息和直链,也可以修改对象的路径(key)等属性,是 COS 用户的一大利器。

iOS 版 COSBrowser 截图
iOS 版 COSBrowser 截图

在移动端 app 上,COSBrowser 的首页展示了本月读写请求数和总流量,以及存储量、流量、请求数与请求情况四张图表,可以让大家对自己的存储情况(以及资费水平)有基本的了解。为了方便使用,移动端 app 还提供了网页登录的方式,但网页登录容易过期,故更推荐大家使用密钥登录。在 iOS 系统中,COSBrowser 适配了「文件」app,因此我们可以通过「文件」app 直接浏览并上传、下载存储桶中的文件。在 Android 系统中,COSBrowser 似乎也做了类似的适配,但大多数国产 ROM 的内置文件管理器并不支持。

iPad 虽然未获得 app 适配,但「文件」app 体验依旧值得称赞
iPad 虽然未获得 app 适配,但「文件」app 体验依旧值得称赞

在桌面 app 中,COSBrowser 支持了许多个人网盘都未引入的同步功能(单向,支持自动同步),此外也支持「拖放」等手势。相比移动端 app,用户可以查看对象的全部属性,并且修改其权限和存储类型。我们还可以通过 COSBrowser 客户端生成临时链接,便于临时分享 COS 上的文件。

COSBrowser 桌面版支持文件夹同步
COSBrowser 桌面版支持文件夹同步

更完整的详情信息
更完整的详情信息

综上所述,虽然体验上仍有缺憾,例如未适配 iPad、「文件」扩展容易过期掉线等情况,但 COSBrowser 的轻快体验给我的感受依旧优于主流网盘 app,在 IaaS 存储领域更是独树一帜。你可以在 这里 获取 COSBrowser。

话不多说,接下来进入实战部分。

首先注册一个腾讯云账号

打开 腾讯云官网,点击界面上的「免费注册」,来到以下界面。

注册腾讯云账号
注册腾讯云账号

目前,腾讯云的默认注册方式是微信扫码注册,这样注册会自动和微信公众号「腾讯云助手」绑定,并且开启小程序扫码登录。当然,可以通过点击「其他注册方式>>」按钮调出 QQ、邮箱、微信公众平台的注册入口,关于不同注册方式详见 文档

账号注册方式(来自官方文档)
账号注册方式(来自官方文档)

完成注册后需要先进行实名认证,实名认证分为「个人」和「企业」两类,认证类型确认后不能更改,这里我们选择「个人」类型。个人认证可以使用 QQ、微信、人脸识别三种方式进行验证。其中,人脸识别需要提供身份证件信息,QQ、微信则需要账号绑定银行卡,使用微信认证还需额外进行 0.01 元充值。关于实名认证详见 文档

实名认证方式(来自官方文档)
实名认证方式(来自官方文档)

开始使用前,先来了解一下腾讯云 COS 的计费方式

腾讯云 COS 的费用由存储容量费用(适用抵用券)、请求费用(常规)、数据取回费用(标准存储不涉及)、流量费用(适用抵用券)、管理功能费用(仅部分特殊功能)五部分组成。各部分的计费周期与子项如下图所示。

腾讯云 COS 的费用构成(来自官方文档)
腾讯云 COS 的费用构成(来自官方文档)

一般而言,我们总是选择「标准存储」。标准存储的读/写请求单价较低,但存储容量单价稍高。对于一些「多进少出」的数据,我们可以选择「低频存储」。低频存储的存储容量单价较低,但从中下载文件需要收取一定的数据取回费用,并且每个存储对象都有 30 天的最短计费周期。对于更特殊的「只进不出」的数据,我们还可以选择更激进的「归档存储」。归档存储的存储容量单价很低,但数据取回费用相当高昂,并且最短计费周期长达 90 天;此外,归档存储对象只支持直接下载

流量费用仅计算下载流量,是按统一单价收取的,一般包含外网流量和 CDN 回源流量两类。需要注意的是,腾讯云服务同一地域间相互访问一般不收取任何流量费用,但跨地域访问将按外网标准收费。因此,如果需要配合使用多个腾讯云服务,建议部署在同一地域。关于收费标准详见 文档

此外,COS 新用户将免费赠送 6 个月 50GB 标准存储容量抵用券。在抵用券生效期间,标准存储容量小于 50GB 则不会被收取存储容量费用。

实战一:你好,「存储桶」

存储桶在初始化时需要提供名称、地域、权限等信息。名称和地域之外的任何存储桶配置都可以随时调整。如果大家想要部署更多腾讯云服务,建议将自己的服务都部署于同一地域,以享受内网的高速、免费传输。其中,广东北京的服务最为全面、主机配置更丰富,并且参与绝大多数品类的大促折扣活动,更为推荐。

我们可以通过网页控制台、COSBrowser、腾讯云助手等工具创建 COS 存储桶,下面以网页控制台为例,其他途径所需配置信息均类似。

访问 COS 控制台,选择左侧列表中的「存储桶列表」,如下填写完必要信息并确认就成功创建了第一个存储桶,然后自动跳转到存储桶详情页。

创建第一个存储桶
创建第一个存储桶

我们注意到 COS 的默认域名是 <存储桶名称>-<APP ID>.cos.<地区>.myqcloud.com,其中 <存储桶名称>-<APP ID> 有时也称为「Bucket ID」。这个域名就是我们通过 HTTP 接口访问存储桶的入口。

现在,我们已经成功创建了一个存储桶。我们不难发现,在 COSBrowser 加持下,这样一个存储桶已经可以作为简单的私人网盘使用了。这样一个「网盘」不但拥有简洁、强大、无广告的「网页版」,还有 iOS、Android、Windows、macOS、Linux 五大平台客户端,更有一个时刻「跟着微信走」的小程序控制台。

那么,COS 还有哪些简单的应用呢?如果你不满足于「网盘」用途,想要建立一个简单的个人网站,那么不妨来尝试利用 COS 部署一个静态网站

实战二:使用 COS 部署网站

我们首先通过 Hexo 等工具在本地生成一个网站(关于如何生成静态网站,可以参考少数派相关教程),然后打开网站目录

以下两种上传方法大家可以凭喜好选择:

  1. 通过 COSBrowser 客户端上传
    在 COSBrowser 桌面版上进入存储桶,将网站文件全选并拖进窗口,松手即自动开始上传。

    通过「COSBrowser」客户端上传
    通过「COSBrowser」客户端上传

  2. 通过 COSBrowser 客户端一键同步
    在 COSBrowser 桌面版上点击右上角的「同步」按钮,点击「更改」并定位到网站目录,然后选择要同步到的存储桶。「存储桶路径」留空即可,不需要打开「自动同步」。然后点击「开始同步」,等候同步完成。

    通过「COSBrowser」客户端一键同步
    通过「COSBrowser」客户端一键同步

之所以不推荐网页控制台,是因为目前网页上传时不能同时选中文件与文件夹,较为不便。当然,你也可以上传整个站点目录,然后再进行移动。至于如何「避开」这一问题,后续也会引入更强大的工具来解决。

接下来,我们需要配置静态网站部署。在 COS 控制台上打开存储桶详情页,选择左侧子菜单中的「权限管理」,然后在「存储桶访问权限」中把公共权限设置为「公有读私有写」。这样一来,你的网站就具备了被公开访问的基础,并能保持其他人无法修改网站内容。

选择左侧子菜单中的「基础配置」,找到「静态网站」一项,点击「编辑」后将「开启状态」开关打开。配置信息及含义如下列举:

  • 强制 HTTPS:COS 默认支持 HTTP 与 HTTPS 协议。如果开启这一选项,则通过 HTTP 访问时将会被重定向到 HTTPS 页面(TLDR. 开启后更安全,但不支持 HTTPS 的客户端无法访问);
  • 索引文档:默认的入口文件,通常为 index.htmlindex.htm
  • 错误文档:找不到或无权访问时自动展示的页面,命名类似于 404.htmerror.html
  • 重定向规则:针对特定 URL 的自动重定向,本文暂不涉及。

在开启强制 HTTPS 时会触发如下警告,这里简单介绍一下背后的逻辑:如果静态网站源站开启了强制 HTTPS 访问,则它的 CDN 也必须开启强制 HTTPS,否则会有安全风险并且使 CDN 失效。

开启「强制 HTTPS」安全警告
开启「强制 HTTPS」安全警告

大家可以根据自己的网站情况进行设置。按照刚才上传的网站文件,我自己的配置情况如下:

静态网站配置,仅供参考
静态网站配置,仅供参考

配置完毕后,我们就可以通过控制台上展示的静态网站节点地址访问 COS 上部署的网站啦!

在浏览器中访问配置好的静态网站
在浏览器中访问配置好的静态网站

虽然 COS 存储的直接访问速度并不慢,但由于默认网站配置规则简单域名会暴露存储桶信息等原因,这样生成的网站并不适合公开访问。在接下来的文章中我们将会学习如何优化 COS 静态网站的各项参数,并且实战完整的 COS 博客托管流程。

如果你已经在别的平台部署了博客,为了加快国内的访问速度,也不妨尝试将 COS 用作图床

实战三:用 COS 图床加速博客访问

对象存储服务十分适合处理「图床」这类简单的文件提供服务。想要将 COS 用作图床,我们只需要在「iPic」、「PicGO」、「MWeb」等工具中进行配置,并开启 CDN 服务进行加速。

我们先来对存储桶进行对应配置。首先,我们需要创建一个新的存储桶,这里我命名为 my-images。接下来,我们选择左侧菜单中的「域名管理」,将「默认加速域名」的状态设置为开启。记录生成的加速域名,待用。

注意:打开这一配置意味着开启 CDN,可能会产生额外的流量资费,详见 计费标准

打开默认加速域名
打开默认加速域名

接下来,让我们移步 CDN 控制台,进入「域名管理」页面,找到 COS 创建的默认加速域名,点击进入详情页。

CDN 控制台 - 域名管理页
CDN 控制台 - 域名管理页

我们可以看到上方有「基本配置」「访问控制」「缓存配置」「回源配置」「安全配置」「高级配置」六个标签页,可以允许我们对 CDN 行为进行高度定制。对于图床来说,以下是我个人建议手动配置的项目:

访问控制

  • 防盗链设置:开启;域名白名单模式,将自己的博客域名与其他发布网站的域名加入白名单;允许空 Referer,以允许读者从你的博客里正确预览并下载图片。
  • IP 访问限频配置:开启;频次可根据实际情况设置,一般数值不低于一次性加载的最大图片数量;对于未配置懒加载的博客,相当于整篇博文的最大图片数量

缓存配置

  • 文件类型:.jpg;.jpeg;.png;.webp;.svg;.gif,刷新时间:180 天(按需配置)。

高级配置

  • HTTPS 配置:开启强制跳转 HTTPS;
  • 智能压缩:开启,文件类型:.jpg;.jpeg;.png;.webp;.svg;.gif

有很多使用过对象存储服务的同学一定会觉得,接下来我们只需要在支持 COS 的图床工具中配置 COS 即可。但在这之前,我们需要重新认识一下配置图床服务必不可少的「密钥对」。1 

对腾讯云账户来说,Secret ID 和 Secret Key 组成的密钥对是能够代表所有者身份,行使所有权限的「钥匙」。密钥对的配置应当遵循最小权限原则,为了安全考虑不推荐使用主账号密钥对。所以,我们现在来创建一个新的子用户,专门用来上传图片到图床。

将鼠标悬浮在右上角头像处,在下拉菜单中选择「访问管理」。

在下拉菜单中选择「访问管理」
在下拉菜单中选择「访问管理」

在访问管理控制台主页上,点击「创建用户」,继续点击「自定义用户」,并保持默认选中「可访问资源并接收消息」,然后点击「下一步」。

我们可以任意配置符合规定的用户名,然后勾选「编程访问」,并且将所有消息类型反选,然后点击「下一步」。由于是敏感操作,此步骤需要手机短信验证。

子用户配置
子用户配置

跳过后续权限设置步骤,直接点击「下一步」、「完成」来完成用户创建。此时页面上将会显示这一用户的密钥对信息,点击「显示」获得明文后本地保存密钥对,待用

回到「用户列表」页,记录下该用户的账号 ID,待用。

查看并保存密钥对
查看并保存密钥对

接下来,我们回到对象存储控制台,打开图床存储桶详情页,点击左侧菜单的「权限管理」。点击「添加用户」,选择用户类型为「子账号」,然后输入子账号 ID,权限为「数据读取」「数据写入」,然后点击「保存」。

设置子用户权限
设置子用户权限

接下来我们就可以在图床工具中配置 COS 支持了。这里选择 MWeb 作为示范。打开「偏好设置」面板,进入「发布服务」页面,选择图床服务中的「腾讯云 COS」。将存储桶名称、地域、APP ID、密钥对分别填入对应栏,在「域名」处填写 https://<COS 加速域名>,然后「验证」并「确定」。

COS 图床配置与验证(MWeb)
COS 图床配置与验证(MWeb)

接下来,我们就可以根据工具的使用方式来使用 COS 图床了。坚持看到这里的小伙伴们也算是真正地入门了「对象存储」这一服务的基本使用方式。

Have fun with COS!