Day 15 储存宝石:S3 架构 & 版本控管 (Versioning)

https://ithelp.ithome.com.tw/upload/images/20210919/20100951KP1baA1yyC.jpg

今天我们将介绍 AWS S3 的架构及其版本控管(Versioning)的概念。

Bucket 的特性与创建

此处是以 Global 来代表 S3 为跨 Region 的概念(下图#1)。

首先,我们会在 S3 创建一个 Bucket,并给予一个 Bucket nameing (下图#2)。由於 Bucket 是一个跨 Region 的资源,也就是 Global 的资源,所以建立 Bucket 名称时,必须避免与全球的使用者所建之 Bucket 的名字重复。
https://ithelp.ithome.com.tw/upload/images/20210905/201009511IUTUZIAGv.png

创建 Bucket的时候,需要先挑选 Region (下图#1),而在这里笔者为 Bucket 取名为 Bucket instance (下图#2),里面可以放上许多档案(Object)(下图#3)。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951yNU6R8nMGq.png

用 Key-Value 找 Object

当需要寻找某个 Bucket 底下的 Object 的时候,使用的机制是一个叫作 Key-Value 的搜寻方式。

Key-Value 机制非常单纯(下图#1),即找到某个 Bucket 之後(下图#2),再往下找到 Object 的 Key (下图#3),就能拿到此项 Object 的档案及内容。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951mgmQeTfwS2.png

版本控管(Versioning)与被覆盖的共用档案

工作的时候,可能会遇到同事把共用档案覆盖掉而找不回来的事件,为了应付这个状况,S3 提供了一个功能,叫作版本控管(Versioning)。

假设,现在有个人不小心把 Object 覆盖掉了(下图#1),如果有开启 Versioning,S3 就会保留原本的档案,并在新的档案上面,给新 Object 一个标签叫 V1(Versioning1) (下图#2)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009510BU02qljJm.png

那如果之後又有一个新档案把它覆盖掉呢?S3 就会再把档案往上盖(下图#1),并给新的 Object 另外一个 Versioning ID 为 V2 (下图#2)。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951fBVfbgc3kX.png

版本控管(Versioning)与被删除的共用档案

在共用档案被删除的情况下,Versioning 也同样有所用处。

假设有人把下图的 Object 删掉了(下图#1),S3 其实不会真的把这个 Object 给删掉,并会给此项 Object 一个 Delete marker 标签(下图#2),告诉共同使用者这个Object被删除了。

所以,如果有人发现这个 Object 是误删(下图#1),只要把这个被误删的 Object 的 Delete marker 砍掉(下图#2),档案就会回来。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951QXZEi8hoa8.png

小结

下图为今天 S3 服务所导出的结构图。

AWS S3 是一个跨 Region 的概念,为了与其他使用者或其他用途的档案能有所区分,就必须先建置 Bucket,并在其下储存档案,另外利用 Key-Value 方式来找档案的话,也能更快速、方便地找到档案。

此外,只要开启版本控管(Versioning),对於 S3 档案上的变动,AWS S3 就能够给予使用者简单复原档案的机会,避免不可逆的结果,减少使用者的麻烦。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951sDqLZmcPBa.png

What's Next?

那麽明天,我们将接着介绍「储存宝石:S3 储存类别 & 生命周期管理」!


<<:  Day 20 Azure machine learning: "Hello Azure" experiment- 试一下最简单的实验

>>:  Day 20 「就是真诚」TDD 的实弹演习:Magneto Effect

D6 第三周 (回忆篇)

这礼拜进度比较快写到 week4 的作业。看了一下 fetch API 的东西,$.ajax(), ...

Day 20-制作购物车系统之建立Routes&Controller

购物车後端的部分终於要结束啦~ 以下内容有参考教学影片,底下有附网址。 (内容包括我的不专业解说分析...

DAY14:玉山人工智慧挑战赛-中文手写字辨识(OpenCV图像处理)

问题及解决方法 用YOLOv4模型裁切出来的文字,大部分的图档,都有红框等杂讯的存在,如下图。若将含...

[DAY 30] Q&A 谘询系统 大结局

来到了第 30 篇!(๑´ㅂ`๑) 虽然还有很多页面没有讲,但其实有应用到的技术都讲得差不多了 来分...

[Python 爬虫这样学,一定是大拇指拉!] DAY27 - 实战演练:重复使用 TCP 连线

重复使用 TCP 连线 本篇章请搭配以下一起服用: HTTP - 复习传送门 TCP / UDP -...