Connessione a Neptune tramite la console Gremlin con la firma di Signature Version 4 - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connessione a Neptune tramite la console Gremlin con la firma di Signature Version 4

Il modo in cui ti connetti ad Amazon Neptune utilizzando la console Gremlin con autenticazione Signature versione 4 dipende dal fatto che tu stia TinkerPop utilizzando una versione o una versione successiva o una 3.4.11 versione precedente. In entrambi i casi, sono necessari i seguenti prerequisiti:

  • È necessario disporre delle IAM credenziali necessarie per firmare le richieste. Vedi Utilizzo della catena di provider di credenziali predefinita nella AWS SDK for Java Guida per gli sviluppatori.

  • È necessario aver installato una versione della console Gremlin compatibile con la versione del motore Neptune utilizzata dal cluster database.

Se si utilizzano credenziali temporanee, queste scadono dopo un intervallo specificato, così come il token di sessione, quindi è necessario aggiornare il token di sessione quando si richiedono nuove credenziali. Vedere Utilizzo di credenziali di sicurezza temporanee per richiedere l'accesso a AWS risorse nella Guida per l'IAMutente.

Per informazioni sulla connessione tramiteSSL/TLS, vedereSSL/configurazione TLS.

Utilizzo della versione TinkerPop 3.4.11 o superiore per connettersi a Neptune con la firma Sig4

Con TinkerPop 3.4.11 o versioni successive, utilizzeraihandshakeInterceptor(), che fornisce un modo per collegare un firmatario Sigv4 alla connessione stabilita dal comando. :remote Come per l'approccio utilizzato per Java, è necessario configurare l'oggetto Cluster manualmente e quindi passarlo al comando :remote.

Tenere presente che questo è molto diverso dalla situazione tipica in cui il comando :remote richiede un file di configurazione per formare la connessione. L'approccio del file di configurazione non funzionerà perché handshakeInterceptor() deve essere impostato a livello di codice e non può caricare la configurazione da un file.

Connetti la console Gremlin (TinkerPop 3.4.11 e versioni successive) con la firma Sig4
  1. Avviare la console Gremlin:

    $ bin/gremlin.sh
  2. Al prompt gremlin>, installare la libreria amazon-neptune-sigv4-signer (questa operazione deve essere eseguita solo una volta per la console):

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

    Se riscontri problemi con questo passaggio, può essere utile consultare la documentazione sulla configurazione di Grape. TinkerPop

    Nota

    Se si utilizza un HTTP proxy, è possibile che si verifichino errori in questo passaggio in cui il :install comando non viene completato. Per risolvere questo problema, esegui i comandi seguenti per fornire alla console informazioni sul proxy:

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")
  3. Importare la classe richiesta per gestire l'accesso a handshakeInterceptor():

    :import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
  4. Se si utilizzano credenziali temporanee, è necessario fornire anche il token di sessione come segue:

    System.setProperty("aws.sessionToken","(your session token)")
  5. Se non si sono ancora stabilite le credenziali dell'account, è possibile assegnarle come segue:

    System.setProperty("aws.accessKeyId","(your access key)") System.setProperty("aws.secretKey","(your secret key)")
  6. Costruire manualmente l'oggetto Cluster da connettere a Neptune:

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

    Per informazioni su come trovare il nome host di un'istanza database Neptune, consulta Connessione agli endpoint Amazon Neptune.

  7. Stabilire la connessione :remote utilizzando il nome della variabile dell'oggetto Cluster nel passaggio precedente:

    :remote connect tinkerpop.server cluster
  8. Immettere il seguente comando per passare alla modalità remota. In questo modo tutte le query Gremlin vengono inviate alla connessione remota:

    :remote console

Utilizzo di una versione TinkerPop precedente alla 3.4.11 per connettersi a Neptune con la firma Sig4

Con la TinkerPop versione 3.4.10 o precedente, usa la amazon-neptune-gremlin-java-sigv4 libreria fornita da Neptune per connettere la console a Neptune con la firma Sigv4, come descritto di seguito:

Connect la console Gremlin (TinkerPop versioni precedenti alla 3.4.11) con la firma Sig4
  1. Avviare la console Gremlin:

    $ bin/gremlin.sh
  2. Al prompt gremlin>, installare la libreria amazon-neptune-sigv4-signer (questa operazione deve essere eseguita solo una volta per la console):

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

    Se si utilizza un HTTP proxy, è possibile che si verifichino errori in questo passaggio in cui il :install comando non viene completato. Per risolvere questo problema, esegui i comandi seguenti per fornire alla console informazioni sul proxy:

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

    Può essere utile anche consultare la TinkerPop documentazione sulla configurazione di Grape.

  3. Nella sottodirectory conf della directory estratta, creare un file denominato neptune-remote.yaml.

    Se hai usato il AWS CloudFormation modello per creare il tuo cluster Neptune DB, neptune-remote.yaml un file esisterà già. In tal caso, è sufficiente modificare il file esistente per includere l'impostazione del channelizer mostrata di seguito.

    Altrimenti, copia il seguente testo nel file, sostituendolo (host name) con il nome host o l'indirizzo IP dell'istanza DB di Neptune. Tenere presente che le parentesi quadre ([ ]) che racchiudono il nome host sono obbligatorie.

    hosts: [(host name)] port: 8182 connectionPool: { channelizer: org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer, enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
  4. Importante

    È necessario fornire IAM le credenziali per firmare le richieste. Inserisci i seguenti comandi per impostare le credenziali come variabili di ambiente, sostituendo gli elementi rilevanti con le tue credenziali.

    export AWS_ACCESS_KEY_ID=access_key_id export AWS_SECRET_ACCESS_KEY=secret_access_key export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1

    Signer Version 4 di Neptune utilizza la catena di provider di credenziali predefinita. Per ulteriori metodi di immissione delle credenziali, vedere Utilizzo della catena di provider di credenziali predefinita nella AWS SDK for Java Guida per gli sviluppatori.

    La variabile SERVICE_REGION è obbligatoria anche quando si utilizza un file delle credenziali.

  5. Stabilire la connessione :remote utilizzando il file .yaml:

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  6. Immettere il seguente comando per passare alla modalità remota, che invia tutte le query Gremlin alla connessione remota:

    :remote console