

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

# Go を使用して Neptune DB インスタンスに接続する
<a name="access-graph-gremlin-go"></a>

**重要**  
Neptune エンジンバージョンとの互換性を保つには、正しい Apache TinkerPop Gremlin ドライバーバージョンを選択することが不可欠です。互換性のないバージョンを使用すると、接続の失敗や予期しない動作が発生する可能性があります。バージョンの互換性の詳細については、「」を参照してください[Gremlin を使用した Neptune グラフへのアクセス](access-graph-gremlin.md)。

**注記**  
gremlingo 3.5.x バージョンは TinkerPop 3.4.x バージョンと下位互換性があります。ただし、記述する Gremlin クエリで 3.4.x の機能のみを使用する場合に限ります。

次のセクションでは、Amazon Neptune DB インスタンスに接続して、Gremlin トラバーサルを実行する Go サンプルの実行方法について説明します。

Neptune DB インスタンスと同じ仮想プライベートクラウド (VPC) の Amazon EC2 インスタンスからこれらの手順を実行してください。

開始する前に、以下を実行します。
+ [go.dev](https://go.dev/dl/) ウェブサイトから Go 1.17 以降をダウンロードしてインストールします。

**Go を使用して Neptune に接続するには**

1. 空のディレクトリから始めて、新しい Go モジュールを初期化します。

   ```
   go mod init example.com/gremlinExample
   ```

1. gremlin-go を新しいモジュールの依存関係として追加します。

   ```
   go get github.com/apache/tinkerpop/gremlin-go/v3/driver
   ```

1. 「`gremlinExample.go`」という名前のファイルを作成し、テキストエディタで開きます。

1. 以下を `gremlinExample.go` ファイルにコピーし、{{`(your neptune endpoint)`}} を Neptune DB インスタンスのアドレスに置き換えます。

   ```
   package main
   
   import (
     "fmt"
     gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
   )
   
   func main() {
     // Creating the connection to the server.
     driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("wss://{{(your neptune endpoint)}}:8182/gremlin",
       func(settings *gremlingo.DriverRemoteConnectionSettings) {
         settings.TraversalSource = "g"
       })
     if err != nil {
       fmt.Println(err)
       return
     }
     // Cleanup
     defer driverRemoteConnection.Close()
   
     // Creating graph traversal
     g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)
   
     // Perform traversal
     results, err := g.V().Limit(2).ToList()
     if err != nil {
       fmt.Println(err)
       return
     }
     // Print results
     for _, r := range results {
       fmt.Println(r.GetString())
     }
   }
   ```
**注記**  
Neptune TLS 証明書形式は、現在、macOS 搭載の Go 1.18\+ ではサポートされていないため、接続を開始しようとすると 509 エラーが発生する可能性があります。ローカルテストでは、インポートに「crypto/tls」を追加し、`DriverRemoteConnection` 設定を次のように変更することで、これをスキップできます。  

   ```
   // Creating the connection to the server.
   driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("wss://your-neptune-endpoint:8182/gremlin",
     func(settings *gremlingo.DriverRemoteConnectionSettings) {
         settings.TraversalSource = "g"
         settings.TlsConfig = &tls.Config{InsecureSkipVerify: true}
     })
   ```

1. サンプルを実行するには、次のコマンドを入力します。

   ```
   go run gremlinExample.go
   ```

この例の最後にある Gremlin クエリは、頂点 `(g.V().Limit(2))` をスライスで返します。このスライスは、標準の `fmt.Println` 関数で繰り返され、出力されます。

**注記**  
Gremlin クエリの最後の部分、`ToList()` では、評価のためにトラバーサルをサーバーに送信する必要があります。そのメソッドまたは別の同等のメソッドを含めない場合、クエリは Neptune DB インスタンスに送信されません。

以下のメソッドは Neptune DB インスタンスにクエリを送信します。
+ `ToList()`
+ `ToSet()`
+ `Next()`
+ `GetResultSet()`
+ `Iterate()`

前述の例では、`g.V().Limit(2).ToList()` トラバーサルを使用してグラフの最初の 2 つの頂点を返します。その他の対象にクエリを実行するには、いずれかの適切な終了メソッドを持つ Gremlin トラバーサルで置き換えます。

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

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