【问题标题】:Statics deployment with AWS Elastic Beanstalk and AWS Cloudfront使用 AWS Elastic Beanstalk 和 AWS Cloudfront 进行静态部署
【发布时间】:2012-12-14 08:38:05
【问题描述】:
我正在使用 AWS Elastic Beanstalk 来部署我的 PHP 应用程序,这很棒,因为我可以使用单个 git push 操作来部署应用程序。在这个应用程序中,我有静态文件,例如 JS 和图像。
是否有任何自动方式将这些静态文件部署到 Amazon Cloudfront?当然我可以编写一个部署脚本,但我想知道是否有人在使用任何 AWS 提供的解决方案。
【问题讨论】:
标签:
amazon-web-services
amazon-cloudfront
amazon-elastic-beanstalk
【解决方案1】:
您可以将应用程序 URL 指定为 Cloudfront 分配的来源(而不是使用 S3 存储桶)。这将使 Cloudfront 透明地开始为您的静态资产提供服务。几个注意事项:
您需要调整资产的路由以使用绝对 URL。例如<img src="/images/hello.png" /> 需要变为<img src="//xxxxxx.cloudfront.net/images/hello.png" />。 (注意看起来很奇怪的方案。它允许通过 HTTP 和 HTTPS 连接使用相同的 URL)。
您需要实施某种类型的资源版本控制方法,以便用户始终获得最新版本。所以<img src="//a42532.cloudfront.net/images/hello.png" /> 实际上变成了<img src="//a42532.cloudfront.net/images/hello-3456464234.png" />(或类似的东西)。否则,每次更新静态文件时,您都必须手动使分发失效,这将花费很长时间,并且可能会变得非常昂贵,因为亚马逊会为失效开具账单。使用 Git,您可以编写一个提交挂钩,在将代码推送到 Beanstalk 之前将 UNIX 纪元添加到您的资产文件名中。