Herstellen von Verbindungen mit Neptune über die Gremlin-Konsole mit Signature-Version-4-Signierung - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Herstellen von Verbindungen mit Neptune über die Gremlin-Konsole mit Signature-Version-4-Signierung

Wie Sie über die Gremlin-Konsole mit Signature Version 4-Authentifizierung eine Verbindung zu Amazon Neptune herstellen, hängt davon ab, ob Sie TinkerPop Version 3.4.11 oder höher oder eine frühere Version verwenden. In beiden Fällen müssen die folgenden Voraussetzungen erfüllt sein:

  • Sie müssen die nötigen IAM-Anmeldeinformationen zum Signieren der Anforderungen besitzen. Weitere Informationen finden Sie unter Verwenden der standardmäßigen Anbieterkette für Anmeldeinformationen im Entwicklerhandbuch. AWS SDK for Java

  • Sie müssen eine Version der Gremlin-Konsole installieren, die mit der Version der Neptune-Engine kompatibel ist, die von Ihrem DB-Cluster verwendet wird.

Wenn Sie temporäre Anmeldeinformationen verwenden, laufen diese nach einem bestimmten Intervall ab, ebenso wie das Sitzungstoken. Sie müssen Ihr Sitzungstoken daher aktualisieren, wenn Sie neue Anmeldeinformationen anfordern. Weitere Informationen finden Sie im IAM-Benutzerhandbuch unter Verwenden temporärer Sicherheitsanmeldedaten, um Zugriff auf AWS Ressourcen anzufordern.

Hilfe zum Herstellen von Verbindungen über SSL/TLS finden Sie unter SSL/TLS-Konfiguration.

Verwenden Sie TinkerPop 3.4.11 oder höher, um mit Sig4-Signatur eine Verbindung zu Neptune herzustellen

Mit TinkerPop 3.4.11 oder höher verwenden Sie, was eine Möglichkeit bietethandshakeInterceptor(), einen Sigv4-Signaturer an die durch den Befehl hergestellte Verbindung anzuschließen. :remote Wie bei dem für Java verwendeten Ansatz müssen Sie das Cluster-Objekt manuell konfigurieren und es dann an den Befehl :remote übergeben.

Beachten Sie, dass sich dies deutlich von der typischen Situation unterscheidet, in der für den Befehl :remote eine Konfigurationsdatei benötigt wird, um die Verbindung herzustellen. Der Ansatz mit einer Konfigurationsdatei funktioniert nicht, da handshakeInterceptor() programmgesteuert festgelegt werden muss und daher die Konfiguration nicht aus einer Datei laden kann.

Connect die Gremlin-Konsole (TinkerPop 3.4.11 und höher) mit Sig4-Signatur
  1. Starten Sie die Gremlin-Konsole:

    $ bin/gremlin.sh
  2. Installieren Sie bei der Eingabeaufforderung gremlin> die amazon-neptune-sigv4-signer-Bibliothek. (Sie müssen dies nur einmal für die Konsole ausführen):

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

    Wenn Sie bei diesem Schritt auf Probleme stoßen, kann es hilfreich sein, die Dokumentation zur Grape-Konfiguration zu lesen. TinkerPop

    Anmerkung

    Wenn Sie einen HTTP-Proxy verwenden, können bei diesem Schritt Fehler auftreten, durch die der :install-Befehl nicht abgeschlossen wird. Führen Sie zur Problembehebung die folgenden Befehle aus, um der Konsole den Proxy mitzuteilen:

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")
  3. Importieren Sie die Klasse, die für die Verarbeitung der Signierung erforderlich ist, in handshakeInterceptor():

    :import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
  4. Wenn Sie temporäre Anmeldeinformationen verwenden, müssen Sie auch Ihr Sitzungstoken wie folgt angeben:

    System.setProperty("aws.sessionToken","(your session token)")
  5. Wenn Sie Ihre Kontoanmeldeinformationen nicht anderweitig eingerichtet haben, können Sie sie wie folgt zuweisen:

    System.setProperty("aws.accessKeyId","(your access key)") System.setProperty("aws.secretKey","(your secret key)")
  6. Konstruieren Sie das Cluster-Objekt manuell, um eine Verbindung zu Neptune herzustellen:

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

    Hilfe bei der Suche nach dem Hostnamen einer Neptune-DB-Instance finden Sie unter Verbinden mit Amazo-Neptune-Endpunkten.

  7. Stellen Sie die :remote-Verbindung mithilfe des Variablennamens des Cluster-Objekts im vorherigen Schritt her:

    :remote connect tinkerpop.server cluster
  8. Geben Sie den folgenden Befehl ein, um zum Remote-Modus zu wechseln. Dies sendet alle Gremlin-Abfragen an die Remote-Verbindung.

    :remote console

Eine TinkerPop frühere Version als 3.4.11 verwenden, um eine Verbindung zu Neptune mit Sig4-Signatur herzustellen

Verwenden Sie mit TinkerPop 3.4.10 oder niedriger die von Neptune bereitgestellte amazon-neptune-gremlin-java-sigv4 Bibliothek, um die Konsole mit Neptune mit Sigv4-Signatur zu verbinden, wie unten beschrieben:

Connect die Gremlin-Konsole (TinkerPop Versionen vor 3.4.11) mit Sig4-Signatur
  1. Starten Sie die Gremlin-Konsole:

    $ bin/gremlin.sh
  2. Installieren Sie bei der Eingabeaufforderung gremlin> die amazon-neptune-sigv4-signer-Bibliothek. (Sie müssen dies nur einmal für die Konsole ausführen):

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

    Wenn Sie einen HTTP-Proxy verwenden, können bei diesem Schritt Fehler auftreten, durch die der :install-Befehl nicht abgeschlossen wird. Führen Sie zur Problembehebung die folgenden Befehle aus, um der Konsole den Proxy mitzuteilen:

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

    Es kann auch hilfreich sein, die Dokumentation zur Grape-Konfiguration zu lesen. TinkerPop

  3. Erstellen Sie im Unterverzeichnis conf des extrahierten Verzeichnisses eine Datei mit dem Namen neptune-remote.yaml.

    Wenn Sie die AWS CloudFormation Vorlage verwendet haben, um Ihren Neptune-DB-Cluster zu erstellen, ist bereits eine neptune-remote.yaml Datei vorhanden. In diesem Fall müssen Sie lediglich die vorhandene Datei bearbeiten, um die unten gezeigte Channelizer-Einstellung einzufügen.

    Andernfalls kopieren Sie den folgenden Text in die Datei und ersetzen (Hostname) durch den Hostnamen oder die IP-Adresse Ihrer Neptune-DB-Instance. Beachten Sie, dass die eckigen Klammern ([ ]), die den Hostnamen einschließen, erforderlich sind.

    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. Wichtig

    Sie müssen IAM-Anmeldeinformationen zum Signieren der Anfragen angeben. Geben Sie die folgenden Befehle ein, um Ihre Anmeldeinformationen als Umgebungsvariablen festzulegen. Ersetzen Sie dabei die relevanten Elemente durch Ihre Anmeldeinformationen.

    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

    Der Neptune Version 4 Signer verwendet die standardmäßige Anbieterkette für Anmeldeinformationen. Weitere Methoden zur Bereitstellung von Anmeldeinformationen finden Sie unter Verwenden der standardmäßigen Anbieterkette für Anmeldeinformationen im AWS SDK for Java -Entwicklerhandbuch.

    Die Variable SERVICE_REGION ist auch bei Verwendung einer Datei mit Anmeldeinformationen erforderlich.

  5. Stellen Sie die :remote-Verbindung mithilfe der .yaml-Datei her:

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  6. Geben Sie den folgenden Befehl ein, um zum Remote-Modus zu wechseln, der alle Gremlin-Abfragen an die Remote-Verbindung sendet:

    :remote console