Я хотел бы добавить дополнительные записи cname в google cloud dns, используя php api. Записи cname уже существуют для sub1.example.com и sub2.example.com, добавленных через веб-консоль. но im получение ошибкиgoogle cloud dns, php api, добавление нескольких cname
Набор записей ресурсов «entity.change.additions [0]» недействителен, поскольку DNS-имя «example.com.» могут иметь либо один набор записей ресурса 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>';
?>
также я не мог найти способ перечислить existsing CNAME записи с помощью PHP API, как это бы дало мне ключ к ответу здесь. Кто-нибудь знает, как извлечь эти, до сих пор код
<?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>';
?>
не перечисляет эти CNAME записи, хотя методы, получить и listManagedZones взять дополнительный необязательный параметр я не могу найти документацию на нем
источник: https://github.com/google/google-api-php-client/blob/master/src/Google/Service/Dns.php линия: 416, 395
следовать по из статьи: Google Cloud DNS Services - entity.change parameter is required but missing
-
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=en
https://cloud.google.com/dns/api/v1/resourceRecordSets#resource
https://cloud.google.com/dns/docs
+1 Что касается объяснения ошибки, нашел 'cnameResourceRecordSetConflict' здесь: https://cloud.google.com/dns/troubleshooting?hl=en, который "несколько" дал ключ к разгадке... – EdSF