2017-01-24 7 views

答えて

0

クラウドDNSのAPIは、更新アクションを実行するためにChangesオブジェクトを使用しています。 Changesを作成することはできますが、削除することはありません。クラウドDNS APIでは、リソースレコードセットに対して直接操作することはありません。代わりにChangesオブジェクトを作成し、希望するadditionsdeletionsを作成し、正常に作成された場合は、それらの更新を管理対象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)の4つのAレコードがあり、3.3.3.3アドレスを5.5.5.5に変更する場合は、元の4つのAレコードはdeletionsに、次に新しい4つ(1.1.1.1,2.2.2.2,4.4.4.4、および5.5.5.5)がadditionsにあります。あなたはちょうどあなたが作成しているChangesオブジェクトに対してdeletionsadditionsを設定する必要があり、https://cloud.google.com/dns/api/v1/changes/create#examples

クラウドDNSのドキュメントでは、あなたがやりたいことに適応できるサンプルコードの定型文が用意されています。

0

私はこの目的でAPIを使用したことはありませんが、コマンドライン、すなわちgcloudを使用してDNSレコードを更新すると、1回のトランザクションで変更がバインドされ、レコードの削除と更新されたレコードの追加の両方のタスクが単一の取引。トランザクションは本質的に原子的なものであるため、トランザクションが停止してはいけません。

個人的には、自分のドメインのDNS設定を更新するためにgcloudを使用している間、何の不具合も見たことはありませんでした。

関連する問題