本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Go 連線至 Neptune 資料庫執行個體
重要
選擇正確的 Apache TinkerPop Gremlin 驅動程式版本對於與您的 Neptune 引擎版本相容至關重要。使用不相容的版本可能會導致連線失敗或意外行為。如需詳細的版本相容性資訊,請參閱 使用 Gremlin 存取 Neptune 圖形。
注意
gremlingo 3.5.x 版與 TinkerPop 3.4.x 版回溯相容,只要您在撰寫的 Gremlin 查詢中僅使用 3.4.x 功能即可。
下節引導您逐步執行 Go 範例,其會連線至 Amazon Neptune 資料庫執行個體,並執行 Gremlin 周遊。
您必須從與您的 Neptune 資料庫執行個體位於同一虛擬私有雲端 (VPC) 的 Amazon EC2 執行個體依照以下指示進行。
開始之前,請執行以下動作:
從 go.dev
網站下載並安裝 Go 1.17 或更新版本。
使用 Go 連線至 Neptune
-
從空目錄開始,初始化一個新的 Go 模組:
go mod init example.com/gremlinExample -
將 gremlin-go 新增為新模組的相依性:
go get github.com/apache/tinkerpop/gremlin-go/v3/driver -
建立名為
gremlinExample.go的檔案,然後在文字編輯器中開啟。 -
將下列內容複製到
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+ 目前不支援 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} }) -
輸入下列命令以執行範例:
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 身分驗證
Neptune 支援 IAM 身分驗證,以控制對資料庫叢集的存取。如果您已啟用 IAM 身分驗證,則需要使用 Signature 第 4 版簽署來驗證您的請求。如需從 Go 用戶端連線的詳細說明和程式碼範例,請參閱 使用 IAM 身分驗證搭配 Gremlin Go 連線至 Amazon Neptune 資料庫。