Как установить несколько записей MX в AWS Route 53 с помощью Java SDK 2 - PullRequest
0 голосов
/ 26 октября 2019

Я использую AWS Route 53 Java SDK 2 software.amazon.awssdk:software.amazon.awssdk:route53:2.8.3 с OpenJDK 11 в Windows 10. Я хочу установить две отдельные записи MX с разными приоритетами, например,

  • 10 smpt1.example.com.
  • 20 smpt2.example.com.

Если я устанавливаю их как отдельные записи ресурсов, последняя переопределяет первую, так что я получаю только 20 smpt2.example.com. Я прочитал в ветке форума AWS , что мне нужно объединить значения в одну запись ресурса, с каждой записью MX в отдельной строке, поэтому я попытался настроить объединение значений с помощью "\n" (например, объединяя их ссимвол новой строки):

10 smpt1.example.com.
20 smpt2.example.com.

Однако это приводит к ошибке:

… software.amazon.awssdk.services.route53.model.InvalidChangeBatchException: [Неверная запись ресурса: FATALпроблема: MXRRDATANotTwoFields (запись MX не имеет 2 полей), обнаруженная с '10 smtp1.example.com.

20 smtp2.example.com. '] (Служба: Route53, код состояния: 400, идентификатор запроса:…

(Обратите внимание, что вывод ошибки начинается с 20.smtp2.example.com на новой строке, что указывает на наличие символа новой строки. Приведенный выше форматер Stack Overflow удалял символ новой строки, поэтому я добавил дополнительный пробелдля иллюстрации. Пустая строка не появляется в фактическом сообщении об ошибке.)

Так что я застрял. Как установить два домена MX с разными приоритетами в Route 53, используяJava SDK 2?

Обновление: Кажется, это довольно большая проблема с блокировщиками. Конечно, не может быть, чтобы Route 53 не обрабатывал несколько MX записей, используя Java SDK 2. Он полностью сломан? Я открыл Выпуск # 1484 , но ответов пока нет.

1 Ответ

0 голосов
/ 26 октября 2019

Я допустил ошибку при использовании модели API Route 53, забыв, что Route 53 группирует несколько значений для одного имени и вводит в набор записей ресурсов . Класс ResourceRecordSet имеет несколько ResourceRecord с, каждый из которых содержит только одно значение . «Набор записей ресурсов» имеет имя + тип, который служит ключом для набора. Другими словами, я должен сгруппировать все свои значения для одного и того же имени и типа в этот ResourceRecordSet и установить их вместе в одном вызове API.

Моя ошибка ранее заключалась в том, что я написал код для установкиодиночное значение в ResourceRecordSet, и затем я пытался вызвать этот код несколько раз, что приводит к нескольким «наборам» для одного и того же ключа имя + значение, каждый из которых впоследствии заменит предыдущие. Когда я понял это, мне пришлось провести рефакторинг кода, чтобы сгруппировать записи ресурсов по имени + значению и поместить все значения в ResourceRecordSet и использовать UPSERT для их одновременной установки.

...