从 Java 服务连接 Amazon documentDB 和 Amazon MQ

问题描述 投票:0回答:2

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

"-Djavax.net.ssl.trustStorePassword=*********","-Djavax.net.ssl.trustStore=/app/certs/truststore.jks",

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

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

我知道问题出在哪里了。当我部署服务时没有在 documentDB 的 docker 入口点中指定信任库条目,那么它会与 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 文件。

有人可以为此建议一些解决方案吗?

java ssl truststore aws-documentdb amazon-mq
2个回答
0
投票

最后,我通过将证书明确添加到与 AWS 服务建立连接所需的本地信任存储来解决了这个问题。


0
投票

为了能够使用 documentDB 和 Amazon MQ,您需要添加两个证书列表

  1. 文档数据库 - 按照此处的说明进行操作 - https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html
  2. 添加 Starfield 证书,您可以在此处找到链接 - https://www.amazontrust.com/repository/
© www.soinside.com 2019 - 2024. All rights reserved.