S3 是否比 EC2 DIY 解决方案便宜(适用于小文件)

S3 是否比 EC2 DIY 解决方案便宜(适用于小文件)

通过 S3 托管图像和脚本真的比运行 nginx/varnish/等的 EC2 实例更便宜吗?

在我看来(但我刚刚开始使用 AWS),如果您不使用精灵或其他优化,请求成本将是主要因素……还是我遗漏了什么?

答案1

您在这里有点想比较苹果和橘子。亚马逊的 EC2(弹性计算云)和 S3(简单存储服务)服务有两个完全不同的用途。S3 用于冗余存储,本身并不是“服务器”。是的,如果您在其他地方托管了 Web 服务器,您可以将 S3 与 Cloudfront 结合使用,作为 CDN 的一种形式,但主要用途是存储。另一方面,EC2 是一个 VPS(虚拟专用服务器),能够运行 nginx、varnish、apache 等守护进程。S3 本身无法为您做到这一点。

如果您为 EC2 创建自己的 AMI(Amazon Machine Image),则需要将其存储在 S3 中,并支付与此相关的存储费用。EC2 实例可以在完全不使用 S3 的情况下运行。但是,如上所述,当实例不再运行时,EC2 实例不会存储关闭后的数据。为了在启动和关闭之间保留数据,您必须将其存储在 S3 上或使用可以为您保存数据的 EBS(Elastic Block Store)。

入站、出站和给定区域内的带宽以及存储容量、I/O 请求等都有不同的定价层级。这很复杂,有几种计算器可以帮助您计算。我已经编写了自己的电子表格,其中包含公式,我导入了使用历史 CSV 下载以帮助估算未来的使用成本。我已经在 EC2 中为客户管理了多个服务器实例超过 9 个月了。我发现最容易计算的成本是实例运行时间,因为它是每个实例的简单小时费率。之后,EBS 卷和 S3 存储容量很容易计算,但 I/O 请求和带宽有时会令人惊讶。

我的 S3 存储成本通常很小(通常 < 2 美元/月),我存储了几个 AMI 和一些应用程序服务器访问的文档,以及实例的初始启动。我的实例使用在 Amazon 之外的 VPS 上维护的 Puppet 服务器,该服务器还用作我的监控和 jumpbox 服务器。平均运行大约 7 个实例,我发现我的 I/O 请求在 500-800 万之间,平均成本 < 1 美元/月。过去 6 个月,我平均有大约 10GB 的 EBS 卷,每月仅花费 1 美元多一点。我将 EBS 卷用于静态内容以及 MySQL 数据库文件和二进制日志。传入的数据传输在 20-24GB 之间,平均每月约 2.25 美元,而传出的数据传输在 241-326GB 之间,平均每月约 42 美元。由于并非所有实例都在同一个可用区中,因此我的实例之间的区域带宽在 130MB-535GB 之间,平均每月约 2.45 美元。尽管如此,正如我所说,按小时计费是最容易计算的,EC2 实例本身每月的费用高达 1700 美元。我们目前正在考虑转向预留实例,而不是按需实例,在扣除获得预留实例的前期成本(6-9K 美元)后,应将费用降至每月 600 美元左右。

答案2

使用 S3,您需要为传输和存储付费。使用 EC2,您还需要为实例运行的时间付费。无论哪种方式,您都需要为传输和存储付费,因此在所有情况下,仅使用 S3 进行文件托管都应该更便宜。EC2 应该总是更贵,因为除了存储和传输之外,您还需要为实例运行的时间付费。亚马逊有一个定价计算器您可以根据自己的使用情况以及预计所需的传输和存储来使用这些数字。

答案3

您需要考虑将 s3 数据拉到 Web 服务器的流量。ec2 按小时付费,但可以获得 160GB 的本地存储,s3 则需要支付存储和带宽费用。

总的来说,我认为对于 Web 服务器来说,ec2 实例要么更便宜,要么与 s3 相当。但请查看定价计算器以验证

答案4

由于 S3 本质上提供了一个分布式网络文件系统,因此请尝试使用 EC2 节点来构建它。

MongoDB/GridFS 是一个引人注目的比较。

S3 据称有时会出现读/写超时,构建自己的缓存层也可能会有所帮助。

相关内容