2017-01-24 79 views

回答

0

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

这是一个不寻常的心理模型,有点像通过指定要应用的diff来编辑文件,或者追加到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,则需要列出所有四个原始A记录deletions,然后新建四个(1.1.1.1,2.2.2.2,4.4.4.4和5.5.5.5)additions

云DNS文档提供了示例代码的样板,你可以适应你想要什么:https://cloud.google.com/dns/api/v1/changes/create#examples,你只需要设置deletionsadditions为正在创建的Changes对象。

0

我从来没有为此使用过API,但是如果您使用命令行ie gcloud更新DNS记录,它会绑定单个事务中的更改,并且删除记录和添加更新记录的任务都将作为单笔交易。由于交易本质上是原子性的,它不应该导致任何中断。

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