web-dev-qa-db-ja.com

Spring DocumentアプリケーションへのAWS documentDBのアタッチ

私は最近、新しいAWS DocumentDBサービスをSpringアプリケーションのDBとして使用してみました。

クラスターは、アプリケーションをデプロイするEKSと同じVPCに作成されています。セキュリティグループは、VPC内のすべてのノード間の接続を許可します。

AWSは、私のDBクラスターに対して次のようなmongo URIを公開します。

mongodb://<my-user>:<insertYourPassword>@<my-cluster-endpoint>:27017/?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0

私の質問:

この種の接続でSpringコードを機能させるにはどうすればよいですか?

Followigをapplication.propertiesファイルに追加してみました。

spring.data.mongodb.uri=mongodb://<my-user>:<insertYourPassword>@<my-cluster-endpoint>:27017/admin?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs00
spring.data.mongodb.database=admin
server.ssl.key-store=classpath:rds-combined-ca-bundle.pem

そして、PEMファイルを/src/main/resourcesに配置します

ただし、コードはDBクラスターへの接続に失敗します。

エラーとしてこのメ​​ッセージが表示されます:No server chosen by com.mongodb.client.internal.MongoClientDelegate

Exception in monitor thread while connecting to server ...が後に続く

そして最後にタイムアウト例外:com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

セキュリティグループの問題のように見えますが、Springアプリケーションポッドを実行している同じEC2からmongo Shellに接続しても問題ありません。

何か案は?

5
TheFooBarWay

単純な解決策は、AWSでTLS(SSL)オプションを削除してから、接続文字列から「ssl_ca_certs = rds-combined-ca-bundle.pem」を削除することです。ただし、アプリケーションでSSL DB接続が必要な場合は、 AWSガイド を使用できます。

0