我在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。
答案 0 :(得分:0)
我在使用Route 53 API模型时犯了一个错误,忘记了Route 53将单个名称的多个值分组并键入到资源记录集。 ResourceRecordSet
类具有多个ResourceRecord
,每个仅包含一个 value 。 “资源记录集”具有用作该集的键的名称+类型。换句话说,我必须将所有具有相同名称的值分组,并键入此ResourceRecordSet
,然后在单个API调用中将它们设置在一起。
我之前的错误是我编写了在ResourceRecordSet
中设置单个值的代码,然后试图多次调用该代码,这导致同一名称+值键的多个“集合” ,随后每个都会替换以前的。一旦意识到这一点,就必须重构代码以按名称+值对资源记录进行分组,并将所有值放入ResourceRecordSet
中,并使用UPSERT
同时设置所有值。>