Conexión a bases de datos de Amazon Neptune mediante la autenticación de IAM con JavaScript de Gremlin
Descripción general
En esta guía se muestra cómo conectarse a una base de datos de Amazon Neptune con la autenticación de IAM habilitada mediante el controlador de JavaScript de Gremlin, con la autenticación de Signature Version 4 y el AWS SDK para Javascript v3.
Requisitos previos
-
Un clúster de Amazon Neptune con la autenticación de IAM habilitada.
-
Node 13 o posterior (consulte las versiones mínimas para JavaScript de Gremlin y AWS SDK para Javascript v3).
-
Credenciales de AWS configuradas (mediante variables de entorno, archivo de credenciales compartidas o rol de IAM).
Creación de una conexión básica
Utilice el siguiente ejemplo de código como guía para establecer una conexión básica con autenticación de IAM mediante el controlador de JavaScript de Gremlin.
const { fromNodeProviderChain } = require('@aws-sdk/credential-providers'); const { getUrlAndHeaders } = require('gremlin-aws-sigv4/lib/utils'); const { loadConfig } = require("@smithy/node-config-provider"); const { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } = require("@smithy/config-resolver"); const gremlin = require('gremlin'); const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection; const traversal = gremlin.process.AnonymousTraversalSource.traversal; const DEFAULT_REGION = 'us-east-1'; const getCredentials = async () => { try { // Loads the default credential provider chain return await fromNodeProviderChain(); } catch (e) { console.error("No credentials found", e); throw e; } }; (main = async () => { console.log('Starting'); const credentials = await getCredentials(); try { // region set inside config profile or via AWS_REGION environment variable will be loaded credentials['region'] = await loadConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS)(); } catch (e) { credentials['region'] = DEFAULT_REGION } const connInfo = getUrlAndHeaders( 'you.cluster.endpoint.neptune.amazonaws.com', '8182', credentials, '/gremlin', 'wss'); const dc = new DriverRemoteConnection(connInfo['url'], {headers: connInfo['headers']}); const g = traversal().withRemote(dc); const query = g.V().limit(5).count(); const count = await query.next(); console.log("Vertex count: " + count.value); await dc.close(); }) main();