使用AWS Elastic Beanstalk和AWS Cloudfront进行静态部署

时间:2012-12-13 08:32:06

标签: amazon-web-services amazon-cloudfront elastic-beanstalk

我正在使用AWS Elastic Beanstalk来部署我的PHP应用程序,这很棒,因为我可以使用单个git push操作部署应用程序。在这个应用程序中,我有静态文件,如JS和图像。

是否有任何自动方式将这些静态文件部署到Amazon Cloudfront?当然,我可以编写部署脚本,但我想知道是否有人使用任何AWS提供的解决方案。

2 个答案:

答案 0 :(得分:4)

您可以将应用程序URL指定为Cloudfront分发的来源(而不是使用S3存储桶)。这将使Cloudfront透明地开始为您的静态资产提供服务。几点需要注意:

  1. 您需要调整资源的路线以使用绝对网址。例如,<img src="/images/hello.png" />需要成为<img src="//xxxxxx.cloudfront.net/images/hello.png" />。 (注意奇怪的方案。这允许通过HTTP和HTTPS连接使用相同的URL)。

  2. 您需要实现某种类型的资源版本控制方法,以便用户始终获得最新版本。因此<img src="//a42532.cloudfront.net/images/hello.png" />实际上变为<img src="//a42532.cloudfront.net/images/hello-3456464234.png" />(或类似的东西)。否则,每次更新静态文件时都必须手动使分发无效,这需要永远,并且自从亚马逊收取失效费用以来可能会付出非常高的代价。使用Git,您可以编写一个提交钩子,在将代码推送到Beanstalk之前将UNIX纪元添加到您的assests的文件名中。

答案 1 :(得分:1)

您可以选择几个与AWS / S3相关的工具。

  • 查看支持S3和CloudFront的PHP SDK。您可以从以下screencast开始。

  • 查看托管static web site on S3的选项。托管后,可以更轻松地定义CloudFront以从Edge节点提供文件。

  • 查看CloudBerry tool。它也有免费版本。它使管理S3,CloudFront和其他存储相关服务上的文件变得非常容易。