更新/覆盖DNS记录Google Cloud

时间:2017-01-24 01:28:44

标签: google-cloud-dns

有谁知道使用API​​覆盖Google DNS云下的记录的最佳做法是什么? https://cloud.google.com/dns/api/v1/changes/create无济于事!

我可以删除并创建,但它不是很好;)并且可能导致中断。

此致

2 个答案:

答案 0 :(得分:1)

Cloud DNS API使用Changes个对象来执行更新操作;您可以创建Changes,但不能删除它们。在Cloud DNS API中,您永远不会直接在资源记录集上运行。而是使用所需的Changesadditions创建deletions对象,如果成功创建,则会将这些更新应用于托管DNS区域中的指定资源记录集。

这是一种不同寻常的心理模型,有点像通过指定要应用的差异来编辑文件,或者附加到Git存储库的提交历史记录来更改文件的内容。尽管如此,你仍然可以使用这个API实现你想要做的事情,并且它在权威服务器上以原子方式应用(尽管由于缓存,整个DNS系统并没有真正做任何事情,所以如果你知道你将是进行更改,在进行更改之前减少您的TTL 。这里的原子性更多地是关于更新本身:如果您有多个应用程序对管理区域进行更改,并且特定记录集的更改存在冲突,则创建操作将失败,您将使用修改后的删除重试更改(而不是默默地覆盖更改)。

无论如何,您要做的是创建一个Changes对象,deletions指定当前资源记录集,additions指定您想要的替换。这可能相当冗长,特别是如果您的域名包含大量相同类型的记录。例如,如果mydomain.example(1.1.1.1,2.2.2.2,3.3.3.3和4.4.4.4)有四条A记录,并且想要将3.3.3.3地址更改为5.5.5.5,则需要列出所有deletions中的四个原始A记录,然后是additions中的新四个(1.1.1.1,2.2.2.2,4.4.4.4和5.5.5.5)。

Cloud DNS文档提供了示例代码样板,您可以根据自己的需要进行调整:https://cloud.google.com/dns/api/v1/changes/create#examples,您只需为deletions设置additionsChanges你正在创造的对象。

答案 1 :(得分:0)

我从来没有为此目的使用过API,但如果你使用命令行即​​gcloud更新DNS记录,它会在单个事务中绑定更改,删除记录和添加更新记录的任务都作为单个执行交易。由于交易本质上是原子的,因此不应造成任何中断。

就个人而言,我在使用gcloud更新域名的DNS设置时从未目睹任何中断。