Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Herstellen einer Verbindung zu einer Neptune-DB-Instance über einen Java-Client
Der folgende Abschnitt führt Sie durch die Ausführung eines vollständigen Java-Beispiels, das eine Verbindung zu einer Neptune-DB-Instance herstellt und mithilfe des Apache Gremlin-Clients eine Gremlin-Traversal durchführt. TinkerPop
Diese Anweisungen müssen von einer EC2 Amazon-Instance aus in derselben Virtual Private Cloud (VPC) wie Ihre Neptune-DB-Instance befolgt werden.
Herstellen einer Verbindung mit Neptune über Java
-
Installieren Sie Apache Maven auf Ihrer Instance. EC2 Geben Sie zunächst Folgendes ein, um einen Repository mit einem Maven-Paket hinzuzufügen:
sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
Geben Sie Folgendes ein, um die Versionsnummer für die Pakete festzulegen:
sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
Verwenden Sie dann yum zum Installieren von Maven:
sudo yum install -y apache-maven
-
Installieren Sie Java. Die Gremlin-Bibliotheken erfordern Java 8 oder 11. Sie können Java 11 wie folgt installieren:
-
Wenn Sie Amazon Linux 2 (AL2)
verwenden: sudo amazon-linux-extras install java-openjdk11
-
Wenn Sie Amazon Linux 2023 (AL2023) verwenden:
sudo yum install java-11-amazon-corretto-devel
-
Verwenden Sie für andere Distributionen die jeweils zutreffende Anweisung:
sudo yum install java-11-openjdk-devel
oder:
sudo apt-get install openjdk-11-jdk
-
-
Legen Sie Java 11 als Standard-Runtime auf Ihrer EC2 Instance fest: Geben Sie Folgendes ein, um Java 8 als Standard-Runtime auf Ihrer EC2 Instance festzulegen:
sudo /usr/sbin/alternatives --config java
Geben Sie die Nummer für Java 11 ein, wenn Sie aufgefordert werden.
-
Erstellen Sie ein neues Verzeichnis mit dem Namen
gremlinjava
:mkdir gremlinjava cd gremlinjava
-
Erstellen Sie im Verzeichnis
gremlinjava
einepom.xml
-Datei und öffnen Sie diese in einem Text-Editor:nano pom.xml
-
Kopieren Sie Folgendes in die
pom.xml
-Datei und speichern Sie sie:<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>GremlinExample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>GremlinExample</name> <url>https://maven.apache.org</url> <dependencies> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-driver</artifactId> <version>
3.7.2
</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.tinkerpop/gremlin-groovy (Not needed for TinkerPop version 3.5.2 and up) <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-groovy</artifactId> <version>3.7.2</version> </dependency> --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.25</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3</version> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>com.amazonaws.App</argument> </arguments> <mainClass>com.amazonaws.App</mainClass> <complianceLevel>1.11</complianceLevel> <killAfter>-1</killAfter> </configuration> </plugin> </plugins> </build> </project>Anmerkung
Wenn Sie ein vorhandenes Maven-Projekt ändern, ist die erforderliche Abhängigkeit im vorhergehenden Code hervorgehoben.
-
Erstellen Sie Unterverzeichnisse für den Beispielquellcode (
src/main/java/com/amazonaws/
), indem Sie Folgendes in die Befehlszeile eingeben:mkdir -p
src/main/java/com/amazonaws/
-
Erstellen Sie im Verzeichnis
src/main/java/com/amazonaws/
eine Datei namensApp.java
und öffnen Sie diese dann in einem Text-Editor.nano
src/main/java/com/amazonaws/App.java
-
Kopieren Sie Folgendes in die
App.java
-Datei.your-neptune-endpoint
Ersetzen Sie durch die Adresse Ihrer Neptune-DB-Instance. Sie dürfen das Präfixhttps://
nicht in die MethodeaddContactPoint
einfügen.Anmerkung
Informationen zum Ermitteln des Hostnamens Ihrer Neptune-DB-Instance finden Sie in Verbinden mit Amazo-Neptune-Endpunkten.
package com.amazonaws; import org.apache.tinkerpop.gremlin.driver.Cluster; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.T; public class App { public static void main( String[] args ) { Cluster.Builder builder = Cluster.build(); builder.addContactPoint("
your-neptune-endpoint
"); builder.port(8182); builder.enableSsl(true); Cluster cluster = builder.create(); GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); // Add a vertex. // Note that a Gremlin terminal step, e.g. iterate(), is required to make a request to the remote server. // The full list of Gremlin terminal steps is at https://tinkerpop.apache.org/docs/current/reference/#terminal-steps g.addV("Person").property("Name", "Justin").iterate(); // Add a vertex with a user-supplied ID. g.addV("Custom Label").property(T.id, "CustomId1").property("name", "Custom id vertex 1").iterate(); g.addV("Custom Label").property(T.id, "CustomId2").property("name", "Custom id vertex 2").iterate(); g.addE("Edge Label").from(__.V("CustomId1")).to(__.V("CustomId2")).iterate(); // This gets the vertices, only. GraphTraversal t = g.V().limit(3).elementMap(); t.forEachRemaining( e -> System.out.println(t.toList()) ); cluster.close(); } }Hilfe beim Herstellen einer Verbindung zu Neptune mitSSL/TLS(was erforderlich ist) finden Sie unter. SSL/Konfiguration TLS
-
Nutzen Sie folgenden Maven-Befehl, um das Beispiel zu kompilieren und auszuführen:
mvn compile exec:exec
Das vorherige Beispiel gibt über die g.V().limit(3).elementMap()
-Traversierung eine Übersicht der Schlüssel und Werte der einzelnen Eigenschaften für die ersten beiden Knoten im Diagramm zurück. Um etwas anderes abzufragen, ersetzen Sie diese durch eine andere Gremlin-Traversierung mit einer der entsprechenden Ending-Methoden.
Anmerkung
Der letzte Teil der Gremlin-Abfrage, .toList()
, ist für die Übermittlung der Traversierung zur Auswertung an den Server erforderlich. Wenn Sie diese oder eine gleichwertige Methode nicht einschließen, wird die Abfrage nicht an die Neptune-DB-Instance übermittelt.
Sie müssen auch eine geeignete Endung anfügen, wenn Sie einen Eckpunkt oder eine Kante hinzufügen, wie beim Schritt addV( )
.
Die folgenden Methoden senden die Abfrage an die Neptune-DB-Instance:
toList()
toSet()
next()
nextTraverser()
iterate()
SSL/TLSKonfiguration für den Gremlin-Java-Client
Neptune erfordert, dassSSL/TLSstandardmäßig aktiviert ist. Wenn der Java-Treiber mit enableSsl(true)
konfiguriert ist, kann er in der Regel eine Verbindung mit Neptune herstellen, ohne einen trustStore()
oder keyStore()
mit der lokalen Kopie eines Zertifikats einrichten zu müssen. Frühere Versionen von TinkerPop ermutigten die Verwendung vonkeyCertChainFile()
, um eine lokal gespeicherte .pem
Datei zu konfigurieren, aber das war veraltet und ist nach 3.5.x nicht mehr verfügbar. Wenn Sie diese Einrichtung mit einem öffentlichen Zertifikat über SFSRootCAG2.pem
verwendet haben, können Sie die lokale Kopie jetzt entfernen.
Wenn die Instance, mit der Sie eine Verbindung herstellen, keine Internetverbindung hat, um ein öffentliches Zertifikat zu verifizieren, oder wenn das verwendete Zertifikat nicht öffentlich ist, können Sie zur Konfiguration einer lokalen Zertifikatkopie die folgenden Schritte ausführen:
Einrichtung einer lokalen Zertifikatkopie zur Aktivierung von/SSLTLS
-
Laden Sie keytool
von Oracle herunter und installieren Sie es. Dies vereinfacht die Einrichtung des lokalen Schlüsselspeichers erheblich. -
Laden Sie das
SFSRootCAG2.pem
CA-Zertifikat herunter (Gremlin Java SDK benötigt ein Zertifikat, um das Remote-Zertifikat zu verifizieren):wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
-
Erstellen Sie einen Schlüsselspeicher im Oder-Format. JKS PKCS12 Dieses Beispiel verwendet JKS. Beantworten Sie die Fragen an der Eingabeaufforderung. Das hier erstellte Passwort wird später benötigt:
keytool -genkey -alias
(host name)
-keyalg RSA -keystore server.jks -
Importieren Sie die heruntergeladene Datei
SFSRootCAG2.pem
in den neu erstellten Schlüsselspeicher:keytool -import -keystore server.jks -file .pem
-
Konfigurieren Sie das
Cluster
-Objekt programmgesteuert:Cluster cluster = Cluster.build("
(your neptune endpoint)
") .port(8182
) .enableSSL(true) .keyStore(‘server.jks’) .keyStorePassword("(the password from step 2)
") .create();Sie können dies auch in einer Konfigurationsdatei ausführen, wenn Sie möchten, wie im Fall der Gremlin-Konsole:
hosts: [
(your neptune endpoint)
] port:8182
connectionPool: { enableSsl: true, keyStore: server.jks, keyStorePassword:(the password from step 2)
} serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}