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
Instruksi ini harus diikuti dari EC2 instans Amazon di cloud pribadi virtual (VPC) yang sama dengan instans DB Neptunus Anda.
Untuk menyambung ke Neptune menggunakan Java
-
Instal Apache Maven pada instans Anda. EC2 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
-
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
-
-
Setel Java 11 sebagai runtime default pada EC2 instance Anda: Masukkan yang berikut ini untuk menyetel Java 8 sebagai runtime default pada instance Anda EC2 :
sudo /usr/sbin/alternatives --config java
Saat diminta, masukkan nomor untuk Java 11.
-
Buat direktori baru bernama
gremlinjava
:mkdir gremlinjava cd gremlinjava
-
Di direktori
gremlinjava
, buat filepom.xml
, lalu buka file tersebut dalam editor teks:nano pom.xml
-
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.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>catatan
Jika Anda memodifikasi proyek Maven yang ada, dependensi yang diperlukan disorot dalam kode sebelumnya.
-
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/
-
Di direktori
src/main/java/com/amazonaws/
, buat file bernamaApp.java
, lalu buka file tersebut dalam editor teks.nano
src/main/java/com/amazonaws/App.java
-
Salin hal berikut ke dalam file
App.java
. Gantiyour-neptune-endpoint
dengan alamat instans DB Neptunus Anda. Jangan sertakan prefikshttps://
di metodeaddContactPoint
.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.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(); } }Untuk bantuan menghubungkan ke Neptunus dengan SSL/TLS (yang diperlukan), lihat. Konfigurasi SSL/TLS
-
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
-
Unduh dan instal keytool
dari Oracle. Ini akan membuat pengaturan toko kunci lokal jauh lebih mudah. -
Unduh sertifikat
SFSRootCAG2.pem
CA (Gremlin Java SDK memerlukan sertifikatuntuk memverifikasi sertifikat jarak jauh):wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
-
Buat toko kunci dalam JKS atau PKCS12 format. 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 -
Impor
SFSRootCAG2.pem
file yang Anda unduh ke toko kunci yang baru dibuat:keytool -import -keystore server.jks -file .pem
-
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.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}