Amazon S3简介
Amazon Simple Storage Service (S3) 是互联网存储解决方案,它提供了一个简单的Web接口,让其存储的数据和文件在互联网的任何地方给任何人访问。
Amazon S3的服务给开发人员提供了高扩展性、可靠性、安全性和快速廉价的数据存储基础架构,Amazon.com网站上的内容也运行在S3上。
事实上S3是AWS最早推出的服务,可以追溯到2006年,比EC2等服务出现得还早。
S3基本特性
- S3是对象存储,可以在S3上存储各种类型的文件,它不是块存储(EBS是块存储)
- 文件大小可以从0 字节到5 TB
- 使用Single Operation上传只能上传最大5 GB的文件
- 使用分段上传(Multipart Upload)可以对文件进行分段上传,最大支持上传5 TB的文件
- S3的总存储空间是无限大的
- 文件存储在存储桶(Bucket)内,可以理解存储桶就是一个文件夹
- S3的名字是需要全球唯一的,不能与任何区域的任何人拥有的S3重名
- 存储桶创建之后会生成一个URL,命名类似于 https://iteablue.s3.ap-northeast-1.amazonaws.com/abc/puppy.jpg
- S3是以HTTPS的形式展现的,而非HTTP
- ap-northeast-1表示了当前桶所在的区域
- iteablue表示了S3存储桶的名字,全球唯一
- abc表示了桶内的路径(前缀)
- puppy.jpg 表示了文件名字
- S3拥有99.99%(4个9)的可用性(Availability)
- 可用性可以理解为系统的uptime时间,即在一个自然年内(365天)有52.56分钟系统不可用
- S3拥有99.999999999%(11个9)的持久性(Durability)
- 持久性可以认为是数据完整性/数据安全性,即在一千亿个存储在S3上的文件会有大概 1 个文件是不可读的
- S3的存储桶创建的时候可以选择所在区域(Region),但不能选择可用区(AZ),AWS会负责S3的高可用、容灾问题
- S3创建的时候可以选择某个AWS区域,一旦选择了就不能更改
- 如果要在其他区域使用该S3的内容,可以使用跨区域复制
- S3拥有不同的类型(Standard, Stantard-IA, Intelligent Tiering, Onezone-IA, RRS, Glacier等)
- 启用了版本控制(Version Control)你可以恢复S3内的文件到之前的版本
- S3可以开启生命周期管理,对文件在不同的生命周期进行不同的操作
- 比如,文件在创建30天后迁移到便宜的S3等级(S3-IA),再经过30天进行归档(迁移到Glacier),再过30天就进行删除
- S3支持加密功能(后面的课程会详细讲解这一部分内容)
- 使用访问控制列表(Access Control Lists)和桶策略(Bucket Policy)可以控制S3的访问安全
- 在S3上成功上传了文件,你将会得到一个HTTP 200的状态反馈
数据一致性模型
- S3 目前针对所有操作都是强一致性
- 即所有写入,更新,删除的信息会马上得到更新。比如写完一个文件马上去读,一定会读到最新的结果。
Key-Value store
S3是基于对象的,每一个对象包括了这些参数
- 键(Key):可以认为是数据的名字
- 值(Value):表示数据本身
- 版本号(Version ID):对于启用了版本控制的存储桶来说很重要
- 元数据(Metadata):关于数据的描述,比如说数据的创建时间,更改时间,文件类型,文件大小等信息
- 访问控制信息:能管理对Bucket内文件的访问权限
S3的收费标准
-
存储费用
- 按每GB的存储收费,存储内容越多,综合单价越便宜
-
请求
- S3的PUT, COPY, POST或LIST等请求也需要按请求数收费
- DELETE请求不收费
-
存储管理费用
- 包括了S3清单,S3分析和S3对象标记功能的费用
-
数据传输费用
- 包括S3通过互联网传入和传出的费用,在同一个区域,S3存储桶之间或从S3传输到其他AWS服务均不收费
-
传输加速费用
- Transfer Acceleration 定价要加到数据传输定价上
通常,存储桶拥有者将支付与他们的存储桶相关联的所有 Amazon S3 存储和数据转移费用。但是,存储桶拥有者可以将存储桶配置为申请方付款存储桶(requestor pay bucket)。使用申请方付款存储桶时,申请方 (而不是存储桶拥有者) 将支付请求和从存储桶下载数据的费用。存储桶拥有者将始终支付存储数据的费用。