时间:2021-07-15 | 标签: | 作者:Q8 | 来源:陈鹄网络
小提示:您能找到这篇{一文读懂AWS S3}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的一文读懂AWS S3内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< "> < ">AWS S3全名是Simple Storage Service,简便的存储服务。为什么这么起名啊?它: < ">1.提供了统一的接口REST/SOAP来统一访问任何数据 < ">2.对S3来说,存在里面的数据就是对象名(键),和数据(值) < ">3.不限量,单个文件最高可达5TB < ">4.高速。每个bucket下每秒可达3500 PUT/COPY/POST/DELETE或5500 GET/HEAD请求 < ">5.具备版本,权限控制能力 < ">6.具备数据生命周期管理能力 < ">作为一个对象存储服务,S3功能真的很完备。如果不用搭梯子,访问快,我还真想过拿它来做自己的网盘。 < "> < ">< font-size: 18px;">基本概念 < ">Bucket < ">要存储数据在S3里,首先我们要建立一个Bucket。Bucket默认是不公开的。 < ">Bucket有几个特点: < ">命名需全球唯一。每个帐号默认可建100个,可申请至最多1000个 < ">创建者的拥有权不可转让,也不可以从一个Region转去别的Region < ">没有对象存储数量限制 < ">Bucket就像是电脑里面的某一个顶层分区。所有的对象都必须保存在某一个bucket下面。 < ">Object < ">Bucket里面每一个存储的数据就是对象,由对象名(键),和数小程序都会有哪些据(值)组成。 < ">对象的键(Key)可以很长,甚至按照一定前缀格式来指定,从而模拟文件夹的层级结构,比如< background-color: rgb(242, 242, 242);">Photo/Family/2020-01-25-new-year/altogether.jpg。 < ">每一个对象其实还包含一些元信息(Meta-data),包括系统指定的文件类型,创建时间,加密算法等,和用户上传时指定的元信息。元信息在对象创建后都无法更改。 < ">我们也可以为对象指定最多10个标签(Tag),标签的键和值的最大长度是128和256个字符。这个标签和元信息有什么不同呢?标签是可以修改和新增的。它最大的好处,是可以结合权限控制,生命周期管理,和数据分析等使用。 < ">单个文件上传最大是5GB。超过的话,需要使用multipart upload API。最大支持5TB。 < ">一致性特性 < ">对程序员来说,这么一个类似数据库的东西,肯定需要关心它的读写特性和一致性模型。 < ">没有锁的功能。如果同时(几乎)发起两个更新对象的PUT请求,键相同,那么,以到达S3时间先后处理更新。 < ">不同对象的更新,没法做到原子操作。 < ">对全新的对象来说,它是Read-after-Write Consistency的。也就是写了之后马上读,肯定就是你刚才上传的数据。 < ">如果你要更新数据,那就变成Eventual Consistency了。也就是说,更新后马上读,可能是旧的数据,也可能是新的。 < ">这里有一个比较坑的地方是,如果你先调用GET请求访问一个不存在的资源,S3告诉你它不存在。然后你马上上传数据,再调用一个GET,这时候是有可能拿不回来的。 < ">< font-size: 18px;">存储级别 < ">作为一个“云盘”,S3的好处是可以把你存储的数据,按不同的存储级别来计费。这个存储级别是每个对象不同,上传时指定的。 < ">我们看看不同的场景,应该选择哪种级别的存储: < ">经常访问的数据对象 < ">1.STANDARD-这是最普通,最常用的类型 < ">2.REDUCED_REDUNDANCY(RRS)-不建议使用。仅为不重要,可再建数据设计,还有每年平均0.01%数据丢失的可能性。 < ">按访问频率自动优化的数据 < ">1.INTELLIGENT_TIERING-可以智能地把不热门的数据自动转级别。但是,每个文件最低收费标准是128KB,存30天。 < ">不经常访问的数据 < ">1.STANDARD_IA < ">2.ONEZONE_IA < ">AWS一个Region,有两到三个Zone。这两种级别的区别就是,One Zone的数据就单点保存,丢了就丢了。 < ">归档的数据 < ">1.S3 Glacier-最低保存90天。取出时间1分钟至12小时。 < ">2.S3 Glacier Deep Archive-最低保存180天。默认12小时内取出。 < ">S3计费的大头主要是存储容量。但是,S3还会按照数据获取的次数,和传输容量来计费。越不常访问的级别,虽然存储便宜,但是访问贵。INTELLIGENT_TIERING还会收监测和管理费用。 < ">生命周期的管理 < ">除了手动指定,或者使用INTELLIGENT_TIERING外,S3其实还可以让我们在bucket上定义生命周期管理的策略(Policy),来自动转换对象的存储级别。 < ">生命周期的管理可以做到:1.转换存储级别;2.过期删除 < ">< font-size: 18px;">数据安全 < ">数据安全,是数据存储服务非常重要的一部分。S3提供了很多方面的功能来保障这一点。 < ">多版本 < ">不小心把数据删除了的痛,程序员应该都懂。但是,后悔药是没有的。所以,我们很多时候并不会做永久删除,而是实现软删除的功能。S3就提供了多版本的功能。只要bucket打开了多版本的选项,每次对象的更新都会新加一个版本,而不是覆盖。删除对象,也只是新增一个删除标识。 < ">当然,你要强行删除特定版本的数据也是可以的,它只是让这件事变得难一些而已。它甚至可以把bucket设置成只有通过MFA认证的请求才能实现永久删除。 < ">要注意的是:1.打开版本控制的bucket,是没法关闭的,顶多可以暂停。也就是说,暂停后的bucket,新加对象的时候,版本id会设为null。2.无论打开,或者暂停版本控制,对bucket内已经存在的对象是没有影响的。 < ">锁定 < ">除了使用多版本控制让覆盖或者删除变得更难,S3还可以锁定特定版本的对象。这种模型被称为write-once-read-many(WORM)。 < ">有两种锁定的方式:设定保留期限-在某固定期限内,对象WORM。法定留存-仅当这个留存标识被删除后,对象才能被覆盖或删除。 < ">一个特定版本的对象,可以同时设置这两种保护,或任意一种。 < ">因为锁定是针对特定版本的对象,如果你的更改或删除操作请求只根据对象的键,那它还是允许你新增一个版本,或加上删除标识。只是这个锁定,还能防止对象因为生命周期的设置而被删除掉。 < ">服务端加密 < ">数据传输过程(in-transit)中的保护,现在基本都由SSL/TLS来实现的。AWS也提供VPN或者网络直连服务。 < ">S3提供了服务端数据加密的功能,可实现数据的存储(at rest)方面的安全。不过它只支持对称加密,不支持非对称加密。虽然你可以本地把数据加密了再上传到S3,但是,这需要自己保护好密钥,其实更不容易。 < ">服务端加密开启后,bucket内颉摩广告已经存在的对象不会被自动加密。而且,只有数据被加密,元信息(meta data),标签(Tag)不会被加密。 < ">S3的服务端加密有三种方式: < ">1.SSE-S3-S3自管理的密钥,使用AES-256加密算法。每个对象的密钥不同,并且它还被定期更换的主密钥同时加密。 < ">2.SSE-KMS-密钥存放在KMS(软硬件结合的密钥管理系统)。 < ">3.SSE-C-在请求时自己提供密钥,S3只管加解密逻辑和存储。S3不保存密钥,只保存随机加盐的HMAC值来验证今后请求的合法性。 < ">这里主要说一下S3使用SSE-KMS特点: < ">启用前,如果没有指定客户管理的CMK(customer master key),S3会自动创建一个由AWS管理的CMK < ">加密数据的密钥,同时也被加密,并和数据保存在一起 < ">有请求频率限制 < ">只支持对称密钥 < ">CMK必须和bucket在同一个区(Region) < ">< font-size: 18px;">IAM集成 < ">S3当然能根据IAM的设置来控制权限。S3的资源,除了bucket和object外,还包含了一些子资源。 < ">Bucket子资源:lifecycle website versioning policy cors logging < ">Object子资源:acl restore < ">在了解S3如何控制权限以前,我们要理解资源的拥有者这个概念。在S3里面,资源是谁创建的,它所属的AWS帐号,就是这个资源的拥有者。有一种情况是,Bucket是帐号A创建的。但是A允许B在里面创建对象X。这个X的拥有者是B而不是A。如果资源拥有者授权A,A可以把自己的权限委托给自己帐号内的其它人,但不可以再一次跨帐号授权。 < ">S3如何验证请求 < ">当S3收到请求时,会经过下面几个步骤验证请求: < ">1.把所有相关的策略(user policy,bucket policy,ACL)集合起来。 < ">2.根据下面3小步,拿出全集中的合适子集来分别验证: < ">3.用户范畴如果请求发起者是IAM User或Role,它所属的aws帐号就会先检查它是否有权限做这种类型的操作(user policy)。假如刚好要操作的资源(bucket或object)属于当前帐号,那么就同时检查相应的bucket policy,bucket ACL和object ACL。 < ">如果请求发起者不属于IAM,则跳至下一步。 < ">4.Bucket范畴S3会检查拥有bucket的aws帐号的策略。 < ">5.如果操作的是bucket,那请求的用户需要有bucket owner赋予的权限。如果操作的是对象,需要检查bucket owner是否有显式deny对象的设置。 < ">Object范畴当请求是关于对象的时,最后检查对象owner的策略子集。 < ">天啊,这看上去好复杂。其实,和一个小孩想玩玩具一样: < ">首先,小孩必须获得父母的请求,可以玩玩具。然后,看这个玩具拥有者是谁,如果是自己父母,就看这个玩具是否能给孩子玩(比如可能年龄还不合适,超时等)。如果这个玩具是其它人的,那就要还获得其它人的允许。 < ">不同策略的场景 < ">对于S3验证请求的时候,需要验证的那几种不同的策略,究竟各自的使用场景是什么呢? < ">Object ACL < ">1.唯一一种管理保存在他人bucket里的对象权限的方式 < ">2.定义在单个对象级别 < ">3.最多包含100个授权信息 < ">Bucket ACL < ">1.唯一推荐使用的场景是为S3 Log Delivery赋予写访问日志的权限 < ">2.虽然可以配置跨帐号权限,但仅仅支持有限的设置 < ">Bucket Policy < ">1.能给自己帐号内的用户赋权 < ">2.支持所有S3操作的跨帐号权限设置 < ">3.Policy自身大小不超过20KB < ">User Policy < ">1.能给自己帐号内的用户赋权 < ">< font-size: 18px;">副本备份 < ">S3不仅通过多点存储提高健壮性,还提供了自动的异步数据备份的功能。不仅支持同Region,不同bucket的备份,还支持跨Region,不同帐号的备份。要开启副本备份,首先必须在源和目标bucket同时打开多版本的设置。 < ">为什么要使用? < ">备份同时保留元数据 < ">备份至不同存储级别 < ">更改备份数据的拥有权 < ">15分钟内自动备份 < ">什么时候跨区备份(CRR) < ">满足监管需求 < ">减少数据传输延时(地域原因) < ">提高数据操作的效率 < ">什么时候同区备份(SRR) < ">合并日志 < ">生产和测试用户间数据同步 < ">满足数据主权法规 < ">什么会同步? < ">备份配置生效后新建的对象 < ">没加密的对象 < ">通过SSE-S3或者SSE-KMS CMK(必须显式启用)加密的对象 < ">对象元数据 < ">bucket拥有者有权读取的对象 < ">对象ACL除非备份同属一个aws帐号 < ">对象标签 < ">对象的锁信息 < ">什么不同步? < ">备份配置生效前新建的对象 < ">使用SSE-C加密的对象 < ">保存在Glacier或Glacier Deep Archive的对象 < ">bucket级别子资源的更新 < ">由于生命周期配置导致的操作 < ">源bucket中本来就是副本的对象 < ">删除标识 < ">源bucket中被删除的特定版本的对象 < ">< font-size: 18px;">知识小点与周边 < ">路由请求 < ">S3使用的是DNS来接收转发请求。如果请求对象的S3地址不对,会返回一个临时的重定向。但是对那些2019年3月20日后启用的Region,地址错误返回的则是HTTP 400状态。 < ">S3 DNS会按需更新IP地址。所以,对那些长期运行的客户端,可能需要采取特殊手段来更新IP信息。 < ">静态资源网站 < ">S3的bucket可以直接配置为静态资源网站。但是需要结合CloudFront才能支持HTTPS访问。请求者付费的bucket,不允许设置为静态网站。 < ">CloudFront数据的分发支持两种类型: < ">Web Distribution < ">RTMP < ">Storage Gateway < ">当你本地服务器想要访问AWS S3的时候,除了API,AWS还提供了几种网关可供使用: < ">File Gateway-像访问文件或者共享文件那样访问S3资源 < ">Volume Gateway-通过iSCSI设备的方式连接。细分为两种: < ">Stored Volumes-所有数据都保存在本地,但是能异步备份到S3 < ">Cached Volumes-所有的数据都保存到S3,本地只存放经常访问的数据 < ">Tape Gateway-模拟磁带访问的网关,数据异步备份到S3 Glacier或Glacier Deep Archive < ">Athena和Macie < ">Athena是交互式的查询服务,无须部署。可使用SQL来查询S3数据。支持的数据格式包括:CSV,JSON,Apache Parquet。 < ">Macie是一种可通过NLP和ML来协助你发现,分类和保护敏感数据的服务。它可以扫描S3中的数据,看是否包含PII(Personally Identifiable Information)或者涉及版权的数据。 |
上一篇:华为应用市场付费推广业务介绍
下一篇:云计算工程师带你玩转亚马逊云服务系列——总
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“一文读懂AWS S3”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通一文读懂AWS S3的相关事宜。
关键词:一文读懂AWS S3,AWS,亚马逊云