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
-
Avviare la console Gremlin:
$ bin/gremlin.sh
-
Al prompt
gremlin>
, installare la libreriaamazon-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)
") -
Importare la classe richiesta per gestire l'accesso a
handshakeInterceptor()
::import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
-
Se si utilizzano credenziali temporanee, è necessario fornire anche il token di sessione come segue:
System.setProperty("aws.sessionToken","(your session token)")
-
Se non si sono ancora stabilite le credenziali dell'account, è possibile assegnarle come segue:
System.setProperty("aws.accessKeyId","
") System.setProperty("aws.secretKey","(your access key)
(your secret key)
") -
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.
-
Stabilire la connessione
:remote
utilizzando il nome della variabile dell'oggettoCluster
nel passaggio precedente::remote connect tinkerpop.server cluster
-
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
-
Avviare la console Gremlin:
$ bin/gremlin.sh
-
Al prompt
gremlin>
, installare la libreriaamazon-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 . -
Nella sottodirectory
conf
della directory estratta, creare un file denominatoneptune-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 }} -
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. -
Stabilire la connessione
:remote
utilizzando il file.yaml
::remote connect tinkerpop.server conf/neptune-remote.yaml
-
Immettere il seguente comando per passare alla modalità remota, che invia tutte le query Gremlin alla connessione remota:
:remote console