我正在使用 AWS Elastic Beanstalk 来部署我的 PHP 应用程序,这很棒,因为我可以使用单个 git push 操作来部署应用程序。在这个应用程序中,我有静态文件,例如 JS 和图像。
是否有任何自动方式将这些静态文件部署到 Amazon Cloudfront?当然,我可以编写一个部署脚本,但我想知道是否有人在使用任何 AWS 提供的解决方案。
我正在使用 AWS Elastic Beanstalk 来部署我的 PHP 应用程序,这很棒,因为我可以使用单个 git push 操作来部署应用程序。在这个应用程序中,我有静态文件,例如 JS 和图像。
是否有任何自动方式将这些静态文件部署到 Amazon Cloudfront?当然,我可以编写一个部署脚本,但我想知道是否有人在使用任何 AWS 提供的解决方案。
您可以将应用程序 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 纪元添加到您的资产文件名中。
您有几个选项都与 AWS/S3 相关的工具有关。
查看在 S3 上托管静态网站的选项。托管后,定义 CloudFront 以从边缘节点提供文件会更容易。
查看CloudBerry 工具。它也有免费版本。它使管理 S3、CloudFront 和其他存储相关服务上的文件变得非常容易。