angular - 使用 S3 和 Cloudfront 的静态 Web 应用程序版本控制
问题描述
目前我正在使用 S3 和 CloudFront 来托管静态 Angular 应用程序。
我想在每次部署时对应用程序进行版本控制,以确保轻松回滚(通过我的命令行工具或自动管道)。
我的 S3 存储桶看起来像这样:
/production/v1.2
/production/v1.3
/production/v1.4
下一次部署将在文件夹 /production/v1.5 中,依此类推。
我想使用这种策略,以便在回滚的情况下,我只需将网站指向从旧版本 /production/v1.4 加载。
- 我的第一个解决方案是更新 CloudFront 配置源路径以指向新文件夹,例如
/production/v1.4
- 在回滚的情况下,我只需将 CloudFront 配置源路径更新为
/production/v1.3
第二种解决方案是我想有一个 live/ 文件夹并有一个 CloudFront 原始路径指向 S3 中的 live/index.html 文件夹,并在那里复制我的应用程序的最后一个版本或每次都复制回滚版本而不更改 CloudFront 原始路径:
/production/v1.2
/production/v1.3
/production/v1.4
/production/live
- 将新版本部署到
/production/v1.4
和/production/live
- 如果回滚,只需复制
/production/v1.3
到/production/live
考虑到通过 cli 和缓存失效更新 CloudFront 分发设置并不容易:
你有什么建议吗?有没有更好的方法来处理这种情况?
解决方案
根据您的要求,我创建了 python 库,该库负责为回滚操作创建部署和备份文件夹。它还包括 CloudFront 缓存失效。
推荐阅读
- android - Kivy camera does not save pic on android phone
- sql - 如何通过 SSIS 在管理员模式下执行 powershell 脚本
- laravel - 向 Laravel 忘记密码表单添加额外问题并自定义其错误消息
- amazon-web-services - 在 Google Cloud Functions 或 AWS Lambda 上部署 GraphQL 服务器是个好主意吗?否则有什么替代方案?
- r - 在 R 中按条件创建附加变量
- embedded - Cortex M3 从应用程序跳转回引导加载程序并返回到应用程序
- java - Slenium-Java:Wait.until(ExpectedConditions.invisibilityOfElementLocated()) 对于负面情况总是失败
- regex - 正则表达式(PCRE)从匹配结果中排除某些单词
- c - 结构中的指针指向另一个结构
- git - 如何将预提交挂钩推送到所有现有存储库