翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Gremlin コンソールをセットアップして Neptune DB インスタンスに接続する
Gremlin Console により、REPL (read-eval-print loop) TinkerPop 環境でグラフやクエリを試してみることができます。
Gremlinコンソールをインストールして通常の方法で接続する
Gremlin Console を使用して、リモートグラフデータベースに接続できます。次のセクションでは、Neptune DB インスタンスにリモートで接続するための Gremlin Console のインストールと設定について説明します。Neptune DB インスタンスと同じ仮想プライベートクラウド (VPC) の Amazon EC2 インスタンスからこれらの手順を実行してください。
SSL/TLS で Neptune に接続する方法 (必須) については、を参照してくださいSSL コンフィギュレーション。
IAM 認証の有効化を Neptune DB クラスターで行った場合、ここでの手順ではなく 署名バージョン 4 で署名された Gremlin コンソールを使用して Neptune に接続する の手順に従い、Gremlin Console をインストールします。
Gremlin Console をインストールして Neptune に接続するには
-
Gremlin Console バイナリには Java 8 または Java 11 が必要です。以下の手順は Java 11 の使用を前提としています。以下のように EC2 インスタンスに Java 11 をインストールできます。
-
sudo amazon-linux-extras install java-openjdk11
-
他のディストリビューションには、次のうち適切なものを使用してください。
sudo yum install java-11-openjdk-devel
または
sudo apt-get install openjdk-11-jdk
-
-
以下を入力して、Java 11 を EC2 インスタンスのデフォルトランタイムとして設定します。
sudo /usr/sbin/alternatives --config java
プロンプトが表示されたら、Java 11 の番号を入力します。
-
Apache ウェブサイトから該当するバージョンの Gremlin コンソールをダウンロードします。実行している Neptune バージョンのエンジンのリリースページをチェックし、サポートしている Gremlin バージョンを特定できます。たとえば、バージョン 3.5.5 では、次のように Apache TinkerP3
Web サイトから Gremlin コンソールを EC2 インスタンスにダウンロードできます。 wget https://archive.apache.org/dist/tinkerpop/3.5.5/apache-tinkerpop-gremlin-console-3.5.5-bin.zip
-
Gremlin Console zip ファイルを解凍します。
unzip apache-tinkerpop-gremlin-console-3.5.5-bin.zip
-
ディレクトリを解凍ディレクトリに変更します。
cd apache-tinkerpop-gremlin-console-3.5.5
-
抽出されたディレクトリにある
conf
サブディレクトリで、以下のテキストを含むneptune-remote.yaml
という名前のファイルを作成します。を Neptune DB インスタンスのホスト名または IPyour-neptune-endpoint
アドレスで置き換えます。角括弧 ([ ]
) が必要です。注記 Neptune DB インスタンスのホスト名を見つける方法については、Amazon Neptune エンドポイントに接続する セクションを参照してください。
hosts: [
your-neptune-endpoint
] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }} -
ターミナルで Gremlin コンソールディレクトリ (
apache-tinkerpop-gremlin-console-3.5.5
) に移動し、次のコマンドを入力して Gremlin コンソールを実行します。bin/gremlin.sh
以下の出力が表示されます。
\,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>
gremlin>
プロンプトが表示されます。このプロンプトで残りのステップを入力します。 -
gremlin>
プロンプトで、次のように入力して Neptune DB インスタンスに接続します。:remote connect tinkerpop.server conf/neptune-remote.yaml
-
gremlin>
プロンプトで、次のように入力してリモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。:remote console
-
Gremlin グラフにクエリを送信するには、次のように入力します。
g.V().limit(1)
-
完了したら、次のように入力して Gremlin コンソールを終了します。
:exit
各ステートメントを区切るには、セミコロン (;
) または改行文字 (\n
) を使用します。
最終的なトラバーサルに先行する各トラバーサルは、next()
を実行して終わる必要があります。最終的なトラバーサルからのデータのみが返されます。
Gremlin の Neptune 実装の詳細については、Amazon Neptune の Gremlin 標準への準拠を参照してください。
Gremlin コンソールに接続する別の方法
通常の接続方法の欠点
Gremlin コンソールに接続する最も一般的な方法は、gremlin>
上記で説明したプロンプトで次のようなコマンドを使用する方法です。
gremlin> :remote connect tinkerpop.server conf/
(file name)
.yaml gremlin> :remote console
これはうまく機能し、Neptune にクエリを送信できます。ただし、これでは Groovy スクリプトエンジンがループから外れるため、Neptune はすべてのクエリを純粋な Gremlin として扱います。つまり、次のクエリフォームは失敗します。
gremlin> 1 + 1 gremlin> x = g.V().count()
この方法で接続したときに変数を使うのに一番近いのは、result
コンソールで管理されている変数を使い:>
、次のようにしてクエリを送信することです。
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]
別の接続方法
また、Gremlin コンソールには別の方法で接続することもできますが、以下のようにするとよいでしょう。
gremlin> g = traversal().withRemote('conf/neptune.properties')
neptune.properties
次の形式を次に示します。
gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection gremlin.remote.driver.clusterFile=conf/my-cluster.yaml gremlin.remote.driver.sourceName=g
my-cluster.yaml
ファイルは以下のようになります。
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 }
Gremlin コンソール接続をこのように設定すると、次の種類のクエリを正常に実行できます。
gremlin> 1+1 ==>2 gremlin> x=g.V().count().next() ==>4249 gremlin> println("The answer was ${x}") The answer was 4249
次のように、結果の表示を避けることができます。
gremlin> x=g.V().count().next();[] gremlin> println(x) 4249
(ターミナルステップなしで)通常のクエリ方法はすべて引き続き機能します。例:
gremlin> g.V().count() ==>4249
g.io().read()