У меня есть несколько записей A в моей учетной записи Route53. Я хочу массово обновить TTL для всех из них.
Логика, которую я использую, заключается в том, что я получаю все записи, используя операцию «ListResourceRecordSets». Создайте следующий объект изменения для каждой записи.
array(
'Action' => 'UPSERT',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => NEW_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));
Затем я отправляю запрос «ChangeResourceRecordSets» с объектами изменений, созданными на последнем шаге.
Route53 возвращает эту ошибку Ошибки проверки: [ChangeBatch] [Изменения] [0] [Изменить] [Действие] должно быть одним из «CREATE» или «УДАЛИТЬ» [ChangeBatch] [Изменения] [1] [Изменить] [Действие] должно быть одним из «CREATE» «или» УДАЛИТЬ «)
Постскриптум Я не мог найти пример UPSERT для ChangeResourceRecordSets вызов.
Либо обновите свой AWS SDK до более поздней версии, поддерживающей UPSERT, либо сначала удалите набор (ы) записей, а затем добавьте их с новыми изменениями.
UPSERT был добавлен в начале 2014 года: https://aws.amazon.com/blogs/aws/new-features-for-route-53-improved-health-checks-https-record-modification/
Таким образом, у вас должен быть действительно старый SDK.
Чтобы сделать это без UPSERT:
array(
'Action' => 'DELETE',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => OLD_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));
а потом:
array(
'Action' => 'CREATE',
'ResourceRecordSet' => array(
'Name' => OLD_CNAME,
'Type' => 'A',
'TTL' => NEW_TTL,
'ResourceRecords' => array(array(
'Value' => OLD_IP
)),
));
Других решений пока нет …