S3静态网站/使用蓝绿部署

7

我在为我的S3静态网站提供bluegreen环境时遇到了困难。我在给定的存储桶中发布了网站的版本,并在以下位置进行了暴露:

  • 一个Cloudfront分发
  • 然后在Route 53上
  • 还有另一个CDN(公司级别,解析DNS)用于访问互联网。

我已经尝试了一些“计算”方案,例如ALB,但是没有成功。

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

是否有人经历过这种情况,或者有任何解决方法?

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,逐渐将相对权重从蓝色转移到绿色,验证绿色版本健康后进行自动化测试。

jarmod,感谢您回答我的问题。在这种情况下,如果我需要回滚到绿色环境,那么这将是逐步进行的,对吗?这需要DNS复制时间吗?此时,我的应用程序不能一直处于“绿色”状态... - Hide Watanabe

1
在AWS上托管静态网站-它是2016年的白皮书。它依赖于无法工作的示例,这些示例不起作用。您不能仅设置两个CloudFront分配以为DNS切换提供相同的CNAME。
另一种方法是在Lambda Edge中执行绿/蓝逻辑。

1
你可以使用单个Cloudfront分发,2个S3存储桶和Lambda@Edge来进行蓝绿或渐进式部署。 你可以在这里找到一个已准备好的云形成模板。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接