

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Go 連線至 Neptune 資料庫執行個體
<a name="access-graph-gremlin-go"></a>

**重要**  
選擇正確的 Apache TinkerPop Gremlin 驅動程式版本對於與您的 Neptune 引擎版本相容至關重要。使用不相容的版本可能會導致連線失敗或意外行為。如需詳細的版本相容性資訊，請參閱 [使用 Gremlin 存取 Neptune 圖形](access-graph-gremlin.md)。

**注意**  
gremlingo 3.5.x 版與 TinkerPop 3.4.x 版回溯相容，只要您在撰寫的 Gremlin 查詢中僅使用 3.4.x 功能即可。

下節引導您逐步執行 Go 範例，其會連線至 Amazon Neptune 資料庫執行個體，並執行 Gremlin 周遊。

您必須從與您的 Neptune 資料庫執行個體位於同一虛擬私有雲端 (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` 檔案，以 Neptune 資料庫執行個體的地址取代 *`(your neptune endpoint)`*：

   ```
   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())
     }
   }
   ```
**注意**  
搭配 macOS 的 Go 1.18\$1 目前不支援 Neptune TLS 憑證格式，因此在嘗試啟動連線時可能會出現 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 資料庫執行個體。

以下方法會查詢提交至 Neptune 資料庫執行個體：
+ `ToList()`
+ `ToSet()`
+ `Next()`
+ `GetResultSet()`
+ `Iterate()`

上述範例使用 `g.V().Limit(2).ToList()` 周遊傳回圖形中的前兩個頂點。若要查詢其他內容，將其換成其他使用其中一個適當之結束方法的 Gremlin 周遊。

## IAM 身分驗證
<a name="access-graph-gremlin-go-iam"></a>

Neptune 支援 [IAM 身分驗證](iam-auth-enable.md)，以控制對資料庫叢集的存取。如果您已啟用 IAM 身分驗證，則需要使用 Signature 第 4 版簽署來驗證您的請求。如需從 Go 用戶端連線的詳細說明和程式碼範例，請參閱 [使用 IAM 身分驗證搭配 Gremlin Go 連線至 Amazon Neptune 資料庫](gremlin-go-iam-auth.md)。