从 Java 服务连接 Amazon documentDB 和 Amazon MQ

问题描述

我的用例是连接 amazon documentDB 以读取更改流并将更改流事件从同一服务发送到 amazon MQ,然后在 EKS 集群上部署它。在读取 rds-combined-ca-bundle.pem 中指定的密钥并通过 docker 入口点中的以下条目将其导入本地信任库后,我能够与 documentDB 连接:

#{title}

与documentDB建立连接并读取更改流后(每当集合中有插入,替换或删除时),我尝试通过openwire协议将更改流事件发送到amazon MQ,当我尝试创建连接时使用 Amazon MQ 文档中指定的 MQ,我收到异常

无法建立与 ssl://X-XXXXXXX-XXX-XXX-XXX-XXXXXX-1.mq.us-east-1.amazonaws.com:61617 由于 PKIX javax.net.ssl.sslhandshakeexception

我知道问题出在哪里。当我在没有在 docker 入口点为 documentDB 指定信任库条目的情况下部署我的服务时,它会与 MQ 连接,我也可以将模拟事件发送到 MQ,但是当我指定信任库时,使用 documentDB 服务也会在信任库中查找 MQ 的证书这实际上不是 MQ 所必需的,因为它由 AWS 管理。我们不需要为 Amazon MQ 指定信任库和密钥库。

我的问题是如何从同一服务连接 Amazon documentDB 和 Amazon MQ?我的要求是从 documentDB 读取更改流事件并将其从同一服务发送到 amazon MQ。我正在使用一个简单的 java 服务,但如果有一些具体的解决方案可用,则打开以将其转换为 Spring Boot。

我尝试为 MQ 搜索任何 pem 文件,我可以像 documentDB 一样使用它,但正如我之前提到的,Amazon MQ 是 Active MQ 的托管服务,因此没有可用的 pem 文件

有人可以为此提出一些解决方案吗?

解决方法

最后,我通过将证书显式添加到与 AWS 服务建立连接所需的本地信任存储中来解决此问题。