2017-01-24 6 views

ответ

0

В API Cloud DNS использует Changes объекты для выполнения действия обновления; вы можете создать Changes, но вы никогда не удаляете их. В облачном DNS API вы никогда не работаете непосредственно с наборами записей ресурсов. Вместо этого вы создаете объект Changes с вашими additions и deletions, и если он создан успешно, он применяет эти обновления к указанным наборам записей ресурсов в вашей зоне управляемого DNS.

Это необычная ментальная модель, вроде редактирования файла, указав применяемый diff или добавляя к истории фиксации репозитория Git для изменения содержимого файла. Тем не менее, вы, безусловно, можете достичь того, что хотите сделать, используя этот API, и он применяется атомарно на авторитетных серверах (хотя система DNS в целом не делает ничего атомарно из-за кэширования, поэтому, если вы знаете, что будете внося изменения, уменьшайте свои TTL до, вы вносите изменения). Атомность здесь больше связана с самими обновлениями: если у вас несколько приложений, вносящих изменения в управляемые зоны, и есть конфликты при изменении конкретных наборов записей, операция создания завершится неудачно, и вы попробуете повторить изменение с измененными удалениями (вместо того, чтобы изменения были полностью перезаписаны).

Как бы то ни было, вы должны создать объект Changes с deletions, который определяет текущий набор записей ресурсов, и additions, который указывает желаемую замену. Это может быть довольно многословным, особенно если у вас есть доменное имя с большим количеством записей одного и того же типа. Например, если у вас есть четыре записи A для mydomain.example (1.1.1.1, 2.2.2.2, 3.3.3.3 и 4.4.4.4) и хотите изменить адрес 3.3.3.3 на 5.5.5.5, вам необходимо перечислить все четыре оригинальные записи А в deletions, а затем новые четыре (1.1.1.1, 2.2.2.2, 4.4.4.4 и 5.5.5.5) в additions.

Документация Cloud DNS обеспечивает пример шаблонного кода, который вы можете приспособиться к делать то, что вы хотите: https://cloud.google.com/dns/api/v1/changes/create#examples, вам просто нужно установить deletions и additions для Changes объекта, который вы создаете.

0

Я никогда не использовал API для этой цели, но если вы используете командную строку, то есть gcloud для обновления записей DNS, она связывает изменение в одной транзакции, и обе задачи удаления записи и добавления обновленной записи выполняются как единая транзакция. Поскольку транзакции являются атомными по своей природе, они не должны вызывать сбоев.

Лично я никогда не наблюдал никаких сбоев при использовании gcloud для обновления параметров DNS для моего домена.