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:
Disponer de un clúster de bases de datos de Neptune que ejecute la versión 1.4.6.0 o posterior (la versión 1.4.8.0 o posterior es compatible)
exportFilterCree un rol de IAM con permisos para acceder a su bucket de S3
Configure un punto final de VPC de S3 en la VPC de su clúster de Neptune
Recomendaciones
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
iamRoleArnpará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 formatonquads— 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 iniciadoEXPORT_IN_PROGRESS— La exportación se está ejecutando actualmenteEXPORT_COMPLETED— La exportación se completó correctamenteEXPORT_CANCELLING— Se está cancelando la exportaciónEXPORT_CANCELLED_BY_USER— El usuario canceló la exportaciónEXPORT_S3_ERROR— La exportación falló debido a un error de acceso a S3EXPORT_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.