View a markdown version of this page

Exportieren von Gremlin-Abfrageergebnissen nach Amazon S3 - 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.

Exportieren von Gremlin-Abfrageergebnissen nach Amazon S3

Ab der Engine-Version 1.4.3.0 unterstützt Amazon Neptune den direkten Export von Gremlin-Abfrageergebnissen nach Amazon S3. Mit dieser Funktion können Sie große Abfrageergebnisse effizient verarbeiten, indem Sie sie in einen Amazon S3-Bucket exportieren, anstatt sie als Abfrageantwort zurückzugeben.

Um Abfrageergebnisse nach Amazon S3 zu exportieren, verwenden Sie den call() Schritt mit dem neptune.query.exportToS3 Servicenamen als letzten Schritt in Ihrer Gremlin-Abfrage. Der Terminalschritt in Tinkerpop-Treibern, die Bytecode verwenden, kann nach dem Schritt hinzugefügt werden. call() Die Exportparameter müssen als Zeichenkettenwerte bereitgestellt werden.

Anmerkung

Die Abfrage mit dem ersten call() Schritt schlägt neptune.query.exportToS3 fehl, wenn sie nicht als letzter Schritt verwendet wird. Die Gremlin-Clients, die Bytecode verwenden, können Terminalschritte verwenden. Weitere Informationen finden Sie in den Best Practices von Gremlin in der Amazon Neptune-Dokumentation.

g.V() ... .call('neptune.query.exportToS3', [ 'destination': 's3://your-bucket/path/result.json', 'format': 'GraphSONv3', 'kmskeyArn': 'optional-kms-key-arn' ])
Parameters
  • destination: erforderlich — Die Amazon S3-URI, in die die Ergebnisse geschrieben werden.

  • format: erforderlich — Das Ausgabeformat unterstützt derzeit nur 'GraphsOnV3'.

  • keyArn: optional — Die ARN eines AWS KMS Schlüssels für die serverseitige Amazon S3-Verschlüsselung.

Beispiele

Beispiel für eine Abfrage

g.V(). hasLabel('Comment'). valueMap(). call('neptune.query.exportToS3', [ 'destination': 's3://your-bucket/path/result.json', 'format': 'GraphSONv3', 'keyArn': 'optional-kms-key-arn' ])

Beispiel für eine Abfrageantwort

{ "destination":"s3://your-bucket/path/result.json, "exportedResults": 100, "exportedBytes": 102400 }

Voraussetzungen

  • Ihre Neptune-DB-Instance muss über einen VPC-Endpunkt vom Typ Gateway Zugriff auf Amazon S3 haben.

  • Um eine benutzerdefinierte AWS KMS Verschlüsselung in der Abfrage zu verwenden, AWS KMS ist ein Interface-type VPC-Endpunkt für erforderlich, mit dem Neptune kommunizieren kann. AWS KMS

  • Sie müssen die IAM-Authentifizierung auf Neptune aktivieren und über die entsprechenden IAM-Berechtigungen verfügen, um in den Amazon S3-Ziel-Bucket zu schreiben. Wenn Sie dies nicht tun, wird der Fehler 400 Bad Requests angezeigt: „Auf dem Cluster muss die IAM-Authentifizierung für den S3-Export aktiviert sein“.

  • Der Amazon S3-Ziel-Bucket:

    • Der Amazon S3-Ziel-Bucket darf nicht öffentlich sein. Block public accessmuss aktiviert sein.

    • Das Amazon S3-Zielziel muss leer sein.

    • Für den Amazon S3-Ziel-Bucket muss eine Lebenszyklusregel Delete expired object delete markers or incomplete multipart uploads mit aktiviert seinDelete incomplete multipart uploads. Weitere Informationen finden Sie unter Amazon S3-Lifecycle-Management-Update — Unterstützung für mehrteilige Uploads und Löschmarkierungen.

      Ein Bild, das die Aktionen der Lebenszyklusregeln zeigt.
    • Im Amazon S3-Ziel-Bucket muss die Lebenszyklusregel aktiviert sein und auf Delete expired object delete markers or incomplete multipart uploads einen Wert Delete incomplete multipart uploads gesetzt sein, der höher ist, als die Auswertung der Abfrage dauert (z. B. 7 Tage). Dies ist erforderlich, um unvollständige Uploads (die nicht direkt sichtbar sind, aber Kosten verursachen würden) zu löschen, falls sie von Neptune nicht abgeschlossen oder abgebrochen werden können (z. B. aufgrund von Fehlern). instance/engine Weitere Informationen finden Sie unter Amazon S3 Lifecycle Management-Update — Unterstützung für mehrteilige Uploads und Löschmarkierungen.

      Ein Bild, das die Aktionen der Lebenszyklusregel und die Löschmarkierungen für abgelaufene Objekte zeigt.
Wichtige Überlegungen
  • Der Exportschritt muss der letzte Schritt in Ihrer Gremlin-Abfrage sein.

  • Wenn am angegebenen Amazon S3-Standort bereits ein Objekt existiert, schlägt die Abfrage fehl.

  • Die maximale Abfrageausführungszeit für Exportabfragen ist auf 11 Stunden und 50 Minuten begrenzt. Diese Funktion verwendet Forward-Access-Sitzungen. Sie ist derzeit auf 11 Stunden und 50 Minuten begrenzt, um Probleme mit dem Ablauf von Tokens zu vermeiden.

    Anmerkung

    Die Exportabfrage berücksichtigt weiterhin den Abfrage-Timeout. Für große Exporte sollten Sie ein geeignetes Abfrage-Timeout verwenden.

  • Alle Uploads neuer Objekte auf Amazon S3 werden automatisch verschlüsselt.

  • Um Speicherkosten durch unvollständige mehrteilige Uploads im Falle von Fehlern oder Abstürzen zu vermeiden, empfehlen wir, eine Lebenszyklusregel für Ihren Delete incomplete multipart uploads Amazon S3-Bucket einzurichten.

Reaktionsformat

Anstatt die Abfrageergebnisse direkt zurückzugeben, gibt die Abfrage Metadaten über den Exportvorgang zurück, einschließlich Status und Exportdetails. Die Abfrageergebnisse in Amazon S3 werden im GraphsOnV3-Format vorliegen.

{ "data": { "@type": "g:List", "@value": [ { "@type": "g:Map", "@value": [ "browserUsed", { "@type": "g:List", "@value": [ "Safari" ] }, "length", { "@type": "g:List", "@value": [ { "@type": "g:Int32", "@value": 7 } ] }, "locationIP", { "@type": "g:List", "@value": [ "192.0.2.0/24" ] }, "creationDate", { "@type": "g:List", "@value": [ { "@type": "g:Date", "@value": 1348341961000 } ] }, "content", { "@type": "g:List", "@value": [ "no way!" ] } ] }, { "@type": "g:Map", "@value": [ "browserUsed", { "@type": "g:List", "@value": [ "Firefox" ] }, "length", { "@type": "g:List", "@value": [ { "@type": "g:Int32", "@value": 2 } ] }, "locationIP", { "@type": "g:List", "@value": [ "203.0.113.0/24" ] }, "creationDate", { "@type": "g:List", "@value": [ { "@type": "g:Date", "@value": 1348352960000 } ] }, "content", { "@type": "g:List", "@value": [ "ok" ] } ] }, ... ] } }
Sicherheit
  • Alle an Amazon S3 übertragenen Daten werden bei der Übertragung mit SSL verschlüsselt.

  • Sie können einen AWS KMS Schlüssel für die serverseitige Verschlüsselung der exportierten Daten angeben. Amazon S3 verschlüsselt standardmäßig neue Daten. Wenn der Bucket für die Verwendung eines bestimmten AWS KMS Schlüssels konfiguriert ist, wird dieser Schlüssel verwendet.

  • Neptune überprüft, ob der Ziel-Bucket nicht öffentlich ist, bevor der Export gestartet wird.

  • Cross-account und regionsübergreifende Exporte werden nicht unterstützt.

Fehlerbehandlung
  • Der Amazon S3-Ziel-Bucket ist öffentlich.

  • Das angegebene Objekt ist bereits vorhanden.

  • Sie verfügen nicht über ausreichende Berechtigungen, um in den Amazon S3-Bucket zu schreiben.

  • Die Ausführung der Abfrage überschreitet das maximale Zeitlimit.

Bewährte Methoden
  • Verwenden Sie die Amazon S3-Bucket-Lebenszyklusregeln, um unvollständige mehrteilige Uploads zu bereinigen.

  • Überwachen Sie Ihre Exportvorgänge mithilfe von Neptune-Protokollen und -Metriken. Sie können den Gremlin-Status-Endpunkt überprüfen, um zu sehen, ob gerade eine Abfrage ausgeführt wird. Solange der Client keine Antwort erhalten hat, wird davon ausgegangen, dass die Abfrage läuft.