使用Golang GremlinGo连接到AWS Neptune

wyyhbhjk  于 2023-02-27  发布在  Go
关注(0)|答案(1)|浏览(210)

我现在尝试通过Go建立到AWS Neptune的连接,但没有成功。我可以连接到AWS本身,但当我尝试连接到Neptune DB时,它显示"无法成功连接:请拨打传输控制协议172.31.4.48:i/o超时"。我正在使用Gremlingo模块,如下代码所示

package main

import (
    "fmt"
    "net/http"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/neptune"
    "github.com/gin-gonic/gin"

    gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
)

func main() {

    sess, err := session.NewSession(&aws.Config{
        Region:      aws.String("us-east-id1"),
        Credentials: credentials.NewStaticCredentials("AWS-id key", "aws secret id key", ""),
    })

    if err != nil {
        fmt.Println("Couldn't create new session")
        return
    }

    neptune.New(sess)

    driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("wss://database-1-instance-1.asdasdasd.us-east-1.neptune.amazonaws.com: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())
    }
}

我不太确定是什么问题,所以我尝试连接到集群本身,因为它不工作,我尝试连接到Writer。非常感谢您的帮助。
最好的问候

xqnpmsa8

xqnpmsa81#

Amazon Neptune在VPC内部运行,不公开公共端点。设计用于发送查询的代码必须具有对该VPC的访问权限。这可能与在同一VPC中的EC2示例上运行代码一样简单,但也可以通过许多其他方式授予对VPC的访问权限,例如负载均衡器、VPC对等、直接连接等。
检查您的代码是否可以访问数据库的一个简单方法是从同一个源点向/status API发送一个HTTP请求,看看它是否可以工作。

相关问题