2

PHP API を使用して、Google クラウド DNS に追加の cname レコードを追加したいと考えています。Web コンソールから追加された sub1.example.com および sub2.example.com の cname レコードはすでに存在します。しかし、エラーが発生します

DNS 名が「example.com」であるため、リソース レコード セット「entity.change.additions[0]」は無効です。は、1 つの CNAME リソース レコード セットまたは他のタイプのリソース レコード セットのいずれかを持つことができますが、両方を持つことはできません。

<?php
require '../autoload.php';


$client_email = CEMAIL;
$private_key = file_get_contents(PKEY);
$scopes = array('https://www.googleapis.com/auth/ndev.clouddns.readwrite');
$project = PNAME;
$managedZone = "example-com";

$creds = new Google_Auth_AssertionCredentials($client_email,$scopes,$private_key);
$client = new Google_Client();
$client->setAssertionCredentials($creds);

$resource = new Google_Service_Dns_ResourceRecordSet();
$resource->kind = "dns#resourceRecordSet";
$resource->name = "example.com.";
$resource->rrdatas[] = "sub3.example.com.";
$resource->ttl = 300;
$resource->type = "CNAME";

$dns = new Google_Service_Dns($client);

$change = new Google_Service_Dns_Change();
$change->kind = "dns#change";
$change->setAdditions([$resource]);

$r=$dns->changes->create($project,$managedZone,$change);
echo '<pre>'.print_r($r,true).'</pre>';

?>

また、php APIを使用して既存のcnameレコードをリストする方法を見つけることができませんでした。これにより、ここで答えの手がかりが得られました。これまでのところ、コードを取得する方法を知っている人はいますか

<?php
//include details from above

$dns = new Google_Service_Dns($client);

$r=$dns->managedZones->listManagedZones($project);
echo '<pre>'.print_r($r,true).'</pre>';

$r=$dns->managedZones->get($project,$managedZone);
echo '<pre>'.print_r($r,true).'</pre>';

?>

メソッド get および listManagedZones は追加のオプション パラメータを使用しますが、これらの cname レコードはリストしません。ドキュメントが見つかりません

ソース: https://github.com/google/google-api-php-client/blob/master/src/Google/Service/Dns.php 行: 416、395

記事の続き: Google Cloud DNS サービス - entity.change パラメータが必要ですが、欠落しています

-

https://developers.google.com/api-client-library/php/

https://developers.google.com/apis-explorer/#p/dns/v1/

https://support.google.com/cloud/answer/6158849?hl=ja

https://cloud.google.com/dns/api/v1/resourceRecordSets#resource

https://cloud.google.com/dns/docs

4

1 に答える 1

1

後でこの投稿を見つけるかもしれない人のために、この投稿に従って、私は自分の質問に答えました

https://www.zeitgeist.se/2014/05/01/google-cloud-dns-how-to/

記事の途中で気づいたのですが、メール レコードのリストには、リソースの rrdatas フィールドにルート ドメインがあり、リソースの name プロパティにサブドメインがあり、2 つのラウンドが入れ替わって出来上がりました

$resource = new Google_Service_Dns_ResourceRecordSet();
$resource->kind = "dns#resourceRecordSet";
$resource->name = "sub3.example.com.";       //sub
$resource->rrdatas[] = "example.com.";       //root domain

txt の追加:

$del = new Google_Service_Dns_ResourceRecordSet();
$del->kind = "dns#resourceRecordSet";
$del->name = "example.com.";
$del->type = "TXT";
$del->ttl = 300;
$del->rrdatas[] = "\"test=test\"";

$add = new Google_Service_Dns_ResourceRecordSet();
$add->kind = "dns#resourceRecordSet";
$add->name = "example.com.";
$add->type = "TXT";
$add->ttl = 300;
$add->rrdatas[] = "\"test2=test2\"";
$add->rrdatas[] = "\"test3=test3\"";

$change->setAdditions([$add]);
$change->setDeletions([$del]);

$r=$dns->changes->create($project,$managedZone,$change);

https://github.com/google/google-api-php-client/tree/master/examples

そう。

+

Google Cloud DNS レコード(nslookup)を直接検索する

于 2015-09-28T14:41:02.810 に答える