我需要亚马逊的 EC2、Cloudfront、RDS 吗?

Posted

技术标签:

【中文标题】我需要亚马逊的 EC2、Cloudfront、RDS 吗?【英文标题】:Do I need Amazon's EC2, Cloudfront, RDS? 【发布时间】:2011-01-29 21:01:39 【问题描述】:

我想在亚马逊的服务器上发布一个网站:

    运行 Cakephp 使用 mysql 存储数据 允许用户通过 Flash 上传音频(当前使用托管的 Flash 媒体服务器),然后收听文件

我是否需要 Amazon 的 EC2 用于网站、RDS 用于 MySQL 数据库以及 CloudFront 用于 FMS?我真的很想知道我应该使用哪些服务。

谢谢。

【问题讨论】:

【参考方案1】:

您需要 EC2 来启动实例并创建您的 LAMP 服务器。如果您不需要自己管理 MySql 数据库,RDS 很好,但是 RDS 的一个限制因素是您不能进行数据库复制。

对于持久存储,您可以使用 EBS 或 S3 存储数据文件。

【讨论】:

EBS/S3 是否支持闪存媒体服务器/文件?我不太明白。【参考方案2】:

首先,您需要 EC2 服务才能拥有一个虚拟机,您可以在其中安装 Apache、PHP 和您的 Web 应用程序。

那么您还需要一个数据库服务器和媒体文件的数据存储库。推荐的方式正是您所建议的:RDS for MySQL 和 CloudFront 作为文件存储库。

最初,上述服务(RDS、CloudFront 甚至 EBS)均不可用。开发人员无法使用 MySQL 数据库,因为即使它安装在 EC2 实例中,也不能保证实例保持正常运行,如果实例丢失,数据也会丢失。为此,引入了 EBS。它创建了一个具有保证持久性的挂载存储,您可以从 EC2 实例访问该存储。理论上你可以在那里安装 MySQL 并用它来存储 flash 文件。如果只想通过 HTTP 协议提供文件,使用 EBS 没有问题。

但是,CloudFront 有一些优势:

用户会被自动路由到最近的边缘位置,以便高性能地交付您的内容。 您还可以使用它通过 RTMP 协议流式传输内容。 您不必担心存储空间的大小。使用 EBS,您可以创建具有特定大小的存储。如果您后来发现需要更多存储空间,这可能会成为问题。使用 CloudFront,文件安装在 S3 中,您无需担心它们的大小。 您不会浪费 Web 服务器容量。如果您使用 EBS,文件将由 EC2 中的服务器提供。

您也可以使用 S3,但不能使用 RTMP 协议,您需要手动创建文件链接。此外,这些文件不能使用您的域名。

RDS 也比在 EC2、EBS 中安装 MySQL 有一些优势:

自动数据库备份 您可以使用 Amazon CloudWatch 监控您的数据库(免费服务)

【讨论】:

您可以在 S3 上对域进行 CNAME,就像使用 CloudFront 一样。【参考方案3】:

这些回复中没有提到的一件事是可能(或可能不需要)绕过您的文件访问的安全性。云网络适用于可公开访问的数据,但我还没有看到云网络可以为每个用户提供粒度级别的文件访问。虽然您可以对访问文件的 url 进行模糊处理,这样就不容易依次猜测音频文件 ID,但如果人们保留私人音频,这可能还不够。不是说不做,只是谨慎做决定。

【讨论】:

Cloudfront 和 S3 都支持“私有”资产,这意味着只能使用带时间戳和签名的 url 访问文件。文件名本身甚至不必是随机的。

以上是关于我需要亚马逊的 EC2、Cloudfront、RDS 吗?的主要内容,如果未能解决你的问题,请参考以下文章

EC2 上用于 Wordpress 的 Cloudfront

AWS 将 EC2 替换为 CloudFront

CLOUDFRONT EC2 源错误 CloudFront 试图建立与源的连接 [重复]

如何使用 EC2 网站设置 Cloudfront

使用Cloudfront而不是单个EC2实例的AWS ELB设置有什么意义?

Cloudfront 和 EC2