I/Should 我可以将 Cloudfront 添加到我在 elastic beanstalk 上的 web 服务 运行

Can I/Should I add Cloudfront to my webservice running on elastic beanstalk

现状

我在 ElasticBeanstalk 上有一个 Java Tomcat 应用程序 运行。该应用程序是一个网络服务,它接收搜索查询和 returns Xml 格式的结果。 Web 服务每月仅使用新数据更新一次,因此在月底发送的任何查询将 return 与月初 return 发送的查询结果相同。

我们利用 EB 的负载平衡,因此通常只有一个 EC2 实例 运行 但在使用高峰期可能会启动另一个 EC2 实例。

为了允许部署新版本的 Elastic Beanstalk,我们在 Route53 上有一个域名,以及一个映射到 EB 应用程序的子域,客户使用这个子域来使用 Web 服务。

这工作得相当好,除了峰值使用量可能比正常使用量略高,导致需要更多的实例来启动增加成本,而且即使使用额外的机器也会降低响应速度。

我应该使用 CloudFront

我想知道我是否可以使用 CloudFront 来缓存这些响应,我正在做这些假设

  1. EB 上的波峰和波谷会更少
  2. 假设云端请求比 EB 上的额外负载更便宜,我会省钱
  3. 它会提高不在我的 EB 服务器附近的客户的响应率,即 EB 服务器位于欧盟,但我有很多美国客户。

如果是我该怎么做

我去尝试创建一个 Cloudfront Distribution 但是在 Original Domain Name 字段中它只列出了我的 s3 存储桶而不是我的 S3域所以没有进一步。

CloudFront 确实允许您提供动态内容:http://aws.amazon.com/cloudfront/dynamic-content/ 但是从那里的阅读来看,它似乎会根据 URL 模式缓存查询结果。这与您网站的使用兼容吗?

可在此处找到有关如何将 EC2 指定为 CloudFront 源的信息:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CustomOriginBestPractices.html

我总是将 cloudfront 放在我在 AWS 上交付的任何解决方案之前。针对您的具体问题:

  1. 很可能是的,它会卸载一些可能转到 EC2 实例的工作,因此有时可能会阻止额外的实例启动。
  2. 也许,也许不是。它可能会为您省钱,但也有可能最终会让您损失一大笔钱。 Cloudfront 可能会被黑客滥用,如果只是为了给您带来巨额账单,那么您可能想要添加一个账单提醒,这样您就不会对此感到惊讶。
  3. 是的,它很可能会提高您网站的响应速度。这就是我一直使用它的主要原因。