Configuration de la console Gremlin pour se connecter à une instance de base de données Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration de la console Gremlin pour se connecter à une instance de base de données Neptune

La console Gkremlin vous permet d'expérimenter avec TinkerPop des graphes et des requêtes dans un environnement REPL (read-eval-print boucle).

Installation de la console Gremlin et mode de connexion habituel

Vous pouvez utiliser la console Gremlin pour vous connecter à une base de données distante orientée graphe. La section suivante vous guide dans l’installation et la configuration de la console Gremlin pour une connexion à distance à une instance de base de données Neptune. Vous devez suivre ces instructions à partir d'une instance Amazon EC2 dans le même cloud privé virtuel (VPC) (VPC) que l'instance de base de données Neptune.

Pour obtenir de l'aide sur la connexion à Neptune via SSL/TLS (obligatoire), consultez Configuration SSL/TLS.

Note

Si l'authentification IAM est activée sur votre cluster de bases de données Neptune, suivez les instructions décrites dans Connexion à Neptune à l'aide de la console Gremlin avec la signature Signature Version 4 pour installer la console Gremlin plutôt que celles indiquées ici.

Pour installer la console Gremlin et vous connecter à Neptune
  1. Les fichiers binaires de la console Gremlin nécessitent Java 8 ou Java 11. Ces instructions supposent l'utilisation de Java 11. Vous pouvez installer Java 11 sur une instance EC2 comme suit :

    • Si vous utilisez Amazon Linux 2 (AL2) :

      sudo amazon-linux-extras install java-openjdk11
    • Si vous utilisez Amazon Linux 2023 (AL2023) :

      sudo yum install java-11-amazon-corretto-devel
    • Pour les autres distributions, utilisez l'instruction qui convient le mieux parmi les suivantes :

      sudo yum install java-11-openjdk-devel

      ou :

      sudo apt-get install openjdk-11-jdk
  2. Entrez la commande suivante pour définir Java 8 en tant qu'environnement d'exécution par défaut sur votre instance EC2.

    sudo /usr/sbin/alternatives --config java

    Lorsque vous y êtes invité, saisissez le nombre correspondant à Java 11.

  3. Téléchargez la version appropriée de la console Gremlin à partir du site web Apache. Consultez la page de mises à jour de la version de moteur Neptune que vous utilisez actuellement pour déterminer quelle version de Gremlin elle prend en charge. Par exemple, pour la version 3.6.5, vous pouvez télécharger la console Gremlin depuis le site web Apache Tinkerpop3 sur votre instance EC2 comme suit :

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Décompressez le fichier zip Gremlin Console.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. Modifiez les répertoires du répertoire décompressé.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. Dans le sous-répertoire conf du répertoire extrait, créez un fichier nommé neptune-remote.yaml avec le texte suivant. your-neptune-endpointRemplacez-le par le nom d'hôte ou l'adresse IP de votre instance de base de données Neptune. Les crochets ([ ]) sont obligatoires.

    Note

    Consultez la section Connexion aux points de terminaison Amazon Neptune pour découvrir comment trouver le nom d'hôte de votre instance de base de données Neptune.

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
  7. Dans un terminal, accédez au répertoire Gremlin Console (apache-tinkerpop-gremlin-console-3.6.5), puis entrez la commande suivante pour exécuter la console Gremlin.

    bin/gremlin.sh

    Vous devriez voir la sortie suivante :

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    Vous êtes maintenant à l'invite gremlin>. Vous entrez les étapes restantes à cette invite.

  8. À l'invite de commande gremlin>, saisissez le texte suivant pour vous connecter à l'instance de base de données Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. À l'invite gremlin>, entrez ce qui suit pour passer en mode distant. Toutes les requêtes Gremlin sont alors envoyées à la connexion distante.

    :remote console
  10. Saisissez la commande suivante pour envoyer une requête au graphe Gremlin.

    g.V().limit(1)
  11. Lorsque vous avez terminé, saisissez la commande suivante pour quitter la console Gremlin.

    :exit
Note

Utilisez un point-virgule (;) ou un caractère de saut de ligne (\n) pour séparer chaque instruction.

Chaque traversée précédant la traversée finale doit se terminer par l'exécution de next(). Seules les données de la traversée finale sont renvoyées.

Pour plus d'informations sur l'implémentation Neptune de Gremlin, consultez Conformité d'Amazon Neptune avec les normes Gremlin.

Autre mode de connexion à la console Gremlin

Inconvénients de l'approche de connexion habituelle

La méthode la plus courante pour se connecter à la console Gremlin est expliquée ci-dessus et utilise des commandes comme celle-ci à l'invite gremlin> :

gremlin> :remote connect tinkerpop.server conf/(file name).yaml gremlin> :remote console

Elle est opérationnelle et vous permet d'envoyer des requêtes à Neptune. Cependant, elle exclut le moteur de script Groovy, de sorte que Neptune traite toutes les requêtes comme si elles étaient entièrement écrites dans Gremlin. Par conséquent, les types de requête suivants échouent :

gremlin> 1 + 1 gremlin> x = g.V().count()

Le meilleur moyen d'utiliser une variable lorsque vous êtes connecté de cette façon consiste à utiliser la variable result gérée par la console et d'envoyer la requête en utilisant :>, comme ceci :

gremlin> :remote console ==>All scripts will now be evaluated locally - type ':remote console' to return to remote mode for Gremlin Server - [krl-1-cluster.cluster-ro-cm9t6tfwbtsr.us-east-1.neptune.amazonaws.com/172.31.19.217:8182] gremlin> :> g.V().count() ==>4249 gremlin> println(result) [result{object=4249 class=java.lang.Long}] gremlin> println(result['object']) [4249]

 

Autre mode de connexion

Vous pouvez également vous connecter à la console Gremlin d'une autre manière, que vous trouverez peut-être plus agréable, comme ceci :

gremlin> g = traversal().withRemote('conf/neptune.properties')

neptune.properties prend ici la forme suivante :

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection gremlin.remote.driver.clusterFile=conf/my-cluster.yaml gremlin.remote.driver.sourceName=g

Le fichier my-cluster.yaml doit ressembler à ceci :

hosts: [my-cluster-abcdefghijk.us-east-1.neptune.amazonaws.com] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false } } connectionPool: { enableSsl: true }

En configurant ainsi la connexion à la console Gremlin, vous pouvez effectuer avec succès les types de requêtes suivants :

gremlin> 1+1 ==>2 gremlin> x=g.V().count().next() ==>4249 gremlin> println("The answer was ${x}") The answer was 4249

Pour éviter d'afficher le résultat, procédez comme suit :

gremlin> x=g.V().count().next();[] gremlin> println(x) 4249

Toutes les méthodes habituelles d'interrogation (sans l'étape terminale) continuent de fonctionner. Par exemple :

gremlin> g.V().count() ==>4249

Vous pouvez même utiliser l'étape g.io().read() pour charger un fichier avec ce type de connexion.