

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

# Gremlin コンソールをセットアップして Neptune DB インスタンスに接続する
<a name="access-graph-gremlin-console"></a>

Gremlin Console により、REPL (read-eval-print loop) 環境で TinkerPop グラフおよびクエリを試してみることができます。

## Gremlin コンソールをインストールし、通常の方法で接続する
<a name="access-graph-gremlin-console-usual-connect"></a>

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

SSL/TLS (必須) で Neptune に接続する方法については、「[SSL/TLS 設定](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl)」を参照してください。

**注記**  
[IAM 認証の有効化](iam-auth-enable.md)を Neptune DB クラスターで行った場合、ここでの手順ではなく [Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-console.md) の手順に従い、Gremlin Console をインストールします。

**Gremlin Console をインストールして Neptune に接続するには**

1. Gremlin Console バイナリには Java 8 または Java 11 が必要です。これらの手順は Java 11 の使用を前提としています。次のように EC2 インスタンスに Java 11 をインストールできます。
   + [Amazon Linux 2 (AL2)](https://aws.amazon.com/amazon-linux-2) を使用している場合:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + [Amazon Linux 2023 (AL2023)](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html) を使用している場合:

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

     ```
     sudo yum install java-11-openjdk-devel
     ```

     または

     ```
     sudo apt-get install openjdk-11-jdk
     ```

1. 次のように入力して、EC2 インスタンスで Java 11 をデフォルトのランタイムとして設定します。

   ```
   sudo /usr/sbin/alternatives --config java
   ```

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

1. Apache ウェブサイトから適切なバージョンの Gremlin コンソールをダウンロードします。Neptune のバージョンでサポートされている [Gremlin を使用した Neptune グラフへのアクセス](access-graph-gremlin.md) Gremlin バージョンを確認できます。たとえば、バージョン 3.7.2 が必要な場合は、[次のように Apache Tinkerpop](https://tinkerpop.apache.org/download.html) ウェブサイトから EC2 インスタンスに [Gremlin コンソール](https://archive.apache.org/dist/tinkerpop/3.7.2/apache-tinkerpop-gremlin-console-3.7.2-bin.zip)をダウンロードできます。

   ```
   wget https://archive.apache.org/dist/tinkerpop/3.7.2/apache-tinkerpop-gremlin-console-3.7.2-bin.zip
   ```

1. Gremlin Console zip ファイルを解凍します。

   ```
   unzip apache-tinkerpop-gremlin-console-3.7.2-bin.zip
   ```

1. ディレクトリを解凍ディレクトリに変更します。

   ```
   cd apache-tinkerpop-gremlin-console-3.7.2
   ```

1. 抽出されたディレクトリにある `conf` サブディレクトリで、以下のテキストを含む `neptune-remote.yaml` という名前のファイルを作成します。*your-neptune-endpoint*を Neptune DB インスタンスのホスト名または IP アドレスで置き換えます。角括弧 (`[ ]`) が必要です。
**注記**  
Neptune DB インスタンスのホスト名を見つける方法については、[Amazon Neptune エンドポイントに接続する](feature-overview-endpoints.md) セクションを参照してください。

   ```
   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 に変更されました。

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

   ```
   bin/gremlin.sh
   ```

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

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

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

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

   ```
   :remote connect tinkerpop.server conf/neptune-remote.yaml
   ```

1. `gremlin>` プロンプトで、次のように入力してリモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。

   ```
   :remote console
   ```

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

   ```
   g.V().limit(1)
   ```

1. 完了したら、次のように入力して Gremlin コンソールを終了します。

   ```
   :exit
   ```

**注記**  
各ステートメントを区切るには、セミコロン (`;`) または改行文字 (`\n`) を使用します。  
最終的なトラバーサルに先行する各トラバーサルは、`next()` を実行して終わる必要があります。最終的なトラバーサルからのデータのみが返されます。

Gremlin の Neptune 実装の詳細については、[Amazon Neptune の Gremlin 標準への準拠](access-graph-gremlin-differences.md)を参照してください。

# Gremlin コンソールに接続する別の方法
<a name="access-graph-gremlin-console-connect"></a>

**通常の接続方法の欠点**

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
```

[https://tinkerpop.apache.org/docs/current/reference/#io-step](https://tinkerpop.apache.org/docs/current/reference/#io-step) ステップを使用して、このような接続でファイルを読み込むこともできます。

## IAM 認証
<a name="access-graph-gremlin-console-iam"></a>

Neptune は、DB クラスターへのアクセスを制御するための [IAM 認証](iam-auth-enable.md)をサポートしています。IAM 認証が有効になっている場合は、署名バージョン 4 の署名を使用してリクエストを認証する必要があります。Gremlin コンソールから接続するための詳細な手順とコード例については、「」を参照してください[Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続](iam-auth-connecting-gremlin-console.md)。