一篇文章浏览AWS云服务产品

1,168 阅读9分钟

一篇文章浏览AWS云服务产品(原文

AWS云服务的产品有很多(如图一所示),每一种产品都有特殊用途,一般情况下我们需要将不同类型的产品组合在一起(如图二所示)才能够构建一个可扩展,高性能,可容错的系统,因此这一章的内容将介绍AWS经常被使用的服务。

【图一】

【图二】

在分析每一种服务之前,需要说明一点的是AWS的服务分布在全球多个位置。这些位置由地区和可用区域构成。每个区域 都是一个单独的地理区域(Region)。每个区域均有多个相互隔离的位置,称为可用区(Available Zone)。有的服务在某些区域是不提供的,而且区域与区域之间是完全隔离的,因此区域之间传输数据是需要收费的。AWS目前所提供的区域如下图所示:

比如美国东部有2个区,它们分别是:US East(N. Virginia)和US East(Ohio)。每一个区都有对应的区域代码,比如US East(N. Virginia)的区域代码是:us-east-1,可用区由区域代码后跟一个字母标识符表示;例如,us-east-1a,其含义是指区域US East(N. Virginia)中的可用区是a。当你选中某个区并创建云服务的时候,需要为该服务选择一个可用区。

EC2

EC2(Elastic Compute Cloud)是AWS非常基础的一款服务,其主要功能是提供计算服务,比如你可以通过亚马逊控制台自己创建一个EC2资源,你可以把这个计算资源看成一台虚拟机,它能够计算,能够读写存储,能够通信。你可以同时创建多个EC2资源,这些EC2可能运行在一台物理机器上也可能分布在多台物理机器上。

通过以上描述,你可以把计算资源想象成有多台物理设备放在一起形成了一个整体,这个整体拥有了强大的运算能力,而这些运算能力可以通过成千上万个EC2资源进行分解,并独立地提供给想要使用的企业或个人。当企业或个人不需要这些计算资源的时候就可以将其释放给其它企业或个人使用。

EC2是一台虚拟机,它能够运行Python写的程序,能够运行数据库,能够运行网页应用比如digolds.cn就是运行在AWS的EC2上的。在现实的项目中,EC2一般是用来运行程序的,因此你可以使用C++、C、JavaScript、Java、Python、Ruby等等语言来编写程序,然后在EC2上准备程序依赖的运行环境,此时EC2就可以运行这个程序。

S3、EBS、EFS

直到今天,几乎所有的线上服务都需要存储数据,这些数据包括用户信息、图片、歌曲、视频等等。为了能够有效地存储和读写数据,那么需要编写一些程序专门用于解决存储问题,幸运的是AWS提供了S3(对象存储)、EBS(块存储)和EFS(文件存储)存储服务,专门用来存储数据的。每种服务都有不同的用途、计费方式以及存储方案。接下来我们将了解一下每一种存储服务的特点和用途。

Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,这个服务的特性是具有可扩展性、数据可用性、安全性和高性能。通过S3,我们可以把文件以对象的形式存进去并得到一个唯一标识这个文件的Key,通过这个Key便可以从S3中获得该文件的内容。这个对象除了文件内容本身,还包括描述该文件的元数据(比如该文件的大小)。比如我们向S3中存储了大小为23KB的文件,那么S3中将有一个对象包含了23K以及该文件内容。

S3经常被用来放一些静态资源文件比如CSS、Javascript、图片,视频等等,比如大家经常看到B站上的视频,其实是可以放在S3上存储的,又由于S3易于扩展,所以可以不停地往S3中存储静态资源。互联网上的用户可以直接访问到S3上存储的数据,这是它的一大特点。

Amazon Elastic Block Store(Amazon EBS)是块存储服务,这种块存储服务一般会挂接到EC2实例上使用。它具有持久化和快速读写的存储能力,其存储的单元是基于块的,如上图中间的(Block Storage)。它无法直接被互联网访问,其常常被用于存储经常要用到的文件,比如系统的驱动程序。

Amazon Elastic File System(Amazon EFS)是文件存储服务,这种存储服务可以同时被多个EC2实例使用,而且随着存储文件的数量和大小变化而变化。也就是说当数据量变多(变少)的时候,它会自动增加(缩减)存储空间,以便容纳更多(更少)的数据。EFS非常适合内容管理系统(CMS),比如WordPress就是一种流行的CMS,这些内容可以存储在EBS上,然后由多个EC2实例读取,当管理员只需要更新或添加新的内容到EFS上,那么所有的EC2实例将会得到内容完全一致的信息。这种一致性的能力在EBS上是做不到的,因为每一个EBS只能挂接到唯一的一个EC2实例上,而EFS能够同时挂接到多个不同的EC2实例上。

CloudFront

Amazon CloudFront 是一个基于云的内容交付网络(CDN),提供并与亚马逊 Amazon Web Services 套件集成。由亚马逊网络服务系统提供基础服务的一个内容分发网络。其在欧洲、亚洲、北美、澳洲、南美、美国多个主要大城市多地拥有自己的数据中心,共 107 个网络边际服务点提供服务。

Amazon CloudFront 内容交付网络允许通过在主要商业中心运营的区域中心全球分发数字内容。它减少了通过其分布式内容传递通道访问静态和流数据的延迟,这确保了数据从最近的 CDN 服务器传递给收件人。Amazon CloudFront 是一种即用即付模式,可以轻松地与所有 Amazon Web Services 集成。

Amazon CloudFront 专为需要向亚马逊许多不同区域用户快速传送内容的 Web 发布公司和应用程序而设计。Amazon CloudFront 通过在其不同的 CDN 位置缓存每个对象的实例来运行,从而减少了传递内容所需的时间。

Amazon CloudFront 通过支持的应用程序编程接口访问 Amazon S3 中的数据,并将其置于区域数据存储区中。其他亚马逊网络服务,包括亚马逊 EC2,也可以通过 EC2 处理流数据并通过 CloudFront 将其传递给最终用户。与所有其他亚马逊网络服务产品一样,CloudFront 具有可扩展性,灵活性,可作为即用即付服务提供。

Route 53

"Route 53",中文可以翻译为53号公路,跟美国历史上有名的"66号公路(如下图)"(Route 66)遥相呼应。利用Route 53服务,AWS的用户就可以让终端用户访问众多的互联网服务了。所以"Route 53"就像一条虚拟的公路一样,把终端用户带领到目的地。Route 53的服务器分布在全世界各地,也是亚马逊唯一保证100%可用性的服务。DNS协议是基于TCP/UDP协议的,DNS服务监听的端口是53。所以名字里带53,暗含了DNS服务监听的端口。

就像66号公路横穿美国一样,Route 53的作用在于它能够快速地将终端用户带到其想要访问的互联网服务,缩短了终端用户与互联网服务的延迟。

VPC和NAT

VPC是AWS提供的一种虚拟网络服务,其它AWS资源都可以放在这个虚拟网络里构成一个逻辑单元,这个逻辑单元作为一个完整的服务提供给外部世界使用。当你使用VPC服务的时候,就需要使用其提供的gateways, route tables, network access control lists (ACL), subnets and security groups等功能,通过这些功能来配置虚拟网络。

这里有几点需要注意:

  • VPC可以包含多个不同可用区的资源
  • VPC中的子网(subnet)只能属于某一个可用区
  • VPC之间不具有传递性,也就是说你不要指望通过VPC 1来访问VPC 2,如果要访问VPC 2,那么只能直接访问VPC 2

**为什么使用VPC?**当你基于公有云上运行一些线上服务的时候,世界上任何一个人都能够访问这些服务,从而导致这些服务易于受到攻击,这是非常危险的。因此为了让这些资源避免外部的攻击,你需要VPC来切断这些资源与外部的连接,并通过VPC来限制外部连接的类型,IP地址以及哪些人能够访问。

这样一来,你就能通过VPC来阻止不速之客的访问,也可以避免了DDOS攻击。由于支撑线上服务的大部分云服务是不需要与外部连接,因此你可以把这部分资源安全地放在VPC里与外部隔绝,而只需要把那些需要与外部互联的资源暴露出去。

虽然你可以决定VPC中的哪些资源是暴露给外部的,哪些资源是与外部隔离的,但是如果你想让被隔离的资源能够访问外部(比如你想升级程序,下载补丁之类)就需要其它方法(NAT Gateways)。

NAT Gateways被用来解决“VPC私有资源如何与外部连接,而外部无法与该私有资源互联的单向连接问题”。NAT Gateways是被创建到VPC的一个子网中,这个子网是公开的,但是只能从内部向外部访问,因此一旦你允许私有资源访问NAT Gateways,此时该资源就能够访问外网,由于NAT Gateways不支持外网向内外访问,因此外部网络是无法访问该私有资源的。

使用NAT Gateways需要知道的细节:

  • 具有自动伸缩的带宽,最高可达10Gbps
  • 具有公网IP