c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~