使用 S3 和 Cloudfront 进行静态 Web 应用程序版本控制

alb*_*anx 10 static amazon-s3 amazon-cloudfront angular

目前我使用 S3 和 CloudFront 来托管静态 Angular 应用程序。

我想在每次部署时对应用程序进行版本控制,以确保轻松回滚(通过我的命令行工具或自动管道)。

我的 S3 存储桶看起来像这样:

/production/v1.2
/production/v1.3
/production/v1.4
Run Code Online (Sandbox Code Playgroud)

下一个部署将在文件夹 /production/v1.5 等中。

我想使用这种策略,以便在回滚的情况下,我只需将网站指向从旧版本 /production/v1.4 加载。

  • 我的第一个解决方案是更新 CloudFront 配置源路径以指向新文件夹,例如 /production/v1.4
  • 在回滚的情况下,我只是将 CloudFront 配置 Origin Path 更新为 /production/v1.3

相反,第二个解决方案我想有一个 live/ 文件夹,并且有一个 CloudFront Origin Path 指向 S3 中的 live/index.html 文件夹,然后在那里复制我的应用程序的最后一个版本或每次复制回滚版本而不更改 CloudFront Origin Path :

/production/v1.2
/production/v1.3
/production/v1.4
/production/live
Run Code Online (Sandbox Code Playgroud)
  • /production/v1.4和部署新版本/production/live
  • 如果回滚,只需复制/production/v1.3/production/live

考虑到通过 cli 和缓存失效更新 CloudFront 分发设置并不容易:

你有什么建议吗?有没有更好的方法来处理这种情况?

avi*_*006 0

根据您的要求,我创建了 python 库,该库负责部署和创建备份文件夹以进行回滚操作。它还包括 CloudFront 缓存失效。

https://github.com/aviboy2006/angular-upload-s3cf