CloudFront 与 Elastic Beanstalk 结合用于动态应用程序?
Posted
技术标签:
【中文标题】CloudFront 与 Elastic Beanstalk 结合用于动态应用程序?【英文标题】:CloudFront in combination with Elastic Beanstalk for dynamic application? 【发布时间】:2012-06-02 04:28:54 【问题描述】:我正在考虑将 CloudFront 与 Elastic Beanstalk 应用程序结合用于动态内容。
我喜欢 Elastic Beanstalk 提供的功能(git 部署、自动容量配置、负载平衡、自动扩展和应用程序运行状况监控),我也喜欢 CloudFront 上周推出的新功能 (http://bitly.com/aws-cloudfront-dynamic),所以我正在考虑在我的 Elastic Beanstalk 应用程序前面使用 CloudFront。
你怎么看?
这是一个好方法吗? (在这里看一个简单的图表:http://d.pr/i/f6sa)
或者我应该使用普通的 EC2 实例和 LoadBalancer(也许使用 CloudFormation 设置)?
如果我将 CloudFront 与 Elastic Beanstalk 结合使用,我是否应该将 CloudFront 源指向 Beanstalk 为我的应用程序自动创建的 Elastic LoadBalancer(即:awseb-My-Environment-00000.us-east-1.elb.amazonaws .com) 我相信如果环境出现故障它可能会改变并且它会自动创建一个新环境或者我应该将源指向应该始终相同的应用程序 URL(即:http://myapp.elasticbeanstalk.com)?
欢迎推荐!
谢谢!
【问题讨论】:
【参考方案1】:虽然您的问题已经过时,但我想我会对您的解决方案发表评论,因为我相信您不需要在 Elastic Beanstalk 前面使用 Cloudfront,原因有两个。
-
如上所述,您的网站是动态的。
对您网站的任何更新都需要时间来更新到 CF POP
如果您需要速度,请使用 Cloudflare 作为反向代理,并确保您的 RDS 服务器与您的 EB 实例位于同一区域。您还可以将静态资产(即图像、css、js)存储在 S3 中并通过 CF 提供。
我对您的最终解决方案很感兴趣,还是您完全放弃了它?
【讨论】:
【参考方案2】:CF 绝对是要走的路,既可以作为 CDN 也可以作为反向代理。
我不确定它如何与 php 和 .NET(我是 Java Dino)一起工作,但如果您的环境倾向于失败,我建议您将零停机时间功能与双重环境结合起来
(在这些之间切换 DNS CNAME,可能在发布时进行快速冒烟测试之后)以帮助您最大限度地减少对这些问题的影响,因此这只是一个流程问题。)
【讨论】:
【参考方案3】:可以使用ebextenions修改底层CF模板:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions-otherkeys.html
这是我看到这与 EB 一起正常工作的唯一方法,因为正如你所说,它动态创建 ELB - 手动指向其中一个将是一个坏主意
我会尝试做的是看看是否可以在该模板中创建一个云端分发并将其指向动态创建的 ELB——不确定这是否可能
也许亚马逊的人可以插话?
【讨论】:
以上是关于CloudFront 与 Elastic Beanstalk 结合用于动态应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Cloudfront 在连接到 ELB/Elastic Beanstalk 时抛出 504
AWS Elastic Beanstalk / S3 / CloudFront Cache-Control 标头
为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施
如何使用 Cloudfront 设置 AWS Elastic Beanstalk 以在 PHP 堆栈上托管图像和视频