

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure la consola de Gremlin para conectarse a una instancia de base de datos de Neptune
<a name="access-graph-gremlin-console"></a>

La consola Gremlin le permite experimentar con TinkerPop gráficos y consultas en un entorno REPL (bucle). read-eval-print 

## Instalación de la consola de Gremlin y conexión a ella de la forma habitual
<a name="access-graph-gremlin-console-usual-connect"></a>

Puede utilizar dicha consola para conectarse a una base de datos de gráficos remota. En la siguiente sección, se explica la instalación y la configuración de la consola de Gremlin para conectarse a una instancia de base de datos de Neptune de forma remota. Siga estas instrucciones desde una instancia de Amazon EC2 que esté en la misma nube privada virtual (VPC) que su instancia de base de datos de Neptune.

Para obtener ayuda para conectarse a Neptune con SSL/TLS (obligatorio), consulte. [Configuración de SSL/TLS](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl)

**nota**  
Si tiene [habilitada la autenticación de IAM](iam-auth-enable.md) en su clúster de base de datos de Neptune, siga en [Conexión a bases de datos de Amazon Neptune mediante la autenticación de IAM con la consola de Gremlin](iam-auth-connecting-gremlin-console.md) las instrucciones para instalar la consola de Gremlin en lugar de las instrucciones que aparecen aquí.

**Para instalar la consola de Gremlin y conectarse a Neptune**

1. Los archivos binarios de la consola de Gremlin requieren Java 8 o Java 11. En estas instrucciones se presupone el uso de Java 11. Puede instalar Java 11 en su instancia de EC2 de la siguiente manera:
   + Si utilizas [Amazon Linux 2 (AL2)](https://aws.amazon.com/amazon-linux-2):

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Si utilizas [Amazon Linux 2023 (AL2023)](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html):

     ```
     sudo yum install java-11-amazon-corretto-devel
     ```
   + Para otras distribuciones, utilice la que sea adecuada de las siguientes opciones:

     ```
     sudo yum install java-11-openjdk-devel
     ```

     o bien:

     ```
     sudo apt-get install openjdk-11-jdk
     ```

1. Escriba lo siguiente para establecer Java 11 como tiempo de ejecución predeterminado en la instancia EC2.

   ```
   sudo /usr/sbin/alternatives --config java
   ```

   Cuando se le solicite, escriba el número para Java 11.

1. Descargue la versión adecuada de la consola Gremlin del sitio web de Apache. Puedes comprobar [Acceso al gráfico de Neptune con Gremlin](access-graph-gremlin.md) qué versión de Gremlin es compatible con tu versión de Neptune. Por ejemplo, si necesita la versión 3.7.2, puede descargar la [consola Gremlin](https://archive.apache.org/dist/tinkerpop/3.7.2/apache-tinkerpop-gremlin-console-3.7.2-bin.zip) del sitio web de [Apache Tinkerpop](https://tinkerpop.apache.org/download.html) a su instancia EC2 de la siguiente manera:

   ```
   wget https://archive.apache.org/dist/tinkerpop/3.7.2/apache-tinkerpop-gremlin-console-3.7.2-bin.zip
   ```

1. Descomprima el archivo .zip de la consola de Gremlin.

   ```
   unzip apache-tinkerpop-gremlin-console-3.7.2-bin.zip
   ```

1. Cambie al directorio del directorio descomprimido.

   ```
   cd apache-tinkerpop-gremlin-console-3.7.2
   ```

1. En el subdirectorio `conf` del directorio extraído, cree un archivo llamado `neptune-remote.yaml` con el texto siguiente. *your-neptune-endpoint*Sustitúyalo por el nombre de host o la dirección IP de la instancia de base de datos de Neptune. Los corchetes (`[ ]`) son obligatorios.
**nota**  
Para obtener información acerca de cómo encontrar el nombre de host de la instancia de base de datos de Neptune, consulte la sección [Conexión a los puntos de conexión de Amazon Neptune](feature-overview-endpoints.md).

   ```
   hosts: [your-neptune-endpoint]
   port: 8182
   connectionPool: { enableSsl: true }
   serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1,
                 config: { serializeResultToString: true }}
   ```
**nota**  
 Los serializadores se trasladaron del módulo `gremlin-driver` al nuevo módulo `gremlin-util` de la versión 3.7.0. El paquete cambió de org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser. 

1. En un terminal, vaya al directorio de la consola de Gremlin (`apache-tinkerpop-gremlin-console-3.7.2`) y, a continuación, escriba el siguiente comando para ejecutarla.

   ```
   bin/gremlin.sh
   ```

   Debería ver los siguientes datos de salida:

   ```
            \,,,/
            (o o)
   -----oOOo-(3)-oOOo-----
   plugin activated: tinkerpop.server
   plugin activated: tinkerpop.utilities
   plugin activated: tinkerpop.tinkergraph
   gremlin>
   ```

   Ahora se encuentra en `gremlin>`. Escriba los pasos restantes en este punto.

1. En el símbolo del sistema `gremlin>`, escriba lo siguiente para conectarse a la instancia de base de datos de Neptune.

   ```
   :remote connect tinkerpop.server conf/neptune-remote.yaml
   ```

1. En la entrada `gremlin>`, escriba lo siguiente para cambiar al modo remoto. Esto envía todas las consultas de Gremlin a la conexión remota.

   ```
   :remote console
   ```

1. Escriba lo siguiente para enviar una consulta al gráfico de Gremlin.

   ```
   g.V().limit(1)
   ```

1. Cuando haya terminado, escriba lo siguiente para salir de la consola de Gremlin.

   ```
   :exit
   ```

**nota**  
Utilice punto y coma (`;`) o un carácter de nueva línea (`\n`) para separar las instrucciones.   
Cada recorrido anterior al final debe terminar en `next()` para ejecutarse. Solo se devuelven los datos del recorrido final.

Para obtener más información sobre la implementación de Gremlin en Neptune, consulte [Conformidad con los estándares de Gremlin en Amazon Neptune](access-graph-gremlin-differences.md).

# Una forma alternativa de conectarse a la consola de Gremlin
<a name="access-graph-gremlin-console-connect"></a>

**Inconvenientes del enfoque de conexión normal**

La forma más común de conectarse a la consola de Gremlin es la que hemos explicado anteriormente, utilizando comandos como estos en el símbolo del sistema de `gremlin>`:

```
gremlin> :remote connect tinkerpop.server conf/(file name).yaml
gremlin> :remote console
```

Esto funciona bien y permite enviar consultas a Neptune. Sin embargo, saca del bucle al motor de scripts Groovy, por lo que Neptune trata todas las consultas como puras de Gremlin. Esto significa que los siguientes formularios de consulta fallan:

```
gremlin> 1 + 1
gremlin> x = g.V().count()
```

Lo más parecido a utilizar una variable cuando se está conectado de esta forma es utilizar la variable `result` que mantiene la consola y enviar la consulta utilizando `:>`, de esta forma:

```
gremlin> :remote console
==>All scripts will now be evaluated locally - type ':remote console' to return to remote mode for Gremlin Server - [krl-1-cluster.cluster-ro-cm9t6tfwbtsr.us-east-1.neptune.amazonaws.com/172.31.19.217:8182]
gremlin> :> g.V().count()
==>4249

gremlin> println(result)
[result{object=4249 class=java.lang.Long}]

gremlin> println(result['object'])
[4249]
```

 

**Una forma diferente de conectarse**

También puede conectarse a la consola de Gremlin de una forma diferente, que tal vez le parezca más agradable, como esta:

```
gremlin> g = traversal().withRemote('conf/neptune.properties')
```

Aquí `neptune.properties` toma esta forma:

```
gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
gremlin.remote.driver.clusterFile=conf/my-cluster.yaml
gremlin.remote.driver.sourceName=g
```

El archivo `my-cluster.yaml` debería ser similar a esto:

```
hosts: [my-cluster-abcdefghijk.us-east-1.neptune.amazonaws.com]
port: 8182
serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1,
              config: { serializeResultToString: false } }
connectionPool: { enableSsl: true }
```

**nota**  
 Los serializadores se trasladaron del módulo `gremlin-driver` al nuevo módulo `gremlin-util` de la versión 3.7.0. El paquete cambió de org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser. 

Configurar la conexión de la consola de Gremlin de esta manera le permite realizar correctamente los siguientes tipos de consultas:

```
gremlin> 1+1
==>2

gremlin> x=g.V().count().next()
==>4249

gremlin> println("The answer was ${x}")
The answer was 4249
```

Puede evitar que se muestre el resultado, de esta manera:

```
gremlin> x=g.V().count().next();[]
gremlin> println(x)
4249
```

Todas las formas habituales de realizar consultas (sin el paso del terminal) siguen funcionando. Por ejemplo:

```
gremlin> g.V().count()
==>4249
```

Incluso puede usar el paso [https://tinkerpop.apache.org/docs/current/reference/#io-step](https://tinkerpop.apache.org/docs/current/reference/#io-step) para cargar un archivo con este tipo de conexión.

## Autenticación de IAM
<a name="access-graph-gremlin-console-iam"></a>

Neptune admite la [autenticación de IAM](iam-auth-enable.md) para controlar el acceso a su clúster de base de datos. Si tiene habilitada la autenticación de IAM, debe utilizar la firma de la versión 4 de Signature para autenticar sus solicitudes. Para obtener instrucciones detalladas y ejemplos de código para conectarse desde la consola de Gremlin, consulte. [Conexión a bases de datos de Amazon Neptune mediante la autenticación de IAM con la consola de Gremlin](iam-auth-connecting-gremlin-console.md)