目录
亚马逊S3,全称亚马逊简易存储服务(Amazon Simple Storage Service),是一个由亚马逊网络服务(Amazon Web Services,简称AWS)提供的服务,它通过一个Web Service接口来提供对象存储。亚马逊S3使用与amazon.com用来运行期全球电子商务网络的基础设施完全相同的一套可扩展的存储基础设施。亚马逊S3可以被用来存储任何类型的对象,这些对象可以被用于类似互联网应用的存储、备份和恢复、灾备、数据归档、用于分析的数据湖,以及混合云存储。AWS与2006年3月14日在美国启用了亚马逊S3,随后在2007年11月在欧洲启用。
尽管亚马逊网络服务(AWS)并未公开提供S3的技术设计的细节,但我们可以知道的是,亚马逊S3使用对象存储架构,它提供可扩展性、高可靠性、低延时性,以及99.9x9的耐用性,以及99.95%~99.99%的可用性(尽管对于耐用性方面并没有相关的SLA)
亚马逊S3的基本存储单位是对象(object),它们被按照“桶”(buckets)来组织。每个对象都由一个唯一的、用户分配的键来标识。“桶”可以由通过下面的方式管理:
对象可以通过下面的方式管理:
对象的大小可以高达5 TB,其元数据大小也可以高达2 KB。
此外,对象可以使用HTTP GET接口来下载,也可以使用BT(比特激流)协议下载。
对亚马逊S3的请求是通过与每个对象通所关联的“访问控制列表”(ACL)来鉴权的,默认情况下是禁用“版本支持”的。说明:因为桶的大小通常相当于挂载在其他系统中的整个文件系统的大小,,因此这种访问控制方式是非常“大颗粒”(coarse-grained)的,也就是说,你无法针对单个文件进行唯一的访问控制。桶的名称和“键”被选择后,它就可以通过HTTP URL来访问了。例如:
http://s3.amazonaws.com/bucket/key (用于在美国东部(北弗吉尼亚)区域创建的桶)
https://s3.amazonaws.com/bucket/key
http://s3-region.amazonaws.com/bucket/key
https://s3-region.amazonaws.com/bucket/key
http://s3.region.amazonaws.com/bucket/key
https://s3.region.amazonaws.com/bucket/key
http://s3.dualstack.region.amazonaws.com/bucket/key (用于使用IPv4或IPv6的请求)
https://s3.dualstack.region.amazonaws.com/bucket/key
http://bucket.s3.amazonaws.com/key
http://bucket.s3-region.amazonaws.com/key
http://bucket.s3.region.amazonaws.com/key
http://bucket.s3.dualstack.region.amazonaws.com/key (用于使用IPv4或IPv6的请求)
http://bucket.s3-website-region.amazonaws.com/key (如果该桶上启用了静态网站主机托管)
http://bucket.s3-website.region.amazonaws.com/key (如果该桶上启用了静态网站主机托管)
http://bucket.s3-accelerated.amazonaws.com/key (在亚马逊的网络中,文件传输只会在最后可能的时机出现,从而提供尽可能快的传输速度和最低的时延)
http://bucket.s3-accelerated.dualstack.amazonaws.com/key http://bucket/key (桶是一个DNS CNAME记录,它指向bucket.s3.amazonaws.com)
亚马逊S3可以被用于将大量现存的(静态)网络主机托管(web-hosting)基础设施,替换为HTTP客户端所能访问的对象。亚马逊AWS鉴权机制允许桶的所有者创建一个只在特定事件有效的鉴权URL。
桶中的每个条目都同时可以被作为BT种子提供。亚马逊S3存储可以作为一个种子主机,任何BT客户端都可以获取该文件。这可以极大地节约下载热门对象的带宽占用。尽管使用BT确实可以降低带宽占用,AWS并不提供本地带宽限制,因此,用户对于自动代价控制并没有访问权限。这会导致亚马逊S3的免费用户(users on the free-tier),或小型爱好者用户(small hobby users)积累天价账单。AWS发言人曾表示,在2006年到2010年间,一个带宽限制特性曾经被放在设计列表中,但是在2011年,这个功能不再开发。
一个桶可以被配置为,将HTTP日志信息保存到另一个兄弟桶中,这可以被用于数据挖掘操作。
提供各种各样的基于用户模式文件系统(User Mode File System,简称FUSE)文件系统,用于类Unix操作系统(例如Linux),它们可以被用于将一个S3桶挂载为一个文件系统,例如S3QL。亚马逊S3文件系统和POSIX的文件系统的语法是不一致的,因此该文件系统的行为可能与预期的完全不同。
亚马逊S3提供托管静态HTML网站的选项,它提供索引文档支持和错误文档支持。托管在S3上的网站可以指定一个默认页面来显示,以及当遇到部分无效的URL的事件时需要显示的页面,例如404错误,这为使用了包含CNAME记录的主机名的URL,而不是直接亚马逊S3桶引用的访问者提供了有用的内容,因为有时URL中不含有效的S3对象键,例如,一个随意的用户开始访问了一个非亚马逊主机名的URL。
亚马逊S3允许用户启用或禁用日志。如果启用了日志,那么log会被存储在亚马逊S3桶中,可供日后分析。这些日志会包含一些有用的信息,例如:
可以使用第三方工具来分析和管理日志,例如S3Stat、Cloudlytics、Qloudstat、AWStats,以及Splunk.
亚马逊S3为开发者提供了一个API。AWS控制台提供了用于管理和上传文件的工具,但是它无法管理巨大的桶,或修改文件。其他的工具包括:
亚马逊S3提供4种不同级别的存储,分别提供不同级别的耐久性和可用性,以及性能需求:
默认级别
设计用于不常访问的数据。典型的使用案例是备份和容灾解决方案
设计用于并不常需要的数据,但是当需要是,需要迅速被访问。数据被存储在同一个区域内,而如果那个区域损毁了,那么所有的数据就都丢失了。
设计用于长期数据存储,不常访问,并且分钟级的访问延迟也是可以接受的
亚马逊S3及其相关的工具得到了广泛采纳,因此也使得基于S3 API的竞争服务兴起。这些服务使用标准的编程接口,但是它们的下层技术和支撑的业务模型有所区别。一个云存储标准(就像电气和网络标准)使得竞争的业务提供者可以以不同的方式、使用不同的部分来设计它们的服务和客户端,同时又仍然能相互通信并提供如下的便利: