Heim  >  Artikel  >  Backend-Entwicklung  >  Stellen Sie über Golang GremlinGo eine Verbindung zu AWS Neptune her

Stellen Sie über Golang GremlinGo eine Verbindung zu AWS Neptune her

WBOY
WBOYnach vorne
2024-02-08 20:53:54693Durchsuche

使用 Golang GremlinGo 连接到 AWS Neptune

Frageninhalt

Ich versuche gerade, über go eine Verbindung zu aws neptune herzustellen, aber es funktioniert nicht. Ich kann eine Verbindung zu aws selbst herstellen, aber wenn ich versuche, eine Verbindung zu neptune db herzustellen, erscheint die Meldung „Verbindung konnte nicht erfolgreich hergestellt werden: TCP 172.31.4.48:8182 aufrufen: E/A-Zeitüberschreitung“. Ich verwende ein Gremlingo-Modul wie diesen Code

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())
    }
}

Ich war mir nicht ganz sicher, was das Problem war, also habe ich versucht, eine Verbindung zum Cluster selbst herzustellen, aber da es nicht funktionierte, habe ich versucht, eine Verbindung zum Autor herzustellen. Ich danke Ihnen für Ihre Hilfe.

Beste Grüße


Richtige Antwort


Amazon Neptune läuft in einer VPC und stellt keine öffentlichen Endpunkte zur Verfügung. Code zum Senden von Abfragen muss Zugriff auf die VPC haben. Dies kann so einfach sein wie die Ausführung von Code auf einer EC2-Instanz in derselben VPC, es gibt jedoch viele andere Möglichkeiten, Zugriff auf eine VPC zu gewähren, z. B. Load Balancer, VPC-Peering, direkte Verbindungen und mehr. p>

Eine einfache Möglichkeit zu überprüfen, ob Ihr Code auf die Datenbank zugreifen kann, besteht darin, vom selben Ursprungspunkt aus eine HTTP-Anfrage an die /status API zu senden und zu prüfen, ob es funktioniert.

Das obige ist der detaillierte Inhalt vonStellen Sie über Golang GremlinGo eine Verbindung zu AWS Neptune her. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen