Gremlin コンソールをセットアップして Neptune DB インスタンスに接続する - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Gremlin コンソールをセットアップして Neptune DB インスタンスに接続する

Gremlin コンソールでは、 REPL (read-eval-print ループ) 環境で TinkerPop グラフとクエリを試すことができます。

Gremlin コンソールをインストールし、通常の方法で接続する

Gremlin Console を使用して、リモートグラフデータベースに接続できます。次のセクションでは、Neptune DB インスタンスにリモートで接続するための Gremlin Console のインストールと設定について説明します。Neptune DB EC2インスタンスと同じ仮想プライベートクラウド (VPC) の Amazon インスタンスから、これらの指示に従う必要があります。

SSL/TLS (必須) を使用して Neptune に接続する方法については、「」を参照してくださいSSL/TLS 設定

注記

Neptune DB クラスターでIAM認証を有効にしている場合は、ここに記載されている手順ではなく、「」の指示に従って Gremlin コンソール署名バージョン 4 で署名された Gremlin コンソールを使用して Neptune に接続するをインストールします。

Gremlin Console をインストールして Neptune に接続するには
  1. Gremlin Console バイナリには Java 8 または Java 11 が必要です。これらの手順は Java 11 の使用を前提としています。Java 11 は、次のようにEC2インスタンスにインストールできます。

    • Amazon Linux 2 (AL2) を使用している場合:

      sudo amazon-linux-extras install java-openjdk11
    • Amazon Linux 2023 (AL2023) を使用している場合:

      sudo yum install java-11-amazon-corretto-devel
    • 他のディストリビューションでは、以下のうち適切なものを使用してください。

      sudo yum install java-11-openjdk-devel

      または

      sudo apt-get install openjdk-11-jdk
  2. 以下を入力して、Java 11 をEC2インスタンスのデフォルトランタイムとして設定します。

    sudo /usr/sbin/alternatives --config java

    プロンプトが表示されたら、Java 11 の数を入力します。

  3. Apache ウェブサイトから該当するバージョンの Gremlin コンソールをダウンロードします。実行している Neptune バージョンのエンジンのリリースページをチェックし、サポートしている Gremlin バージョンを特定できます。例えば、バージョン 3.6.5 では、次のように Apache Tinkerpop3 ウェブサイトからインスタンスに Gremlin コンソールをダウンロードできますEC2。

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Gremlin Console zip ファイルを解凍します。

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. ディレクトリを解凍ディレクトリに変更します。

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. 抽出されたディレクトリにある conf サブディレクトリで、以下のテキストを含む neptune-remote.yaml という名前のファイルを作成します。置換 your-neptune-endpoint Neptune DB インスタンスのホスト名または IP アドレスを指定します。角括弧 ([ ]) が必要です。

    注記

    Neptune DB インスタンスのホスト名を見つける方法については、Amazon Neptune エンドポイントに接続する セクションを参照してください。

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
    注記

    バージョン 3.7.0 では、シリアライザーがgremlin-driverモジュールから新しいgremlin-utilモジュールに移動されました。パッケージが org.apache.tinkerpop.gremlin.driver.ser から org.apache.tinkerpop.gremlin.util.ser に変更されました。

  7. ターミナルで Gremlin コンソールディレクトリ (apache-tinkerpop-gremlin-console-3.6.5) に移動し、次のコマンドを入力して Gremlin コンソールを実行します。

    bin/gremlin.sh

    以下の出力が表示されます。

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    gremlin> プロンプトが表示されます。このプロンプトで残りのステップを入力します。

  8. gremlin> プロンプトで、次のように入力して Neptune DB インスタンスに接続します。

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. gremlin> プロンプトで、次のように入力してリモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。

    :remote console
  10. Gremlin グラフにクエリを送信するには、次のように入力します。

    g.V().limit(1)
  11. 完了したら、次のように入力して 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.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false } } connectionPool: { enableSsl: true }
注記

バージョン 3.7.0 では、シリアライザーがgremlin-driverモジュールから新しいgremlin-utilモジュールに移動されました。パッケージが org.apache.tinkerpop.gremlin.driver.ser から org.apache.tinkerpop.gremlin.util.ser に変更されました。

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() ステップを使用して、このような接続でファイルを読み込むこともできます。