如何使用 Java SDK 2 在 AWS Route 53 中设置多个 MX 记录
How to set multiple MX records in AWS Route 53 using Java SDK 2
我在 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: [Invalid Resource Record: FATAL problem: MXRRDATANotTwoFields (MX record doesn't have 2 fields) encountered with '10 smtp1.example.com.
20 smtp2.example.com.'] (Service: Route53, Status Code: 400, Request ID: …
(注意,错误输出在新行开始 20.smtp2.example.com
,表示有一个换行符。上面的 Stack Overflow 格式化程序正在删除换行符,所以我添加了一个额外的空行来说明。空行并没有出现在实际的错误信息中。)
所以我卡住了。如何使用 Java SDK 2 在 Route 53 中设置两个具有不同优先级的 MX 域?
更新: 这似乎是一个相当大的阻塞问题。当然不可能是 Route 53 不使用 Java SDK 2 处理多个 MX
记录。它完全坏了吗?我打开 Issue #1484 到目前为止没有任何反应。
我在使用 Route 53 API 模型时犯了一个错误,忘记了 Route 53 将单个名称的多个值分组并键入 资源记录集 . ResourceRecordSet
class 有多个 ResourceRecord
,每个只包含一个 值 。 "resource record set" 有一个名称+类型,用作集合的键。换句话说,我必须将所有相同名称的值分组并键入此 ResourceRecordSet
,并在单个 API 调用中将它们设置在一起。
我之前的错误是我编写代码在 ResourceRecordSet
中设置单个值,然后我试图多次调用该代码,这导致相同的多个 "sets"名称+值键,其中的每一个随后都会替换之前的键。意识到这一点后,我不得不重构代码以按名称+值对资源记录进行分组,并将所有值放入 ResourceRecordSet
并使用 UPSERT
同时设置它们。
我在 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: [Invalid Resource Record: FATAL problem: MXRRDATANotTwoFields (MX record doesn't have 2 fields) encountered with '10 smtp1.example.com.
20 smtp2.example.com.'] (Service: Route53, Status Code: 400, Request ID: …
(注意,错误输出在新行开始 20.smtp2.example.com
,表示有一个换行符。上面的 Stack Overflow 格式化程序正在删除换行符,所以我添加了一个额外的空行来说明。空行并没有出现在实际的错误信息中。)
所以我卡住了。如何使用 Java SDK 2 在 Route 53 中设置两个具有不同优先级的 MX 域?
更新: 这似乎是一个相当大的阻塞问题。当然不可能是 Route 53 不使用 Java SDK 2 处理多个 MX
记录。它完全坏了吗?我打开 Issue #1484 到目前为止没有任何反应。
我在使用 Route 53 API 模型时犯了一个错误,忘记了 Route 53 将单个名称的多个值分组并键入 资源记录集 . ResourceRecordSet
class 有多个 ResourceRecord
,每个只包含一个 值 。 "resource record set" 有一个名称+类型,用作集合的键。换句话说,我必须将所有相同名称的值分组并键入此 ResourceRecordSet
,并在单个 API 调用中将它们设置在一起。
我之前的错误是我编写代码在 ResourceRecordSet
中设置单个值,然后我试图多次调用该代码,这导致相同的多个 "sets"名称+值键,其中的每一个随后都会替换之前的键。意识到这一点后,我不得不重构代码以按名称+值对资源记录进行分组,并将所有值放入 ResourceRecordSet
并使用 UPSERT
同时设置它们。