本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 資料庫。