AWS Simple Storage Service(S3)介绍

网友投稿 309 2022-10-08

AWS Simple Storage Service(S3)介绍

关键词:对象存储,文件存储,S3 Intelligent-Tiering

简介

在Amazon的购物网站上,我们可以挑选成千上万的商品,每种商品都有自己的图片展示。

在背后保存这些海量图片的服务就是AWS Simple Storage Service(S3)。

S3早期只是为了Amazon购物网站内部使用,后来随着性能不断完善,成为了AWS推出的第一个商用云服务。

对于我们来说,S3大概是AWS中最容易上手的服务了。只要新建一个Bucket,就可以往里面存取各种文件,十分方便。

我们在之前的文章中多次使用过S3,但没有正式介绍过。从本篇开始我们稍微详细地介绍一下S3,并做一些测试。

本篇纯理论,测试安排在后面的文章中。

目录

S3介绍 什么是S3,什么是对象存储 对象存储 vs 文件存储 S3存储类型(Storage classes) s3存储管理 访问控制(Access management) 数据处理 s3的主要概念 后记

S3介绍

1. 什么是S3,什么是对象存储

Amazon Simple Storage Service (Amazon S3)是AWS提供的对象(object)存储服务,在可扩展性、可用性、安全以及性能上都属于业界领先的。

S3可以为不同用户、不同场景提供存储服务,比如数据湖,网站,移动应用,一般数据的备份恢复,大数据分析等等。

对象存储 vs 文件存储

“对象存储是用来描述解决和处理离散单元的方法的通用术语。对象在一个层结构中不会再有层级结构,是以扩展元数据为特征的。”

这是网上给对象存储的定义,估计第一次看没几个人能看懂什么意思。

简单点理解,对象存储就是把一个文件(离散单元),保存在某个地方,同时生成一个Key。之后每次访问时,我们只需要提供Key就可以找到文件。

与对象存储相对应的是文件存储,我们把一个文件,保存在某个地方的某些文件夹之中,之后每次访问时,根据这个文件所在的文件夹和文件名,找到这个文件。

可以理解为,对象存储与文件存储最主要的区别在于存储的方法不同。

使用对象存储时,我们不知道也不关心文件存在哪里(哪个文件夹下),我们只需要记住这个文件对应的Key(一串字符)就可以找到我们保存的文件。

而使用文件存储时,我们需要明确地知道文件保存的路径,找回文件时需要按文件夹的路径依次找到文件。

这里需要特别说明的是,我们在使用S3时也会看到按路径存储的文件。但这里的路径并不是代表一层一层的文件夹,而只是Key。

可能有人会问,那我不创建文件夹只把文件放在硬盘根目录,这样没有一层层的文件夹,只通过文件名访问文件,这和对象存储不就一样了?

我们这里说的文件夹,其实指的是文件系统,我们平时用的电脑硬盘都是有文件系统的,

而对象存储存放对象的“硬盘”是没有文件系统的或者说没有我们传统的文件系统。

对象存储的好处是易于访问,方便扩展,降低成本。我们用以下的简化例子说明原因。

当我们使用文件存储时,需要文件系统支持,简单点说就是要建各级文件夹然后把文件放在对应的文件夹中。

我们可以认为文件夹是建在一个硬盘上的,当这个硬盘满了的时候,我们需要增加新的硬盘,

可是已经创建好的文件夹是不可能扩展到这个新硬盘中的,只能在新硬盘中创建新的文件夹,然后再保存数据。

对于对象存储就没有这样的问题,所有文件(或者叫对象,其实是一回事)都放“硬盘”根目录上,不需要各级文件夹,只有每个文件对应的key,

当前硬盘满了,增加新硬盘之后,新的文件就直接放在新硬盘的根目录下不需创建各种文件夹。

用户并不清楚自己的文件是放在哪个硬盘上,反正只要有key就可以找到自己的文件。

从上面这个简化的例子,我们可以看到对象存储的以下特点

提取文件只需要文件对应的Key,不需要知道各级路径(易于访问) 对象存储扩展时只需要加硬盘,不用创建文件系统(方便扩展) 因为不需要统一的文件系统,所以各种硬盘的规格限制也少了很多(降低成本)

说了这么多,具体使用时对象存储和文件存储有什么不同吗?

对用户来说其实差不多,只是命令换成了对象存储自己的命令而已。对象存储可以保存所有文件存储能保存的文件,而且保存成本更低。

(至于具体价格,有兴趣的朋友自己查吧,AWS的定价机制挺复杂的,一下子也说不清,反正就是便宜:))

2. S3存储类型(Storage classes)

S3提供了多种存储类型(Storage classes)以适用于不同的业务场景,默认的存储类型为S3 Standard

S3 Standard:需要快速存取的数据 S3 Standard-IA,S3 One Zone-IA:不需要频繁存取的数据 S3 Glacier,S3 Glacier Deep Archive:归档数据

S3默认的存储类型为Standard。

当我们不确定数据的存取需求时,我们也可以选择S3 Intelligent-Tiering类型。

S3 Intelligent-Tiering会根据我们存取数据的模式(pattern)改变,自动调整数据的存储类形,使之适用于相应的场景。

3. s3存储管理

S3提供了多种功能特性来进行存储管理

S3 Lifecycle:通过lifecycle policy来管理存储对象,比如可以转换存储类型或者使对象过期 S3 Object Lock:可以在一定期限或者永久地阻止对象对删除或者修改 S3 Replication:把对象和其元数据、tag等复制到一个或多个Regions的bucket中 S3 Batch Operations:通过S3 Api或者控制台大批量(十亿级别)操作存储对象

4. 访问控制(Access management)

S3提供了各种方法来监控和管理访问权限。默认情况下,用户创建的Bucket和对象(object)均为私有,即用户只能访问自己创建的对象。

当需要访问其它Bucket时,可以通过以下方式控制访问权限

S3 Block Public Access:阻止public(任意用户可以是非IAM用户)访问Bucket或者对象。默认情况下,新建的Bucket都是不能被public访问的 AWS Identity and Access Management (IAM):通过IAM来管理Bucket和对象的访问权限,我们在《一文搞懂 AWS IAM 权限 基础篇下 实战》中用S3来测试了相关权限管理内容 Bucket policies:resource-based policy,在bucket中设置访问权限控制,我们同样在《一文搞懂 AWS IAM 权限 基础篇下 实战》中进行了测试 Access control lists (ACLs):早期的权限控制方法,现在AWS官方推荐使用IAM和Bucket policies的权限管理方法

5. 数据处理

为了数据传输以及触发workflow, s3还提供以下的功能

S3 Object Lambda:利用AWS Lambda函数,可以添加自己的代码到S3 GET request中,以便修改及处理数据。比如,过滤数据,动态调整图像大小,编辑加密信息等等 Event notifications:当S3对象有变动时,触发AWS SNS,SQS,Lambda等其它AWS服务

6. S3的主要概念

S3是AWS的对象存储服务,在使用时我们先创建一个Bucket,Bucket是存放对象(Object,可以是文件,图片,视频)的容器。在创建Bucket时,我们定义Bucket的名称并且选择一个Region(一般选择离自己最近的Region)。

当我们把对象(Object)存放到Bucket中时,会指定一个Key,Key是对象的唯一标识。

我们可以利用S3 Versioning来保存对象的每个不同版本,这样可以防止对象被意外删除或者修改。

我们通过IAM和Bucket policy来控制访问Bucket和对象的权限。

S3一般是通过intenet访问的,当我们需要从不能访问internet的VPC subnet中访问S3服务时,我们可以利用S3 Access Points来实现。

后记

之前写EKS,Kubernetes相关内容太多了,感觉越写越多,快成EKS专场了。是时候换个AWS服务写写了。

有朋友“27149”提建议说,“不要写AWS服务时,只说贵或者便宜,可以写上具体价格。”

当时我觉得这主意不错,今天写文章时也想把S3的价格列出来,结果一看价格算法,实在是太繁琐了,直接放弃了。。还是用贵和便宜吧:)

关注 B 站 UP 主“我是手拉面” 观看更多视频

51CTO博客https://blog./tansong

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:前端工程师 2022 年必备的 7 个工具
下一篇:现代化云桌面之Windows 365介绍篇
相关文章

 发表评论

暂时没有评论,来抢沙发吧~