AWS使用cli将Cname记录修改为a记录



我的组织在route53中有几个不同的托管区域,其中有多个CNAME记录解析到我们负载平衡器的DNS名称。我想把这些记录改成指向我们新的全球加速器的IP地址。我创建了一个json文件,并使用cli上传它,收到以下错误:

调用时发生错误(InvalidChangeBatch)ChangeResourceRecordSets操作:[带DNS名称的A类型RRSet]Foo.Bar.com。不允许,因为类型

我发现的故障排除指南指出"只有当您最初有一个CNAME记录并且UPSERT到另一个CNAME记录时,UPSERT才成功。"我的下一个想法是创建一个文件来删除CNAME记录并在相同的更改中创建一个a记录(或者甚至背靠背运行它们),但我担心这可能会导致服务中断。对于AWS的管理,我还是个新手,欢迎大家指教。

是否有更好的方法将CNAME记录更改为a记录?

在我看来,这是最安全的方法:

  1. 将指向ELB DNS名称的所有CNAME记录的TTL设置为预计迁移完成的合理值,例如3600(1小时)。这里的想法是,您不希望这个值过低。如果您不能在此时间内完成迁移(即删除并重新创建A记录),用户可能会得到Unable to resolve DNS错误。

  2. 等待新的TTL生效。

  3. 请提前准备好CLI命令。

    1. 删除所有旧CNAME记录的命令
    2. 创建命令,创建所有新的A记录,TTL为300(5分钟)。
  4. 先执行删除命令,等它们完成后,再执行创建命令。

  5. 测试更改并确保新记录正常工作。如果不能正常工作,请立即调试并更改DNS,直到系统正常工作。

  6. 将A记录的TTL增加到更大的值,如3600

  7. 再等一两天,以防某些解析器不尊重TTL。同时,保留原始CNAME记录所指向的旧ELB。监控直接来自用户的ELB流量

  8. 当指标告诉您几乎所有流量都来自GA时,如果需要,您可以安全地终止ELB。

最新更新