

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar Go para conectar-se a uma instância de banco de dados do Neptune
<a name="access-graph-gremlin-go"></a>

**Importante**  
Escolher a versão correta do driver Apache TinkerPop Gremlin é fundamental para a compatibilidade com a versão do motor Neptune. Usar uma versão incompatível pode resultar em falhas de conexão ou comportamento inesperado. Para obter informações detalhadas sobre compatibilidade de versões, consulte[Acessar o grafo do Neptune com o Gremlin](access-graph-gremlin.md).

**nota**  
As versões 3.5.x do gremlingo são retrocompatíveis com as versões 3.4.x, desde que você use apenas os recursos TinkerPop 3.4.x nas consultas do Gremlin que você escreve.

A seção a seguir descreve a execução de um exemplo do Go que se conecta a uma instância de banco de dados do Amazon Neptune e executa um percurso do Gremlin.

Você deve seguir estas instruções em uma instância do Amazon EC2 na mesma nuvem privada virtual (VPC) que a instância de banco de dados do Neptune.

Antes de começar, faça o seguinte:
+ Baixe e instale o Go 1.17 ou posterior no site [gov.dev](https://go.dev/dl/).

**Como conectar-se ao Neptune usando Go**

1. A partir de um diretório vazio, inicialize um novo módulo Go:

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

1. Adicione gremlin-go como uma dependência do novo módulo:

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

1. Crie um arquivo denominado `gremlinExample.go` e abra-o em um editor de texto.

1. Copie o seguinte no arquivo `gremlinExample.go`, substituindo {{`(your neptune endpoint)`}} pelo endereço da instância de banco de dados do Neptune:

   ```
   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())
     }
   }
   ```
**nota**  
No momento, o formato de certificado TLS do Neptune não é compatível com o Go 1.18\+ com macOS e pode gerar um erro 509 ao tentar iniciar uma conexão. Para testes locais, isso pode ser ignorado adicionando “crypto/tls” às importações e modificando as configurações `DriverRemoteConnection` da seguinte forma:  

   ```
   // 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. Insira o seguinte comando para executar o exemplo:

   ```
   go run gremlinExample.go
   ```

A consulta do Gremlin no final deste exemplo exibe os vértices `(g.V().Limit(2))` em uma fatia. Essa fatia é então iterada e impressa com a função `fmt.Println` padrão.

**nota**  
A parte final da consulta do Gremlin, `ToList()`, é necessária para enviar a travessia ao servidor para avaliação. Se você não incluir esse método ou outro método equivalente, a consulta não será enviada à instância de banco de dados do Neptune.

Os seguintes métodos enviam a consulta à instância de banco de dados do Neptune:
+ `ToList()`
+ `ToSet()`
+ `Next()`
+ `GetResultSet()`
+ `Iterate()`

O exemplo anterior retorna os primeiros dois vértices do gráfico usando a travessia `g.V().Limit(2).ToList()`. Para consultar outro elemento, substitua-a por outra travessia do Gremlin com um dos métodos de término adequado.

## Autenticação do IAM
<a name="access-graph-gremlin-go-iam"></a>

O Neptune [oferece suporte à autenticação do IAM](iam-auth-enable.md) para controlar o acesso ao seu cluster de banco de dados. Se você tiver a autenticação do IAM ativada, precisará usar a assinatura Signature versão 4 para autenticar suas solicitações. Para obter instruções detalhadas e exemplos de código para se conectar a partir de um cliente Go, consulte[Conectar-se a bancos de dados do Amazon Neptune usando a autenticação do IAM com Gremlin Go](gremlin-go-iam-auth.md).