如何使用Java SDK 2在AWS Route 53中设置多个MX记录

时间:2019-10-26 01:57:06

标签: amazon-web-services amazon-route53 mx-record

我在Windows 10上将AWS Route 53 Java SDK 2 software.amazon.awssdk:software.amazon.awssdk:route53:2.8.3与OpenJDK 11配合使用。我想设置两个具有不同优先级的单独MX记录,例如

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

如果将它们设置为单独的资源记录,则最后一个将覆盖第一个,因此我只用20 smpt2.example.com结尾。我在AWS forum thread上读到,我需要将这些值组合到一个资源记录中,而每个MX记录都在单独的一行上,因此我尝试设置使用"\n"组合这些值(例如,将它们与换行符连接在一起)字符):

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

但是会产生错误:

  

…software.amazon.awssdk.services.route53.model.InvalidChangeBatchException:[无效的资源记录:致命问题:MXRRDATANotTwoFields(MX记录没有2个字段)在'10 smtp1.example.com中遇到。

     

20 smtp2.example.com。”](服务:Route53,状态代码:400,请求ID:...

(请注意,错误输出在新行上以20.smtp2.example.com开始,表明存在换行符。上面的Stack Overflow格式化程序正在删除换行符,因此我添加了额外的空白行来说明。实际的错误消息中没有出现此行。)

所以我被困住了。如何使用Java SDK 2在Route 53中设置两个具有不同优先级的MX域?

更新:这似乎是一个很大的阻止程序问题。当然,使用Java SDK 2不能肯定Route 53没有处理多个MX记录。它是否完全损坏了?到目前为止,我没有打开Issue #1484

1 个答案:

答案 0 :(得分:0)

我在使用Route 53 API模型时犯了一个错误,忘记了Route 53将单个名称的多个值分组并键入到资源记录集ResourceRecordSet类具有多个ResourceRecord,每个仅包含一个 value 。 “资源记录集”具有用作该集的键的名称+类型。换句话说,我必须将所有具有相同名称的值分组,并键入此ResourceRecordSet,然后在单个API调用中将它们设置在一起。

我之前的错误是我编写了在ResourceRecordSet中设置单个值的代码,然后试图多次调用该代码,这导致同一名称+值键的多个“集合” ,随后每个都会替换以前的。一旦意识到这一点,就必须重构代码以按名称+值对资源记录进行分组,并将所有值放入ResourceRecordSet中,并使用UPSERT同时设置所有值。