当前位置: 首页 > 知识库问答 >
问题:

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

巩衡
2023-03-14

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

调用ChangeResourceRecordSets操作时出错(InvalidChangeBatch):[DNS名称为Foo.Bar.com的A类型的RRSet。因为在zone Bar.com中已经存在具有相同DNS名称的CNAME类型的冲突RRSet,...]

我找到的故障排除指南指出,“只有当您最初有一个CNAME记录并UPSERT到另一个CNAME记录时,UPSERT才会成功。”我的下一个想法是创建一个文件来删除CNAME记录并在相同的更改中创建一个记录(甚至背靠背运行它们),但我担心这可能会在服务中造成中断。我对管理AWS还是新手,所以欢迎任何指针。

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

共有1个答案

司徒英卓
2023-03-14

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

> < li>

将指向ELB的DNS名称的所有CNAME记录的TTL设置为一个合理的值,以使迁移预计在例如< code>3600(一小时)内完成。这里的想法是,你不希望这个值太低。如果您无法在此时间内完成迁移(即删除并重新创建A记录),用户可能会收到< code >无法解析DNS错误。

等待新的TTL生效。

提前准备CLI命令。

    < li >删除所有旧CNAME记录的删除命令 < li >创建TTL为< code>300 (5分钟)的所有新A记录的命令。

首先执行删除命令,等待它们完成,然后执行创建命令。

测试您的更改并确保新记录正常工作。如果它没有按预期工作,请立即调试并更改DNS,直到系统正常工作。

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

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

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

 类似资料:
  • 我可以在 route53 中设置记录 abc.mydomainname.com 指向某个外国域(例如 google.com)的点吗? 目前,我从www.mydomainname.com指向mydomainname.com,它是作品。 最好的

  • 要更新数据库中的记录,我们首先需要使用TableRegistry类来获取表。 我们可以使用get()方法从注册表中获取实例。 get()方法将数据库表的名称作为参数。 现在,这个新实例用于获取我们想要更新的特定记录。 使用此新实例调用get()方法并传递主键以查找将保存在另一个实例中的记录。 使用此实例设置要更新的新值,然后最后使用TableRegistry类的实例调用save()方法来更新记录。

  • 我正在尝试将一条记录从AWS Lambda函数推送到AWS DynamoDB。我可以使用AWSAPI成功地从我的pc上推送一条记录,但是当我将代码部署到AWS时,我就卡住了。 下面是可以从我的电脑成功推送记录的示例代码: 以及DynamoDB中的结果:来自DynamoDB控制台的屏幕截图 下面是我试图部署到Lambda的代码: 问题是,当Lambda函数运行时,DynamoDB中没有任何记录。以下

  • 我决定在AWS上托管我自己的投资组合,所以我做了以下步骤。 在s3上托管(一切正常) 在route53中购买域 创建了一个类型记录,将我的域指向s3(一切正常) 在ACM中为域*.mywebsite生成了公共证书。com,我的网站。网站 创建了CloudFront发行版,并具有以下设置 原始域名:链接到s3(一切正常) CNAMES:www.mywebsite。com,*.mywebsite。co

  • 我想导出一些出现在中的公共域名,并使用我在谷歌中的私有网络中的域名。 我看到一个选项是将aws中的记录列为yaml: 然后在谷歌云dns中将其导出为私有区域 只是想知道这是否可行,如果其他人尝试过,这是否有任何复杂性。 PS:还没有删除/更新aws route53,这只是一个学习的样本。 编辑:使用aws命令的记录列表导出,因为yaml格式不起作用,所以我安装了cli53(用于管理route 53

  • 问题内容: 我正在寻找一种记录SQL Server 2005数据库中一组特定表上发生的更改的好方法。我相信,做到这一点的最佳方法是通过对更新和删除执行触发器。无论如何,有没有要抓住正在运行的实际语句?一旦有了该语句,我就可以轻松地将其记录在其他地方(其他数据库表)。但是,我还没有找到一种简单的方法(如果可能)来获取正在运行的SQL语句。 问题答案: 触发器不好,我会远离触发器。 如果您尝试对某些问