gremlin-aws-sigv4
                                
                                
                                
                                    gremlin-aws-sigv4 copied to clipboard
                            
                            
                            
                        Extension for Apache's TinkerPop3 Gremlin JS driver compatible with IAM Database Authentication for Neptune
gremlin-aws-sigv4
This package provides an extension for Apache's TinkerPop3 Gremlin javascript driver compatible with IAM Database Authentication for Neptune.
Installation
This project is a Node.js module and can be installed with npm.
npm install gremlin-aws-sigv4
Usage
This package reads the environment variables for AWS authentication. These variables can be overridden.
Usage with environment variables
These three enviroment variables must be defined.
AWS_ACCESS_KEY_ID– AWS access key.AWS_SECRET_ACCESS_KEY– AWS secret key.AWS_DEFAULT_REGION– AWS region.
  const gremlin = require('gremlin-aws-sigv4');
  const graph = new gremlin.structure.Graph();
  const connection = new gremlin.driver.AwsSigV4DriverRemoteConnection(
    // host
    'your-instance.neptune.amazonaws.com', 
    // port
    8182,
    // options, 
    {}, 
    // connected callback
    () => { 
      const g = graph.traversal().withRemote(connection);
      const count = await g.V().count().next();
      connection.close();
    }, 
    // disconnected callback
    (code, message) => { }, 
    // error callback
    (error) => { } 
  );
Usage without environment variables
  const gremlin = require('gremlin-aws-sigv4');
  // creates the connection
  const graph = new gremlin.structure.Graph();
  const connection = new gremlin.driver.AwsSigV4DriverRemoteConnection(
    // host
    'your-instance.neptune.amazonaws.com',
    // port
    8182, 
    
    // options
    { 
      accessKeyId: 'your-access-key',
      secretAccessKey: 'your-secret-key',
      sessionToken: 'your-optional-session-token',
      region: 'your-region',
    },
    
    // connected callback
    () => { 
      const g = graph.traversal().withRemote(connection);
      const count = await g.V().count().next();
      connection.close();
    }, 
    
    // disconnected callback
    (code, message) => { }, 
    
     // error callback
     (error) => { }
  );
Additional options
Thses are the available config options, none of them is required.
{
  // Open secure connection - mandatory for engine version 1.0.4.0 and above
  secure: true,
  // Enable auto-reconnection on connection failure - default: false 
  autoReconnect: true,
  // Number of auto-reconnection retries - default: 10 
  maxRetry: 3,
}
Tests
Unit tests
# install dependencies
npm install
# run the tests
npm run test:unit
Dependencies
Contribute
Please do contribute! Open an issue or submit a pull request.
The project falls under @Shutterstock's Code of Conduct.