【问题标题】:How to reduce cost of AWS website hosting (EC2, RDS)如何降低 AWS 网站托管(EC2、RDS)的成本
【发布时间】:2019-05-31 11:41:19
【问题描述】:

我是 AWS 新手,所以我有几个问题。我正在托管一个静态网站和一个来自单个 AWS t2.micro EC2 实例的动态网站。我还在 AWS RDS (db.t2.micro) 上托管了一个小型(约 5,000 个条目)MySQL 数据库。问题是,托管这两个低流量站点和一个非常小的数据库每月向我收取大约 40 美元的费用。进入这些网站的大部分流量来自我的个人测试。这个成本似乎很荒谬。以下是我的账单。

我想知道一些事情:

  • 我认为自己付出的代价是正确的吗?如果是,我该如何降低成本?
  • 我是否因为使用了错误的实例大小而付出了太多?
  • 我应该使用其他服务来完成这些任务吗?

我看到弹性负载平衡向我收取了大约 17 美元的费用。我不确定这是否有必要,但我找不到任何资源来降低/消除成本。

非常感谢我能得到的任何帮助,如果我能提供更多信息,请告诉我!

【问题讨论】:

  • 你已经拥有了最小/最便宜的东西。您唯一的选择是切换到不同的服务供应商或删除 ELB 或 RDS 等服务。
  • 负载均衡器可以提供额外的好处,例如 SSL 卸载(减少您的实例上的 CPU 负载)和 DoS(拒绝服务)免受黑客攻击您的网站(我觉得这是一个很大的优势)。如果钱真的那么紧,我会放弃 ELB 并切换到 CDN。
  • 我已经投票结束这个问题,因为它与编程没有任何关系。考虑在 serverfault.com 上发帖,在那里您会找到更合适的受众。
  • @SamHollenbach 您似乎在说成本是荒谬的,因为您的网站没有获得太多流量。但是,您根本不需要为流量付费,您需要为亚马逊每周 7 天、每天 24 小时专用于您帐户的服务器资源付费。您可能可以运行单个 t2.nano 服务器(没有 ELB 或 RDS)的整个站点,为此购买实例预留,每月只需支付 4-5 美元。
  • @SamHollenbach 当您将此题外话问题转移到服务器故障时,您需要详细说明您正在运行您的网站的软件类型。我的猜测是 Wordpress。您可能需要迁移到单个 AWS Lightsail 实例或单个 Digital Ocean dropplet。

标签: amazon-web-services amazon-ec2 amazon-rds


【解决方案1】:

弹性负载均衡好像有点多。 你用它做什么? 我相信您可以在左侧的 EC2 菜单上找到实例。如果您没有看到它,请尝试在您使用或过去使用的 aws 区域之间切换。

我还建议将站点托管在 S3 中,因为它比 EC2 便宜得多。 如果不可能,那么 API 网关和 Lambda 函数的组合也许可以解决问题。

【讨论】:

  • 我只是将它用于托管我的两个网站的单个实例。我相信我可以将静态网站移至 S3,但动态网站似乎需要其他东西。
  • 对于动态我会使用 API 网关和 Lambda 函数,就像我看到其他人也建议的那样。设置起来很麻烦,但成本将接近于零。
【解决方案2】:

我能想到一些你可能会做的事情,但是如果不了解你的应用程序就很难具体说明。

  1. 您或许可以使用 Spot/Reserved 实例来节省您的 EC2 成本。请查看 https://aws.amazon.com/ec2/pricing/,了解按需和 Spot/Reserved 之间的定价模型有何不同。

    李>
  2. 如果可能,请考虑迁移到无服务器。像 Lambda + API Gateway + S3 静态网络托管。在无服务器支付模式中,您只需按使用量付费,而不是按小时付费。如果您的应用程序流量较低,这可以为您节省很多钱。

  3. 如果您的应用程序现在很少使用,请考虑将 Aurora Serverless 用于您的 RDS。它运行 MySQL,并且能够在数据库未使用一段时间后“暂停”数据库。您只需在数据库处于非活动状态时支付存储费用,因此如果您的流量较低,这可能是一个不错的选择。

  4. 如果您的数据结构允许,请考虑迁移到 DynamoDB。它是一个 NoSQL 数据库,本质上是一个键值存储。 DynamoDB 是无服务器的,如果您将其配置为按需提供,您只需为使用的内容付费。如果您不熟悉 DynamoDB,可以查看 https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/,它解释了如何构建数据。

【讨论】:

  • 感谢这些提示,真的很有帮助!我有一个静态网站,它只是一个个人作品集,然后我有一个动态网站,它本质上是查询 MySQL 数据库并显示图表,以及一些数据输入表单。
  • @SamHollenbach Lambda + API Gateway + S3 仍然适用于您的动态网站。您只需要从您的前端调用一个 API 并通过 API Gateway 将其传递给 Lambda,然后让您的 Lambda 调用您的数据库进行查询。不过,您应该注意的一件事是,在 VPC 中运行的 Lambda 通常在冷启动时会很慢。如果你最终尝试了这个,我建议你看看如何保持 Lambda 函数温暖。您将以最低的成本获得更好的延迟。
  • 感谢您的信息。我想知道您是否立即知道该方法的定价与仅使用 EC2 相比如何?如果我只节省几美元,我不想麻烦转换我的所有代码。
  • 这真的取决于你的应用程序的流量水平。让它变得非常通用,Lambda:您每月免费获得 100 万个请求,从那时起,每百万个请求的费用为 0.20 美元。 (aws.amazon.com/lambda/pricing) API 网关:您很可能只需为每百万个请求支付 350 美元 (aws.amazon.com/api-gateway/pricing) S3:您甚至可能不必为此担心成本 (aws.amazon.com/s3/pricing/?nc=sn&loc=4)。
  • 请注意,现场实例可能随时消失。除非您知道自己的工作负载可以处理这个问题(个人网站肯定不行),否则您不应该使用它们。
猜你喜欢
  • 2017-02-14
  • 2020-07-30
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 2019-06-23
  • 2020-06-16
相关资源
最近更新 更多