AWS Route 53加权路由到两个云端分布的方法

问题描述 投票:4回答:1

背景:我有一个Javascript托管在S3 bucket上,静态网站+Cloudfront发布+Route 53设置。

我有一个Javascript托管在S3 bucket上,静态网站+Cloudfront分发+Route 53设置。我需要Cloudfront,因为我需要支持SSL的自定义域名。这工作很好。作为一个例子,该脚本可以在以下地址访问。https:/app.example.orgmyscript.js。. 这个URL是给客户嵌入到他们的网页上的,我无法更改。

Route 53的设置是这样的。

app.example.org => Cloudfont Distribution (s3://app.example.org)

我想要的是:

我想为新功能建立一个暂存环境。我想将10%的生产请求引导到另一个版本的脚本。

我尝试了什么?

我曾试过用不同的替代域名(如app-beta.example.org)设置另一个S3 bucket与静态webiste + cloudfront,但我需要使用不同的替代子域名,因为Cloudfront不允许在多个发行版中使用相同的替代域名。

我需要使用不同的替代子域名,因为Cloudfront不允许使用相同的替代域名进行多个分发。

在路由 53 中,我设置了这样的别名 A 记录。

app-beta.example.org => Alias Cloudfont Distribution (s3://app-beta.example.org) app.example.org => Alias app-beta.example.org (weighted 10) app.example.org => Alias Cloudfont Distribution (s3://app.example.org) (weighted 100)

为什么不成功?

结果发现这样做是不行的。

因为请求的域名是一样的 app.example.org云端分发(s3:/app.example.org)将拾取该请求,而不管该请求的记录是什么。app.example.org => Alias app-beta.example.org.

我想这里Route 53确实尝试根据权重规则将流量路由到cloudfront,但最终当请求到达cloudfront时,cloudfront会尊重 "替代域名 "并使用(app.example.org)。

那不使用cloudfront呢?

我曾想过使用EC2或EBS为nginx服务器提供静态javascript文件。这可能是可行的。但是。

  • javascript文件将在全球范围内被请求。使用EC2或EBS意味着对一些用户来说,它将有更高的延迟。这并不理想。

  • 这意味着需要管理额外的资源和成本。

lambda@Edge怎么样?

从技术上讲,lambda@Edge是一个完美的解决方案,如果它更便宜的话。是的,它已经很便宜了(每个请求0.0000006美元),但在我们的情况下,我们将为它支付超过1万美元。(该脚本每月被请求>100亿次,设置需要2个lambda函数)

问题

有没有其他方法可以达到我想要的目的?(即在不改变URL的情况下逐步推出新版本)

amazon-cloudfront amazon-route53
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.