7

我很难为我的 s3 静态网站提供蓝绿。我在给定的存储桶中发布了网站的一个版本,它在以下位置公开:

  • Cloudfront 发行版
  • 然后在 53 号公路上
  • 还有另一个 CDN(企业,解析 DNS)连接到互联网。

我尝试了一些“计算”解决方案,比如 ALB,但我没有成功。

我遇到的主要困难是当我用新地址更新 CloudFront 时 DNS 复制时间很长,这使得将未来版本回滚到旧版本变得困难(考虑使用不同的存储桶进行发布)。

有没有人经历过这个或知道如何解决这个问题?

4

3 回答 3

6

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 以逐渐改变相对权重在自动化测试验证绿色版本是健康的之后从蓝色变为绿色。

于 2020-02-02T21:32:58.237 回答
1

您可以使用单个 Cloudfront 分发、2 个 S3 存储桶和 Lambda@Edge 进行蓝/绿或渐进式部署。您可以在此处找到执行此操作的即用型 cloudformation 模板。

于 2021-05-30T06:52:30.590 回答
0

在 AWS 上托管静态网站 - 这是 2016 年的白皮书。它依赖于不起作用的非工作示例。您不能只设置两个云端分发来为 dns 切换提供相同的 CNAME。

另一种方法是在 lambda 边缘执行绿色/蓝色逻辑。

于 2021-03-02T07:12:52.283 回答