AWS Route 53加权路由到两个Cloudfront发行版

时间:2018-10-25 11:27:54

标签: amazon-cloudfront amazon-route53

背景

我在带有静态网站+ Cloudfront发行版+ Route 53设置的S3存储桶上托管了Javascript。我需要Cloudfront,因为我需要具有SSL支持的自定义域。这很好。例如,可以在https://app.example.org/myscript.js处访问脚本。该URL已提供给客户以嵌入到他们的网页中,我无法更改。

Route 53的设置如下:

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

我想要的:

我想为新功能设置一个暂存环境。我想将生产请求的10%定向到该脚本的另一个版本。

我尝试过的事情

我尝试用静态webiste + cloudfront用另一个备用域名(例如app-beta.example.org)设置另一个S3存储桶。

我需要使用其他备用子域,因为Cloudfront不允许具有多个分布的相同备用域名。

在Route 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,因此无论app.example.org => Alias app-beta.example.org的记录如何,cloudfront发行版(s3://app.example.org)都会接受请求。

我认为这里的Route 53确实会尝试根据权重规则将流量路由到Cloudfront,但是最终当请求到达Cloudfront时,Cloudfront会尊重“替代域名”,并且无论如何都使用(app.example.org)。< / p>

不使用Cloudfront怎么样?

我已经考虑过将EC2或EBS用于提供静态JavaScript文件的Nginx服务器。这可能有效。但是:

  • 将在全球范围内请求javascript文件。使用EC2或EBS对某些用户而言将具有更高的延迟。这是不理想的。

  • 这意味着需要额外的资源来管理和花费。

lambda @ Edge怎么样?

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

问题

还有其他方法可以实现我想要的吗? (即在不更改网址的情况下逐步推出新版本)

0 个答案:

没有答案