View a markdown version of this page

Exportación nativa de datos RDF - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Exportación nativa de datos RDF

La API de exportación de Neptune le permite exportar datos de su base de datos de Neptune a Amazon S3. Puede exportar los datos RDF en N-Triples formato o. N-Quads

Cómo funciona la exportación nativa

La exportación nativa se ejecuta en la instancia de escritura de su clúster de Neptune y escribe los datos exportados en Amazon S3 mediante cargas multiparte. Dado que la exportación utiliza los recursos informáticos de la instancia de escritura, recomendamos encarecidamente ejecutar las exportaciones en un clúster clonado para evitar que afecten a las cargas de trabajo de producción. Consulta las recomendaciones para obtener más información.

Rendimiento de exportación

El rendimiento de exportación se escala de forma aproximadamente lineal con un tamaño de instancia de hastar7i.16xlarge. Como estimación de planificación conservadora, espere aproximadamente 50 000 declaraciones por segundo por CPU virtual.

Utilice esta fórmula para estimar la duración de la exportación:

export_seconds = total_statements / (vCPUs × 50,000)

El rendimiento real depende de las características del conjunto de datos, incluida la cardinalidad de los predicados, la complejidad de las declaraciones y el tamaño del clúster.

Requisitos previos

Antes de usar la API de exportación, debes:

Recomendaciones

Recomendamos encarecidamente ejecutar la operación de exportación en un clúster clonado sin read/write cargas de trabajo para evitar que esto afecte al rendimiento de la producción.

Para obtener una relación precio-rendimiento óptima, recomendamos utilizar instancias de 16 veces más grandes para las operaciones de exportación. Este tipo de instancia proporciona:

  • Memoria suficiente para gestionar grandes conjuntos de datos sin reducir el rendimiento

  • Recursos de CPU óptimos para el procesamiento simultáneo de exportaciones

  • La mejor rentabilidad para las cargas de trabajo de exportación

Permisos de IAM

La función de exportación implica dos funciones de IAM independientes:

  • Función de IAM de la persona que llama: la persona principal de IAM (usuario o función) que envía las solicitudes al punto final de la API de exportación. Este rol necesita los permisos de acceso a los datos de Neptune.

  • Función de IAM de acceso a S3: función que Neptune asume para escribir los datos exportados a Amazon S3. El ARN de este rol se transfiere al iamRoleArn parámetro de la solicitud de exportación y debe estar asociado a su clúster de Neptune.

Permisos de llamadas (acciones de acceso a los datos de Neptune)

El director de IAM que llama a la API de exportación debe incluir las siguientes acciones de acceso a los datos de Neptune en su política de IAM:

{ "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/*" } ] }

Para obtener más información, consulte Uso de las declaraciones de política de acceso a los datos de IAM.

Permisos de rol de acceso a S3

La función de IAM transferida en el parámetro de iamRoleArn solicitud debe estar asociada a su clúster de Neptune y debe conceder a Neptune permiso para escribir en el bucket de S3 de destino. Para ver los pasos para crear un rol de IAM y asociarlo a su clúster, consulte Crear un rol de IAM para permitir que Neptune acceda a Amazon S3.

nota

La API de exportación requiere permisos de escritura en S3, a diferencia del cargador masivo, que solo requiere acceso de lectura. Utilice la siguiente política de permisos en lugar de la política AmazonS3ReadOnlyAccess administrada que se describe en esa página.

Adjunte la siguiente política de permisos a la función de acceso de S3:

{ "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/*" ] } ] }

Permisos de KMS opcionales

Si especificas un kmsKeyIdentifier en la solicitud de exportación, agrega los siguientes permisos al rol de acceso a S3:

{ "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" } ] }

Punto final de exportación

Para exportar datos, debe enviar solicitudes HTTP al https://your-neptune-endpoint:port/export punto final.

Sintaxis de la solicitud de exportación

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

Encabezados de solicitudes

  • Content-Type: application/json

Cuerpo de la solicitud

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

Parámetros de solicitud

destino (cadena)

Obligatorio. El URI de S3 donde se almacenarán los datos exportados. Tiene que tener el formato s3://bucket-name/optional-prefix/.

formato (cadena)

Obligatorio. El formato de los datos exportados. Valores válidos:

  • ntriples— Exportar datos en N-Triples formato

  • nquads— Exportar datos en N-Quads formato

iam RoleArn (cadena)

Obligatorio. El nombre de recurso de Amazon (ARN) de la función de IAM que Neptune asume para acceder al bucket de S3.

región (cadena)

Obligatorio. El Región de AWS del bucket S3. Debe estar en la misma región que el cúmulo de Neptuno.

compresión (cadena)

Opcional. Formato de compresión para los archivos exportados. Valores válidos:

  • gz- Comprime archivos en formato.gz

kms KeyIdentifier (cadena)

Opcional. El ARN de la AWS KMS clave que se utilizará para cifrar los datos exportados.

Filtro de exportación (objeto)

Opcional. Filtros para exportar selectivamente un subconjunto de datos RDF. Disponible en la versión 1.4.8.0 del motor y posteriores.

nombrado GraphUris (matriz de cadenas)

URI de gráficos con nombre para exportar (máximo 100). Solo se exportan los datos de los gráficos especificados. Si un gráfico especificado está vacío, la exportación se realiza correctamente con un resultado vacío. Los URI no válidos fallan con. InvalidParameterException

Sintaxis de la respuesta

{ "status": "string", "payload": { "exportId": "string" } }
estado (cadena)

El estado HTTP de la solicitud.

ID de exportación (cadena)

Un identificador único para la tarea de exportación.

Punto final de estado de exportación

Para comprobar el estado de una tarea de exportación, debe enviar una solicitud HTTP GET al punto final de exportación con el ID de exportación.

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

Parámetros de solicitud

ID de exportación (cadena)

Obligatorio. El identificador único de la tarea de exportación.

Sintaxis de la respuesta

{ "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 } } }
ID de exportación (cadena)

El identificador único de la tarea de exportación.

destino (cadena)

El URI de S3 al que se exportan los datos.

estado (cadena)

El estado actual de la tarea de exportación. Valores válidos:

  • EXPORT_NOT_STARTED— La exportación se ha puesto en cola pero no se ha iniciado

  • EXPORT_IN_PROGRESS— La exportación se está ejecutando actualmente

  • EXPORT_COMPLETED— La exportación se completó correctamente

  • EXPORT_CANCELLING— Se está cancelando la exportación

  • EXPORT_CANCELLED_BY_USER— El usuario canceló la exportación

  • EXPORT_S3_ERROR— La exportación falló debido a un error de acceso a S3

  • EXPORT_FAILED— Falló la exportación debido a otro error

StatusReason (cadena)

Información adicional sobre el estado de la exportación.

formato (cadena)

El formato de los datos exportados.

iam RoleArn (cadena)

El ARN del rol de IAM utilizado para el acceso a S3.

kms KeyIdentifier (cadena)

El ARN de la clave de KMS utilizada para el cifrado, si se especifica.

Filtro de exportación (objeto)

El filtro de exportación que se aplicó, si se especificó uno en la solicitud.

  • denominado GraphUris (matriz de cadenas): los URI del gráfico con nombre asignado se utilizan para filtrar la exportación.

exportar TaskDetails (objeto)

Detalles sobre el progreso de la tarea de exportación:

  • tiempo ElapsedSeconds (número): tiempo transcurrido desde que se inició la exportación

  • StartTime (número): época en la que se inició la exportación

  • num RecordsWritten (número): número de registros escritos en S3

  • ProgresPercentage (número): porcentaje de exportación completada

Punto final de exportación de la lista

Para enumerar todas las tareas de exportación, envía una solicitud HTTP GET al punto final de exportación.

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

Sintaxis de la respuesta

{ "status": "string", "payload": [ "string" ] }
carga útil (matriz)

Un conjunto de identificadores de exportación para todas las tareas de exportación.

Cancela el punto final de exportación

Para cancelar una tarea de exportación, envía una solicitud HTTP DELETE al punto final de exportación con el ID de exportación.

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

Parámetros de solicitud

ID de exportación (cadena)

Obligatorio. El identificador único de la tarea de exportación que se va a cancelar.

Sintaxis de la respuesta

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

Formato de salida de exportación

Estructura de directorios de S3

Los datos exportados se organizan en su bucket de S3 de la siguiente manera:

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

Contiene los archivos de datos gráficos exportados en el formato especificado.

Archivo export_status.json

Contiene metadatos sobre la operación de exportación.

Respuestas de error

Códigos de error comunes

BadRequestException

La solicitud contiene parámetros no válidos o ya hay una exportación en curso.

AccessDeniedException

La función de IAM carece de los permisos necesarios para acceder a S3 o KMS.

Ejemplo de respuesta de error

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

Ejemplos

Iniciar una exportación

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" }'

Iniciar una exportación filtrada (gráficos con nombre)

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" ] } }'

Compruebe el estado de la exportación

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

Cancelar una exportación

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

Limitaciones

La exportación nativa tiene las siguientes limitaciones:

  • Compatibilidad con instancias: la exportación nativa no se admite en las instancias sin servidor de Neptune ni en las réplicas de lectura. La exportación siempre se ejecuta en la instancia de escritura de un clúster aprovisionado.

  • Una exportación por clúster: solo puede haber una exportación activa en un clúster a la vez. Si envías una nueva solicitud de exportación mientras hay otra exportación en curso, la solicitud fallará.

  • Sin reanudación automática: si el motor se reinicia durante una exportación, se produce un error en la exportación y se debe reiniciar desde el principio. El progreso de la exportación no se conserva cuando se reinicia el motor.

  • Disponibilidad del estado después de los eventos del motor: si el motor falla, no puedes recuperar el estado de la exportación a través de la API de estado.

  • Coherencia durante las escrituras: si tu clúster gestiona el tráfico de escritura durante una exportación, los datos exportados pueden reflejar una vista parcial o incoherente del gráfico. Para garantizar una exportación coherente, ejecuta la exportación en un clúster clonado.