2017-01-24 120 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設置。