Connexion à Neptune à l'aide de Java et Gremlin avec la signature Signature Version 4 - 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.

Connexion à Neptune à l'aide de Java et Gremlin avec la signature Signature Version 4

Utilisation de la TinkerPop version 3.4.11 ou supérieure pour se connecter à Neptune avec la signature Sig4

Voici un exemple de connexion à Neptune à l'aide de l'API Java Gremlin avec signature Sig4 lorsque vous utilisez la version TinkerPop 3.4.11 ou une version ultérieure (cela suppose des connaissances générales sur l'utilisation de Maven). Définissez d'abord les dépendances dans le cadre du fichier pom.xml :

<dependency> <groupId>com.amazonaws</groupId> <artifactId>amazon-neptune-sigv4-signer</artifactId> <version>2.4.0</version> </dependency>

Utilisez ensuite du code tel que le suivant :

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer; import com.amazonaws.neptune.auth.NeptuneSigV4SignerException; ... System.setProperty("aws.accessKeyId","your-access-key"); System.setProperty("aws.secretKey","your-secret-key"); ... Cluster = Cluster.build((your cluster name)) .enableSsl(true) .handshakeInterceptor( r -> { try { NeptuneNettyHttpSigV4Signer sigV4Signer = new NeptuneNettyHttpSigV4Signer("(your region)", new DefaultAWSCredentialsProviderChain()); sigV4Signer.signRequest(r); } catch (NeptuneSigV4SignerException e) { throw new RuntimeException("Exception occurred while signing the request", e); } return r; } ).create(); try { Client client = cluster.connect(); client.submit("g.V().has('code','IAD')").all().get(); } catch (Exception e) { throw new RuntimeException("Exception occurred while connecting to cluster", e); }
Note

Si vous effectuez une mise à niveau depuis la version 3.4.11, supprimez les références à la bibliothèque amazon-neptune-gremlin-java-sigv4. Elle n'est plus nécessaire lors de l'utilisation de handshakeInterceptor(), comme indiqué dans l'exemple ci-dessus. N'essayez pas d'utiliser handshakeInterceptor() en conjonction avec channelizer (SigV4WebSocketChannelizer.class), car des erreurs seraient générées.

Utilisation d'une version TinkerPop antérieure à 3.4.11 pour se connecter à Neptune avec la signature Sig4

TinkerPop les versions antérieures 3.4.11 ne prenaient pas en charge la handshakeInterceptor() configuration présentée dans la section précédente et devaient donc s'appuyer sur le amazon-neptune-gremlin-java-sigv4 package. Il s'agit d'une bibliothèque Neptune qui contient la SigV4WebSocketChannelizer classe, qui remplace le TinkerPop Channelizer standard par un autre capable d'injecter automatiquement une signature SigV4. Dans la mesure du possible, passez à la TinkerPop version 3.4.11 ou supérieure, car la amazon-neptune-gremlin-java-sigv4 bibliothèque est obsolète.

Voici un exemple de connexion à Neptune à l'aide de l'API Java Gremlin avec signature Sig4 lorsque vous utilisez des TinkerPop versions antérieures à 3.4.11 (cela suppose des connaissances générales sur l'utilisation de Maven).

Définissez d'abord les dépendances dans le cadre du fichier pom.xml :

<dependency> <groupId>com.amazonaws</groupId> <artifactId>amazon-neptune-gremlin-java-sigv4</artifactId> <version>2.4.0</version> </dependency>

La dépendance ci-dessus inclut la version 3.4.10 du pilote Gremlin. Bien qu'il soit possible d'utiliser des versions plus récentes du pilote Gremlin (jusqu'à la version 3.4.13), toute mise à niveau du pilote après la version 3.4.10 devrait inclure une modification visant à utiliser le modèle handshakeInterceptor() décrit ci-dessus.

L'objet cluster gremlin-driver doit ensuite être configuré comme suit dans le code Java :

import org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer; ... Cluster cluster = Cluster.build(your cluster) .enableSsl(true) .channelizer(SigV4WebSocketChannelizer.class) .create(); Client client = cluster.connect(); client.submit("g.V().has('code','IAD')").all().get();