View a markdown version of this page

Nativer Export für RDF-Daten - 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.

Nativer Export für RDF-Daten

Mit der Neptune-Export-API können Sie Daten aus Ihrer Neptune-Datenbank nach Amazon S3 exportieren. Sie können RDF-Daten in unser Format exportieren. N-Triples N-Quads

Wie funktioniert der native Export

Der native Export wird auf der Writer-Instance Ihres Neptune-Clusters ausgeführt und schreibt exportierte Daten mithilfe mehrteiliger Uploads in Amazon S3. Da der Export die Rechenressourcen der Writer-Instance nutzt, empfehlen wir dringend, Exporte für einen geklonten Cluster auszuführen, um die Produktionsworkloads nicht zu beeinträchtigen. Weitere Informationen finden Sie unter Empfehlungen.

Durchsatz exportieren

Der Exportdurchsatz skaliert ungefähr linear mit der Instanzgröße von bis zur7i.16xlarge. Als konservative Planungsschätzung gehen Sie von etwa 50.000 Anweisungen pro Sekunde und vCPU aus.

Verwenden Sie diese Formel, um die Exportdauer abzuschätzen:

export_seconds = total_statements / (vCPUs × 50,000)

Der tatsächliche Durchsatz hängt von den Datensatzmerkmalen ab, einschließlich der Kardinalität der Prädikate, der Komplexität der Anweisungen und der Clustergröße.

Voraussetzungen

Bevor Sie die Export-API verwenden, müssen Sie:

Empfehlungen

Wir empfehlen dringend, den Exportvorgang auf einem geklonten Cluster ohne read/write Workloads auszuführen, um Auswirkungen auf die Produktionsleistung zu vermeiden.

Für ein optimales Preis-Leistungs-Verhältnis empfehlen wir, 16xlarge Instances für Exportvorgänge zu verwenden. Dieser Instanztyp bietet:

  • Ausreichend Arbeitsspeicher, um große Datensätze ohne Leistungseinbußen zu verarbeiten

  • Optimale CPU-Ressourcen für die gleichzeitige Exportverarbeitung

  • Beste Kosteneffizienz für Export-Workloads

IAM-Berechtigungen

Die Exportfunktion umfasst zwei separate IAM-Rollen:

  • IAM-Rolle des Anrufers — Der IAM-Prinzipal (Benutzer oder Rolle), der Anfragen an den Export-API-Endpunkt sendet. Für diese Rolle sind Neptune-Datenzugriffsberechtigungen erforderlich.

  • S3-Zugriffs-IAM-Rolle — Die Rolle, die Neptune übernimmt, um exportierte Daten in Amazon S3 zu schreiben. Sie übergeben den ARN dieser Rolle im iamRoleArn Parameter der Exportanforderung, und er muss Ihrem Neptune-Cluster zugeordnet sein.

Anruferberechtigungen (Neptune-Datenzugriffsaktionen)

Die IAM-Richtlinie des IAM-Prinzipals, der die Export-API aufruft, muss die folgenden Neptune-Datenzugriffsaktionen enthalten:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowNeptuneExportActions", "Effect": "Allow", "Action": [ "neptune-db:StartExportJob", "neptune-db:GetExportJobStatus", "neptune-db:ListExportJobs", "neptune-db:CancelExportJob" ], "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-resource-id/*" } ] }

Weitere Informationen finden Sie unter Verwenden von IAM-Richtlinienanweisungen für den Datenzugriff.

Berechtigungen für S3-Zugriffsrollen

Die im iamRoleArn Anforderungsparameter übergebene IAM-Rolle muss Ihrem Neptune-Cluster zugeordnet sein und Neptune die Berechtigung gewähren, in den Ziel-S3-Bucket zu schreiben. Schritte zum Erstellen einer IAM-Rolle und zum Zuordnen dieser Rolle zu Ihrem Cluster finden Sie unter Erstellen Sie eine IAM-Rolle, um Neptune den Zugriff auf Amazon S3 zu ermöglichen.

Anmerkung

Die Export-API benötigt Schreibberechtigungen für S3, im Gegensatz zum Bulkloader, der nur Lesezugriff benötigt. Verwenden Sie die folgende Berechtigungsrichtlinie anstelle der auf dieser Seite beschriebenen AmazonS3ReadOnlyAccess verwalteten Richtlinie.

Hängen Sie die folgende Berechtigungsrichtlinie an die S3-Zugriffsrolle an:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3WriteForNeptuneExport", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:GetBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Optionale KMS-Berechtigungen

Wenn Sie kmsKeyIdentifier in der Exportanforderung eine angeben, fügen Sie der S3-Zugriffsrolle die folgenden Berechtigungen hinzu:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSForNeptuneExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id" } ] }

Endpunkt exportieren

Um Daten zu exportieren, senden Sie HTTP-Anfragen an den https://your-neptune-endpoint:port/export Endpunkt.

Syntax der Exportanfrage

POST https://your-neptune-endpoint:port/export

Anfordern von Headern

  • Content-Type: application/json

Anforderungstext

{ "destination": "string", "format": "string", "iamRoleArn": "string", "region": "string", "compression": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] } }

Anforderungsparameter

Ziel (Zeichenfolge)

Erforderlich Die S3-URI, in der die exportierten Daten gespeichert werden. Muss im Format s3://bucket-name/optional-prefix/ angegeben werden.

format (Zeichenfolge)

Erforderlich Das Format für die exportierten Daten. Zulässige Werte:

  • ntriples— Daten im N-Triples Format exportieren

  • nquads— Daten im N-Quads Format exportieren

iam RoleArn (Zeichenfolge)

Erforderlich Der Amazon-Ressourcenname (ARN) der IAM-Rolle, die Neptune für den Zugriff auf den S3-Bucket annimmt.

Region (Zeichenfolge)

Erforderlich Der AWS-Region des S3-Buckets. Muss dieselbe Region wie Ihr Neptun-Cluster sein.

Komprimierung (Zeichenfolge)

Optional. Format der Komprimierung für exportierte Dateien. Zulässige Werte:

  • gz- Dateien im.gz-Format komprimieren

kms KeyIdentifier (Zeichenfolge)

Optional. Der ARN des AWS KMS Schlüssels, der zum Verschlüsseln der exportierten Daten verwendet werden soll.

ExportFilter (Objekt)

Optional. Filter, um selektiv eine Teilmenge von RDF-Daten zu exportieren. Verfügbar in der Engine-Version 1.4.8.0 und höher.

benannt GraphUris (Reihe von Zeichenketten)

Benannte Graph-URIs, die exportiert werden sollen (maximal 100). Nur Daten in den angegebenen Grafiken werden exportiert. Wenn ein angegebenes Diagramm leer ist, wird der Export mit einem leeren Ergebnis erfolgreich abgeschlossen. Ungültige URIs schlagen fehl mit. InvalidParameterException

Antwortsyntax

{ "status": "string", "payload": { "exportId": "string" } }
status (Zeichenfolge)

Der HTTP-Status der Anforderung.

ExportID (Zeichenfolge)

Ein eindeutiger Bezeichner für die Exportaufgabe.

Endpunkt für den Exportstatus

Um den Status einer Exportaufgabe zu überprüfen, senden Sie eine HTTP GET-Anfrage mit der Export-ID an den Export-Endpunkt.

GET https://your-neptune-endpoint:port/export?exportId=export-id

Anforderungsparameter

ExportID (Zeichenfolge)

Erforderlich Der eindeutige Bezeichner der Exportaufgabe.

Antwortsyntax

{ "status": "string", "payload": { "exportId": "string", "destination": "string", "status": "string", "statusReason": "string", "format": "string", "iamRoleArn": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] }, "exportTaskDetails": { "timeElapsedSeconds": number, "startTime": number, "numRecordsWritten": number, "progressPercentage": number } } }
ExportID (Zeichenfolge)

Der eindeutige Bezeichner der Exportaufgabe.

Ziel (Zeichenfolge)

Die S3-URI, in die die Daten exportiert werden.

status (Zeichenfolge)

Der aktuelle Status der Exportaufgabe. Zulässige Werte:

  • EXPORT_NOT_STARTED— Der Export wurde in die Warteschlange gestellt, aber nicht gestartet

  • EXPORT_IN_PROGRESS— Der Export läuft gerade

  • EXPORT_COMPLETED— Der Export wurde erfolgreich abgeschlossen

  • EXPORT_CANCELLING— Der Export wird storniert

  • EXPORT_CANCELLED_BY_USER— Der Export wurde vom Benutzer storniert

  • EXPORT_S3_ERROR— Der Export ist aufgrund eines S3-Zugriffsfehlers fehlgeschlagen

  • EXPORT_FAILED— Der Export ist aufgrund eines anderen Fehlers fehlgeschlagen

statusReason (Zeichenfolge)

Zusätzliche Informationen zum Exportstatus.

format (Zeichenfolge)

Das Format der exportierten Daten.

iam RoleArn (Zeichenfolge)

Der ARN der IAM-Rolle, die für den S3-Zugriff verwendet wird.

kms KeyIdentifier (Zeichenfolge)

Der ARN des KMS-Schlüssels, der für die Verschlüsselung verwendet wird, falls angegeben.

ExportFilter (Objekt)

Der Exportfilter, der angewendet wurde, falls einer in der Anfrage angegeben wurde.

  • named GraphUris (Array von Zeichenketten) — Die benannten Graph-URIs, die zum Filtern des Exports verwendet werden.

export TaskDetails (Objekt)

Details zum Fortschritt der Exportaufgabe:

  • Zeit ElapsedSeconds (Zahl) — Zeit, die seit Beginn des Exports vergangen ist

  • startTime (number) — Epochenzeit, zu der der Export gestartet wurde

  • num RecordsWritten (number) — Anzahl der in S3 geschriebenen Datensätze

  • progressPercentage (Zahl) — Prozentsatz des abgeschlossenen Exports

Endpunkt der Exporte auflisten

Um alle Exportaufgaben aufzulisten, senden Sie eine HTTP GET-Anfrage an den Export-Endpunkt.

GET https://your-neptune-endpoint:port/export

Antwortsyntax

{ "status": "string", "payload": [ "string" ] }
Nutzlast (Array)

Ein Array von Export-IDs für alle Exportaufgaben.

Export-Endpunkt abbrechen

Um eine Exportaufgabe abzubrechen, senden Sie eine HTTP DELETE-Anfrage mit der Export-ID an den Export-Endpunkt.

DELETE https://your-neptune-endpoint:port/export?exportId=export-id

Anforderungsparameter

ExportID (Zeichenfolge)

Erforderlich Der eindeutige Bezeichner der Exportaufgabe, die abgebrochen werden soll.

Antwortsyntax

{ "status": "string", "payload": { "message": "string" } }

Ausgabeformat exportieren

S3-Verzeichnisstruktur

Exportierte Daten sind in Ihrem S3-Bucket wie folgt organisiert:

s3://your-bucket/export-id/ ├── data/ │ ├── part-00000.nt │ ├── part-00001.nt │ └── ... └── export_status.json
Daten/Verzeichnis

Enthält die exportierten Grafikdatendateien im angegebenen Format.

Datei export_status.json

Enthält Metadaten über den Exportvorgang.

Fehlermeldungen

Allgemeine Fehlercodes

BadRequestException

Die Anfrage enthält ungültige Parameter oder ein Export ist bereits im Gange.

AccessDeniedException

Der IAM-Rolle fehlen die erforderlichen Berechtigungen für den S3- oder KMS-Zugriff.

Beispiel für eine Fehlerantwort

{ "code": "BadRequestException", "requestId": "request-id", "message": "Export already in progress with ID 'existing-id'. Please wait or cancel it first.", "detailedMessage": "Detailed error description" }

Beispiele

Starte einen Export

curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "ntriples", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2" }'

Startet einen gefilterten Export (benannte Grafiken)

curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "nquads", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2", "exportFilter": { "namedGraphUris": [ "http://example.com/graph1", "http://example.com/graph2" ] } }'

Überprüfen Sie den Exportstatus

curl -X GET "https://your-cluster-endpoint:8182/export?exportId=<id>"

Einen Export abbrechen

curl -X DELETE "https://your-cluster-endpoint:8182/export?exportId=<id>"

Einschränkungen

Für den systemeigenen Export gelten die folgenden Einschränkungen:

  • Instanzunterstützung — Der native Export wird auf Neptune Serverless-Instances oder Read Replicas nicht unterstützt. Der Export wird immer auf der Writer-Instanz eines bereitgestellten Clusters ausgeführt.

  • Ein Export pro Cluster — Auf einem Cluster kann jeweils nur ein Export aktiv sein. Wenn Sie eine neue Exportanforderung einreichen, während ein anderer Export läuft, schlägt die Anfrage fehl.

  • Keine automatische Wiederaufnahme — Wenn die Engine während eines Exports neu gestartet wird, schlägt der Export fehl und muss von Anfang an neu gestartet werden. Der Exportfortschritt bleibt bei Engine-Neustarts nicht erhalten.

  • Statusverfügbarkeit nach Engine-Ereignissen — Wenn die Engine abstürzt, können Sie den Exportstatus nicht über die Status-API abrufen.

  • Konsistenz bei Schreibvorgängen — Wenn Ihr Cluster während eines Exports Schreibdatenverkehr verarbeitet, können die exportierten Daten eine teilweise oder inkonsistente Ansicht des Diagramms wiedergeben. Um einen konsistenten Export zu gewährleisten, führen Sie den Export für einen geklonten Cluster aus.