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 credenziali IAM necessarie per firmare le richieste. Vedi Utilizzo della catena di fornitori di credenziali predefinita nella Guida per gli sviluppatori. AWS SDK for Java

  • È 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. Vedi Utilizzo di credenziali di sicurezza temporanee per richiedere l'accesso alle AWS risorse nella Guida per l'utente IAM.

Per informazioni sulla connessione tramite SSL/TLS, consulta Configurazione SSL/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 proxy HTTP, è possibile che si verifichino errori in questo passaggio in cui il comando :install 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 proxy HTTP, è possibile che si verifichino errori in questo passaggio in cui il comando :install 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 documentazione sulla configurazione di GrapeTinkerPop .

  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, esisterà già neptune-remote.yaml un file. In tal caso, è sufficiente modificare il file esistente per includere l'impostazione del channelizer mostrata di seguito.

    In alternativa, copiare il testo seguente nel file, sostituendo (nome host) con il nome host o l'indirizzo IP dell'istanza database 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 le credenziali IAM 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 conoscere altri metodi per fornire le credenziali, consulta Utilizzo della catena di provider delle credenziali predefinita nella Guida per gli sviluppatori di AWS SDK for Java .

    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