1

我正在使用AWS Elastic Beanstalk部署我的PHP应用程序,这非常棒,因为我可以使用单个git推送操作部署应用程序。在这个应用程序中,我有静态文件,如JS和图像。使用AWS Elastic Beanstalk和AWS Cloudfront进行静态部署

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

回答

3

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

  1. 您需要调整到您的资产的路由以使用绝对URL。例如<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" />(或类似的东西)。否则,每次更新静态文件时,您都必须手动使分配失效,这需要花费很长时间,并且可能会因为Amazon为失效付款而花费很高。使用Git,您可以编写一个提交钩子,在将代码推送到Beanstalk之前,将UNIX时代添加到您的声明的文件名。

1

您有几个选项都是围绕AWS/S3相关工具。

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

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

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