实验概览
在本实验中,您将了解如何使用用于存储的 Amazon Simple Storage Service (Amazon S3)、用作数据库的 Amazon DynamoDB 以及用于托管 Web 应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 来部署照片分享网站。
本实验期间,您将创建此系统的核心架构,提供浏览和上传内容等基本功能。在本实验中,媒体内容将仅限于图片,但本实验中介绍的概念也适用于其他类型的媒体,例如文档(PDF、RTF、演示文稿等)、音乐、视频,等等。此系统还将提供 Web 接口,供用户浏览和存储图片。
目标
在本实验结束时,您将能够:
- 创建新的 Amazon S3 存储桶来存储媒体文件
- 创建 DynamoDB 表来存储媒体文件元数据
- 启动新的 EC2 实例来运行 Web 服务器
- 测试部署
实验先决条件
要成功完成本实验,您应熟悉 AWS 管理控制台的基本导航操作,并且能够熟练使用文本编辑器编辑脚本。
时长
完成本实验大约需要 60 分钟。
图标说明
本实验中使用了不同图标,以提醒大家注意各种类型的说明和备注。下面的列表解释了每个图标的用途:
- 注意:一项提示、技巧或重要指导
解决方案概览
媒体存储
图片可以存储到 Amazon Elastic Block Store 卷中,但您需要提前预置容量,并管理通过添加卷来扩展此存储层的操作。此外,您还需要将这些卷附加到 EC2 实例中,以通过 HTTP 提供内容。如果未能复制数据并通过另一个实例提供数据,则会导致系统中出现单点故障。
一种更好的方法是使用 Amazon S3 作为媒体文件的存储库。Amazon S3 可为数据提供高持久性,并能通过 HTTP 提供内容。可存储在 Amazon S3 存储桶中的对象数量不受限制,且无论您是使用许多存储桶,还是仅使用少量存储桶,性能方面都不会发生变化。您可以在单个存储桶中存储所有对象,也可以在多个存储桶中组织这些对象。
在本实验中,您将构建以下解决方案:
当用户上传图片时,Web 服务器将接收此图片并创建缩略图。系统随后会将图片及缩略图上传到 S3 存储桶,并将图片元数据插入 DynamoDB 表。
虽然 Amazon S3 和 DynamoDB 都是具有容错能力的可扩展系统,但您在单个 EC2 实例上运行的 Web 服务器无疑会存在单点故障(如果 Web 应用程序发生故障,系统将无法访问和恢复)和瓶颈(带有重要的传入请求负载,甚至系统可能变得不可用)。
下面简要介绍了实验场景中使用的每项服务。
注意:如果您熟悉这些 AWS 服务,可以跳过服务简介部分,直接进入开始实验部分。
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) 是一项 Web 服务,可在云中提供大小可调的计算容量。该服务旨在让开发人员能更轻松地进行 Web 级的计算。 Amazon EC2 的 Web 服务接口非常简单,让您可以轻松获取和配置容量。使用该服务,您可以完全控制您的计算资源,并可以在成熟的 Amazon 计算环境中运行。Amazon EC2 将获取并启动新服务器实例所需要的时间缩短至几分钟,这样一来,在您的计算要求发生变化时,您便可以快速扩展或缩减计算容量。Amazon EC2 按您实际使用的容量收费,改变了计算的经济性。
借助 Amazon EC2,您可以在几分钟(而不是几小时或几天)内增加或减少容量。您可以同时管理一个、数百个,甚至数千个服务器实例。当然,因为这全是通过 Web 服务 API 控制,所以您的应用程序可根据其自身需求自动扩展。
您可以完全控制自己的实例。您拥有每个实例的根用户访问权限,可以像与其他任何机器一样与这些实例交互。您可以在停止运行实例的同时将数据保留在启动分区,然后使用 Web 服务 API 重新启动该实例。使用 Web 服务 API 还可以远程重启实例。您还拥有实例控制台输出的访问权限。
有多种实例类型、操作系统和软件包供您选择。借助 Amazon EC2,您可以为您选择的操作系统和应用程序选取理想的内存、CPU、实例存储和启动分区大小配置。例如,您选择的操作系统可以包含多个 Linux 发行版以及 Microsoft Windows Server。
有关 Amazon EC2 的更多信息,请参阅:https://aws.amazon.com/ec2/
DynamoDB
DynamoDB 是一项快速的完全托管式 NoSQL 数据库服务,它能让您简单且经济高效地存储和检索任意数量的数据,同时服务于任何规模的请求流量。其有保证的吞吐量和几毫秒的延迟使其非常适合于游戏、广告技术、移动以及很多其他应用领域。
DynamoDB 通过 API 和易于使用的管理控制台提供无缝的吞吐量和存储扩缩能力,因此您能够根据自身需求轻松地扩展或缩减容量。我们的许多客户只是单击了一下按钮,便在几分钟内完成了 DynamoDB 的部署,然后便可以应对每年数万亿次的数据库请求。
DynamoDB 表没有固定的模式,每一个项目可以拥有不同数量的属性。多种数据类型增加了数据模型的丰富性。二级索引可让您更灵活地执行查询而不会影响性能。
该服务内置了性能、可靠性和安全功能,同时提供 SSD 存储和 3 向自动复制。Amazon DynamoDB 采用经过验证的加密方法,能安全地验证用户身份,以防未经授权的数据访问。
有关 Amazon DynamoDB 的更多信息,请参阅:https://aws.amazon.com/dynamodb/
Amazon S3
Amazon S3 是一项面向互联网的存储服务。该服务旨在让开发人员能更轻松地进行 Web 级的计算。
Amazon S3 提供一个简单的 Web 服务接口,用户可通过它随时在 Web 上的任何位置存储和检索任意数量的数据。该服务让所有开发人员都能够访问 Amazon 运行其全球性网站网络所使用的基础设施,该基础设施高度可扩展、可靠、安全、速度快而且花费低。该服务旨在最大程度地利用规模带来的优势,并将这种优势传递给开发人员。
Amazon S3 的基本理念是善加利用基于互联网的优质存储。它让开发人员不必再担心如何存储数据、数据是否安全或者是否有足够的存储空间可用。他们不再需要支付前期费用来构建自己的存储解决方案,也不需要支付维护和扩展存储服务器的后续成本。Amazon S3 功能简单而强大:以实惠的价格安全地存储任意数量的数据,同时确保数据在您需要时始终可用。借助 Amazon S3,开发人员能够专注于利用数据来进行创新,而不是研究如何存储数据。
有关 Amazon S3 的更多信息,请参阅:http://aws.amazon.com/s3/