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 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 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. Ein 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 call() Schritt hat 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 unter Best Practices für Gremlin in der Amazon Neptune Neptune-Dokumentation.

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

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

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

Beispiele

Beispielabfrage

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 Antwort auf eine Anfrage

{ "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, ist ein VPC-Endpunkt vom Typ Interface für AWS KMS 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 S3-Ziel-Bucket zu schreiben. Wenn Sie dies nicht tun, wird der Fehler 400 Bad Request ausgelöst: „Für den S3-Export muss im Cluster die IAM-Authentifizierung aktiviert sein“.

  • Der Amazon S3-Ziel-Bucket:

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

    • Das Amazon S3 S3-Zielziel muss leer sein.

    • Für den Amazon S3 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 S3-Ziel-Bucket muss eine Lebenszyklusregel aktiviert Delete expired object delete markers or incomplete multipart uploads sein, deren Wert höher ist, als die Auswertung der Abfrage dauert (z. B. 7 Tage). Delete incomplete multipart uploads 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 Lebenszyklusregeln und die Markierungen zum Löschen abgelaufener Objekte zeigt.
Wichtige Überlegungen
  • Der Exportschritt muss der letzte Schritt in Ihrer Gremlin-Abfrage sein.

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

  • Die maximale Ausfü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 das Abfrage-Timeout. Für umfangreiche 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 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 SONv3Graph-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 neue Daten standardmäßig. 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.

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

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

  • Das angegebene Objekt ist bereits vorhanden.

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

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

Bewährte Methoden
  • Verwenden Sie die Amazon S3 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 festzustellen, ob gerade eine Abfrage ausgeführt wird. Solange der Client keine Antwort erhalten hat, wird davon ausgegangen, dass die Abfrage ausgeführt wird.