Menggunakan klien Java untuk terhubung ke instance DB Neptunus - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan klien Java untuk terhubung ke instance DB Neptunus

Bagian berikut memandu Anda melalui menjalankan sampel Java lengkap yang terhubung ke instance DB Neptunus dan melakukan traversal Gremlin menggunakan klien Apache Gremlin. TinkerPop

Anda harus mengikuti petunjuk ini dari instans Amazon EC2 di virtual private cloud (VPC) yang sama seperti instans DB Neptune Anda.

Untuk menyambung ke Neptune menggunakan Java
  1. Instal Apache Maven pada instans EC2 Anda. Pertama, masukkan hal berikut untuk menambahkan repositori dengan paket Maven:

    sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

    Masukkan rangkaian nomor versi berikut untuk paket:

    sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

    Kemudian gunakan yum untuk menginstal Maven:

    sudo yum install -y apache-maven
  2. Instal Java. Perpustakaan Gremlin membutuhkan Java 8 atau 11. Anda dapat menginstal Java 11 sebagai berikut:

    • Jika Anda menggunakan Amazon Linux 2 (AL2):

      sudo amazon-linux-extras install java-openjdk11
    • Jika Anda menggunakan Amazon Linux 2023 (AL2023):

      sudo yum install java-11-amazon-corretto-devel
    • Untuk distribusi lain, gunakan salah satu dari berikut ini yang sesuai:

      sudo yum install java-11-openjdk-devel

      atau:

      sudo apt-get install openjdk-11-jdk
  3. Setel Java 11 sebagai runtime default pada instans EC2 Anda: Masukkan yang berikut ini untuk menetapkan Java 8 sebagai runtime default pada instans EC2 Anda:

    sudo /usr/sbin/alternatives --config java

    Saat diminta, masukkan nomor untuk Java 11.

  4. Buat direktori baru bernamagremlinjava:

    mkdir gremlinjava cd gremlinjava
  5. Di direktori gremlinjava, buat file pom.xml, lalu buka file tersebut dalam editor teks:

    nano pom.xml
  6. Salin JSON berikut ke dalam file pom.xml dan simpan filenya:

    <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.6.5</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.6.5</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>
    catatan

    Jika Anda memodifikasi proyek Maven yang ada, dependensi yang diperlukan disorot dalam kode sebelumnya.

  7. Buat subdirektori untuk kode sumber contoh (src/main/java/com/amazonaws/) dengan mengetik teks berikut pada baris perintah:

    mkdir -p src/main/java/com/amazonaws/
  8. Di direktori src/main/java/com/amazonaws/, buat file bernama App.java, lalu buka file tersebut dalam editor teks.

    nano src/main/java/com/amazonaws/App.java
  9. Salin hal berikut ke dalam file App.java. Ganti your-neptune-endpointdengan alamat instans DB Neptunus Anda. Jangan sertakan prefiks https:// di metode addContactPoint.

    catatan

    Untuk informasi tentang menemukan nama host instans DB Neptune Anda, lihat Menghubungkan ke Titik Akhir Amazon Neptune..

    package com.amazonaws; import org.apache.tinkerpop.gremlin.driver.Cluster; import org.apache.tinkerpop.gremlin.driver.Client; 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.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(); } }

    Untuk bantuan menghubungkan ke Neptunus dengan SSL/TLS (yang diperlukan), lihat. Konfigurasi SSL/TLS

  10. Kompilasikan dan jalankan sampel menggunakan perintah Maven berikut:

    mvn compile exec:exec

Contoh sebelumnya mengembalikan peta kunci dan nilai-nilai masing-masing properti untuk dua vertex pertama dalam grafik menggunakan traversal g.V().limit(3).elementMap(). Untuk mengajukan kueri untuk sesuatu yang lain, ganti dengan traversal Gremlin lain dengan salah satu metode ending yang tepat.

catatan

Bagian akhir dari kueri Gremlin, .toList(), diperlukan untuk mengirimkan traversal ke server untuk evaluasi. Jika Anda tidak menyertakan metode tersebut atau metode setara lain, kueri tidak diserahkan ke instans DB Neptune.

Anda juga harus menambahkan ending yang tepat ketika Anda menambahkan sebuah vertex atau edge, seperti ketika Anda menggunakan langkah addV( ).

Metode berikut mengirimkan kueri ke instans DB Neptune:

  • toList()

  • toSet()

  • next()

  • nextTraverser()

  • iterate()

Konfigurasi SSL/TLS untuk klien Gremlin Java

Neptunus membutuhkan SSL/TLS untuk diaktifkan secara default. Biasanya, jika driver Java dikonfigurasi denganenableSsl(true), ia dapat terhubung ke Neptunus tanpa harus mengatur keyStore() atau trustStore() dengan salinan lokal sertifikat. Versi sebelumnya dari penggunaan yang TinkerPop dianjurkan keyCertChainFile() untuk mengkonfigurasi .pem file yang disimpan secara lokal, tetapi itu telah usang dan tidak lagi tersedia setelah 3.5.x. Jika Anda menggunakan pengaturan itu dengan sertifikat publik, menggunakanSFSRootCAG2.pem, Anda sekarang dapat menghapus salinan lokal.

Namun, jika instans yang Anda sambungkan tidak memiliki koneksi internet untuk memverifikasi sertifikat publik, atau jika sertifikat yang Anda gunakan tidak bersifat publik, Anda dapat mengambil langkah-langkah berikut untuk mengonfigurasi salinan sertifikat lokal:

Menyiapkan salinan sertifikat lokal untuk mengaktifkan SSL/TLS
  1. Unduh dan instal keytool dari Oracle. Ini akan membuat pengaturan toko kunci lokal jauh lebih mudah.

  2. Unduh sertifikat SFSRootCAG2.pem CA (Gremlin Java SDK memerlukan sertifikatuntuk memverifikasi sertifikat jarak jauh):

    wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
  3. Buat toko kunci dalam format JKS atau PKCS12. Contoh ini menggunakan JKS. Jawab pertanyaan-pertanyaan yang mengikuti pada prompt. Kata sandi yang Anda buat di sini akan dibutuhkan nanti:

    keytool -genkey -alias (host name) -keyalg RSA -keystore server.jks
  4. Impor SFSRootCAG2.pem file yang Anda unduh ke toko kunci yang baru dibuat:

    keytool -import -keystore server.jks -file .pem
  5. Konfigurasikan Cluster objek secara terprogram:

    Cluster cluster = Cluster.build("(your neptune endpoint)") .port(8182) .enableSSL(true) .keyStore(‘server.jks’) .keyStorePassword("(the password from step 2)") .create();

    Anda dapat melakukan hal yang sama dalam file konfigurasi jika Anda mau, seperti yang mungkin Anda lakukan dengan konsol Gremlin:

    hosts: [(your neptune endpoint)] port: 8182 connectionPool: { enableSsl: true, keyStore: server.jks, keyStorePassword: (the password from step 2) } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}