

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Herstellen einer Verbindung mit einer Neptune-DB-Instance über Go
<a name="access-graph-gremlin-go"></a>

**Wichtig**  
Die Auswahl der richtigen Apache TinkerPop Gremlin-Treiberversion ist entscheidend für die Kompatibilität mit Ihrer Neptune-Engine-Version. Die Verwendung einer inkompatiblen Version kann zu Verbindungsfehlern oder unerwartetem Verhalten führen. Ausführliche Informationen zur Versionskompatibilität finden Sie unter[Zugriff auf ein Neptune-Diagramm mit Gremlin](access-graph-gremlin.md).

**Anmerkung**  
Die Gremlingo 3.5.x-Versionen sind abwärtskompatibel mit den TinkerPop 3.4.x-Versionen, solange Sie in den von Ihnen geschriebenen Gremlin-Abfragen nur 3.4.x-Funktionen verwenden.

Der folgende Abschnitt führt Sie durch die Ausführung eines Go-Beispiels mit Herstellung einer Verbindung zu einer Amazon-Neptune-DB-Instance und Ausführung einer Gremlin-Traversierung.

Sie müssen diese Anweisungen für eine Amazon-EC2-Instance befolgen, die sich in derselben Virtual Private Cloud (VPC) wie Ihre Neptune-DB-Instance befindet.

Bevor Sie beginnen, führen Sie die folgenden Schritte aus:
+ Laden Sie Go 1.17 oder höher von der Website [go.dev](https://go.dev/dl/) herunter und installieren Sie diese Version.

**Herstellen einer Verbindung mit Neptune über Go**

1. Initalisieren Sie ausgehend von einem leeren Verzeichnis ein neues Go-Modul:

   ```
   go mod init example.com/gremlinExample
   ```

1. Fügen Sie gremlin-go als Abhängigkeit Ihres neuen Moduls hinzu:

   ```
   go get github.com/apache/tinkerpop/gremlin-go/v3/driver
   ```

1. Erstellen Sie eine Datei namens `gremlinExample.go` und öffnen Sie diese dann in einem Text-Editor.

1. Kopieren Sie Folgendes in die Datei `gremlinExample.go` und ersetzen Sie *`(your neptune endpoint)`* durch die Adresse Ihrer Neptune-DB-Instance:

   ```
   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())
     }
   }
   ```
**Anmerkung**  
Das Neptune-TLS-Zertifikatformat wird zurzeit für Go 1.18\$1 mit macOS nicht unterstützt und kann beim Versuch, eine Verbindung herzustellen, zu einem 509-Fehler führen. Für lokale Tests kann dies durch Hinzufügung von „crypto/tls“ zu den Importen und Änderung der `DriverRemoteConnection`-Einstellungen wie folgt übersprungen werden:  

   ```
   // 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. Geben Sie den folgenden Befehl ein, um das Beispiel auszuführen:

   ```
   go run gremlinExample.go
   ```

Die Gremlin-Abfrage am Ende dieses Beispiels gibt die Eckpunkte `(g.V().Limit(2))` in einem Slice zurück. Dieser Slice wird dann iteriert und mit der Standardfunktion `fmt.Println` gedruckt.

**Anmerkung**  
Der letzte Teil der Gremlin-Abfrage, `ToList()`, ist für die Übermittlung der Traversierung zur Auswertung an den Server erforderlich. Wenn Sie diese oder eine gleichwertige Methode nicht einschließen, wird die Abfrage nicht an die Neptune-DB-Instance übermittelt.

Die folgenden Methoden senden die Abfrage an die Neptune-DB-Instance:
+ `ToList()`
+ `ToSet()`
+ `Next()`
+ `GetResultSet()`
+ `Iterate()`

Das vorherige Beispiel gibt die ersten beiden Knoten im Diagramm über die `g.V().Limit(2).ToList()`-Traversierung zurück. Um etwas anderes abzufragen, ersetzen Sie diese durch eine andere Gremlin-Traversierung mit einer der entsprechenden Ending-Methoden.

## IAM-Authentifizierung
<a name="access-graph-gremlin-go-iam"></a>

Neptune unterstützt die [IAM-Authentifizierung](iam-auth-enable.md), um den Zugriff auf Ihren DB-Cluster zu kontrollieren. Wenn Sie die IAM-Authentifizierung aktiviert haben, müssen Sie die Signature Version 4-Signatur verwenden, um Ihre Anfragen zu authentifizieren. Ausführliche Anweisungen und Codebeispiele für die Verbindung von einem Go-Client aus finden Sie unter. [Herstellen einer Verbindung zu Amazon Neptune Neptune-Datenbanken mithilfe der IAM-Authentifizierung mit Gremlin Go](gremlin-go-iam-auth.md)