web-dev-qa-db-fra.com

Attacher AWS documentDB à l'application Spring Boot

J'ai récemment essayé d'utiliser le nouveau service AWS DocumentDB comme base de données dans une application Spring.

Le cluster a été créé dans le même VPC que l'EKS sur lequel je déploie mon application. Les groupes de sécurité autorisent les connexions entre tous les nœuds du VPC.

AWS expose un URI mongo comme celui-ci pour mon cluster DB:

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

Ma question:

Comment faire fonctionner mon code Spring avec ce type de connexion?

J'ai essayé d'ajouter le suivi à mon application.properties fichier:

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

Et en plaçant le fichier PEM dans /src/main/resources

Cependant, le code ne parvient toujours pas à se connecter au cluster DB.

Je reçois ce message comme une erreur: No server chosen by com.mongodb.client.internal.MongoClientDelegate

Suivi d'un Exception in monitor thread while connecting to server ...

Et enfin une exception de timeout: com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

Cela ressemble un peu à un problème de groupe de sécurité, mais je n'ai aucun problème à me connecter avec mongo Shell à partir du même EC2 exécutant le pod d'application Spring.

Des idées?

5
TheFooBarWay

La solution simple est que vous pouvez supprimer l'option TLS (SSL) dans AWS, puis vous pouvez supprimer le "ssl_ca_certs = rds-combine-ca-bundle.pem" de votre chaîne de connexion. Mais si l'application nécessite la connectivité SSL DB, vous pouvez utiliser le AWS Guide

0
Chamara Maduranga