amazon-web-servicesgremlingraph-databasesamazon-neptunegremlin-server

Gremlin Console - Connecting to Amazon Neptune with Sig4 signing


I need to connect to Amazon Neptune using Gremlim console.
Tried all steps for setup and signing configuration but following error occurs when connecting to Neptune.

Steps performed:

  1. Install JDK
    sudo amazon-linux-extras install java-openjdk11
    
  2. Install Gremlin Console
    wget https://archive.apache.org/dist/tinkerpop/3.4.10/apache-tinkerpop-gremlin-console-3.4.10-bin.zip
    
    unzip apache-tinkerpop-gremlin-console-3.4.10-bin.zip
    
    cd apache-tinkerpop-gremlin-console-3.4.10
    
  3. Install AWS signing library: amazon-neptune-gremlin-java-sigv4
    bin\gremlin.sh
    
             \,,,/
             (o o)
    -----oOOo-(3)-oOOo-----
    plugin activated: tinkerpop.server
    plugin activated: tinkerpop.utilities
    plugin activated: tinkerpop.tinkergraph
    gremlin> :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
    log4j:WARN No appenders could be found for logger (org.apache.tinkerpop.gremlin.groovy.util.DependencyGrabber).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    ==>Loaded: [com.amazonaws, amazon-neptune-sigv4-signer, 2.4.0]
    
  4. Create configuration for Neptune connection: conf/neptune-remote.yaml
    hosts: [your-neptune-endpoint]
    port: 8182
    connectionPool: {
        channelizer: org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer,
        enableSsl: true
    } 
    serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1,
              config: { serializeResultToString: true }}
    
  5. Connect (fails)
    gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
    ==>Error during 'connect' - The channelizer specified [org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer] could not be instantiated - it should be the fully qualified classname of a Channelizer implementation available on the classpath
    


How do I get this working? Do I need to set classpath?

Solution

  • You need to follow the documentation located here: https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-connecting-gremlin-console.html