Обновите TTL в существующем наборе записей ресурсов Route53

У меня есть несколько записей 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 вызов.

0

Решение

Либо обновите свой 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
)),
));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]