在 AWS DNS/Route 53 条记录中使用比较逻辑

Using comparative logic in AWS DNS/Route 53 records

我们在 AWS 中设置了站点。当我们为新版本调出一个堆栈时,我们使其在版本 URL 上可用。即

V1 在 v1.mysite.com

可用

V2 在 v2.mysite.com

可用

等等

是否可以创建一个自动指向我站点的最新部署版本的 DNS 条目? 因此,在我部署 V1 之后,我会有两个 DNS 条目:

v1.mysite.com 转到其堆栈的 IP

mysite.com 重定向到 v1.mysite.com

然后当我部署 V2 时,mysite.com 现在重定向到 v2.mysite.com,而无需我手动编辑 DNS 条目。

一般来说,我能否自动生成 DNS 条目或生成某种通配符 DNS 条目以始终指向 AWS 当前可用的我站点的最高编号版本?它应该查看所有当前可用 DNS entries/stacks V 之后的数字,并使 mysite.com 指向数字最高的数字。

我们正在使用 CloudFormation 来创建我们的堆栈和我们的 DNS (Route 53) 条目,因此在这些脚本中放置任何逻辑也可以。

这不是 DNS 本身的一部分,因此 Route53 上的任何内容都不太可能支持它。最好的选择是在新实例启动或提升为生产实例时运行的脚本。使用 boto:

非常简单
  1. 新建一个boto.route53.record.Record
  2. 新建一个boto.route53.record.ResourceRecordSets
  3. 使用操作 UPSERT 和您的记录添加更改记录
  4. 提交 ResourceRecordSets(在失败时简单重试)
  5. get_change() 直到 Route53 回复 INSYNC
  6. 根据您的应用程序,您可能还需要等待亚马逊的所有权威 DNS 服务器 (dns.resolver.query('your-domain', 'NS')) 了解您的更改。

我们最终必须在部署新堆栈之前将其设为手动步骤。如果需要在 mysite.com 重新分配新堆栈,部署者必须手动删除现有映射。然后云形成脚本将创建新的 DNS 映射。

不理想,但比我想的云形成脚本中的大量混乱逻辑要好。