

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.

# Conexión a bases de datos de Amazon Neptune mediante la autenticación de IAM con la consola de Gremlin
<a name="iam-auth-connecting-gremlin-console"></a>

Para conectarse a Amazon Neptune mediante la consola Gremlin con la autenticación Signature Version 4, debe conectar un firmante SiGv4 `requestInterceptor()` a la conexión establecida por el comando. `:remote` Esto requiere que configure el `Cluster` objeto manualmente y, a continuación, lo pase al comando. `:remote`

Tenga en cuenta que esto es muy diferente de la situación típica en la que el comando `:remote` utiliza un archivo de configuración para formar la conexión. El enfoque del archivo de configuración no funciona porque `requestInterceptor()` debe configurarse mediante programación y no puede cargar su configuración desde un archivo.

**nota**  
En los siguientes ejemplos se utiliza`requestInterceptor()`, que se introdujo en la versión TinkerPop 3.6.6. Si utiliza una TinkerPop versión anterior a la 3.6.6 (pero 3.5.5 o superior), utilícela en `handshakeInterceptor()` lugar de `requestInterceptor()` en los ejemplos de código que aparecen a continuación.

Son necesarios los siguientes requisitos previos:
+ Debe tener las credenciales de IAM necesarias para firmar las solicitudes. Consulte [Uso de la cadena de proveedores de credenciales predeterminada](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/credentials-chain.html) en la Guía para AWS SDK para Java desarrolladores.
+ Debe tener instalada una versión de consola de Gremlin que sea compatible con la versión del motor de Neptune que utiliza su clúster de base de datos.

Si usa credenciales temporales, estas caducan después de un intervalo específico, al igual que el token de sesión, por lo que debe actualizar su token de sesión cuando solicite nuevas credenciales. Consulte [Uso de credenciales de seguridad temporales para solicitar acceso a AWS los recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) en la Guía del usuario de IAM.

Si necesita ayuda para conectarse mediante SSL/TLS, consulte [Configuración de SSL/TLS](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl).

**Conecta la consola Gremlin con la firma Sig4**

1. Inicie la consola de Gremlin:

   ```
   $ bin/gremlin.sh
   ```

1. En el símbolo del sistema de `gremlin>`, instale la biblioteca `amazon-neptune-sigv4-signer` (esto solo debe hacerse una vez para la consola):

   ```
   :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
   ```

   [Si tiene problemas con este paso, puede ser útil consultar la [TinkerPop documentación sobre la configuración de Grape](https://tinkerpop.apache.org/docs/current/reference/#gremlin-applications).](http://docs.groovy-lang.org/latest/html/documentation/grape.html)
**nota**  
Si utiliza un proxy HTTP, es posible que encuentre errores en este paso si el comando `:install` no se completa. Para solucionar este problema, ejecute los siguientes comandos para informar a la consola acerca del proxy:  

   ```
   System.setProperty("https.proxyHost", "(the proxy IP address)")
   System.setProperty("https.proxyPort", "(the proxy port)")
   ```

1. Importe la clase necesaria para gestionar el inicio de sesión en `requestInterceptor()`:

   ```
   :import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider
   :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
   ```

1. Si utiliza credenciales temporales, también tendrá que proporcionar su token de sesión de la siguiente manera:

   ```
   System.setProperty("aws.sessionToken","(your session token)")
   ```

1. Si no ha establecido las credenciales de su cuenta de otro modo, puede asignarlas de la siguiente manera:

   ```
   System.setProperty("aws.accessKeyId","(your access key)")
   System.setProperty("aws.secretKey","(your secret key)")
   ```

1. Construya manualmente el objeto `Cluster` para conectarlo a Neptune:

   ```
   cluster = Cluster.build("(host name)")  \
                    .enableSsl(true) \
                    .requestInterceptor { r ->  \
                      def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \
                                        DefaultCredentialsProvider.create()); \
                      sigV4Signer.signRequest(r); \
                      return r; } \
                    .create()
   ```

   Para obtener ayuda para encontrar el nombre de host de una instancia de base de datos de Neptune, consulte [Conexión a los puntos de conexión de Amazon Neptune](feature-overview-endpoints.md).

1. Establezca la conexión `:remote` mediante el nombre de la variable del objeto `Cluster` en el paso anterior:

   ```
   :remote connect tinkerpop.server cluster
   ```

1. Introduzca el siguiente comando para cambiar al modo remoto. Esto envía todas las consultas de Gremlin a la conexión remota:

   ```
   :remote console
   ```