amazon-web-services - S3 静态网站 /w bluegreen 部署
问题描述
我很难为我的 s3 静态网站提供蓝绿。我在给定的存储桶中发布了网站的一个版本,它在以下位置公开:
- Cloudfront 发行版
- 然后在 53 号公路上
- 还有另一个 CDN(企业,解析 DNS)连接到互联网。
我尝试了一些“计算”解决方案,比如 ALB,但我没有成功。
我遇到的主要困难是当我用新地址更新 CloudFront 时 DNS 复制时间很长,这使得将未来版本回滚到旧版本变得困难(考虑使用不同的存储桶进行发布)。
有没有人经历过这个或知道如何解决这个问题?
解决方案
AWS 建议您为每个蓝/绿变体创建不同的 CloudFront 分配,每个变体都有自己的 DNS。
来自在 AWS 上托管静态网站的说明性指南:
不同的 CloudFront 分配可以指向同一个 Amazon S3 存储桶,因此不需要多个 S3 存储桶。每个变体 [A/B 或蓝色/绿色] 将其资产存储在同一个 S3 存储桶中的不同文件夹下。将 CloudFront 行为配置为指向每个 A/B 或蓝/绿变体的相应 Amazon S3 文件夹。
该策略的另一个关键部分是称为加权路由的 Amazon Route 53 功能。加权路由允许您将多个资源与单个 DNS 名称相关联,并根据其相对分配的权重动态解析 DNS。因此,如果您想将流量按 70/30 拆分以进行 A/B 测试,请将相对权重设置为 70 和 30。对于蓝/绿部署,自动化脚本可以调用 Amazon Route 53 API 以逐渐改变相对权重在自动化测试验证绿色版本是健康的之后从蓝色变为绿色。
推荐阅读
- c++ - QIcon::pixmap(size) 返回错误的大小 - 任何解决方法?
- php - 如何使用 php 数组获取所有 woocommerce 订单计费或发货电子邮件
- javascript - JavaScript 递归未返回所需结果
- postgresql - 默认撤销对新数据库的 CONNECT 权限
- configuration - Jest 无法解析图像文件
- sql-server - 如何使用 MSSQL 连接到在 Windows 10 上的 Docker 中运行的 SQL 服务器
- reactjs - 为什么我的导入语句在寻找 '.\src\components\Form\Components'
- c# - EF 6 .net 4.5.2 无法加载程序集 System.Data.OracleClient
- python - 在 Visual Studio Code 中运行 Python 时出错:错误:会话无法生成请求
- tomcat9 - 请求的资源 [/ords] 不可用 404 未找到