View a markdown version of this page

Exportação nativa para dados RDF - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exportação nativa para dados RDF

A API de exportação do Neptune permite que você exporte dados do seu banco de dados do Neptune para o Amazon S3. Você pode exportar dados RDF em N-Triples ou em N-Quads formato.

Como funciona a exportação nativa

A exportação nativa é executada na instância de gravação do seu cluster Neptune e grava os dados exportados no Amazon S3 usando uploads de várias partes. Como a exportação usa os recursos computacionais da instância do gravador, é altamente recomendável executar as exportações em um cluster clonado para evitar afetar as cargas de trabalho de produção. Consulte Recomendações para obter mais informações.

Taxa de transferência de exportação

A taxa de transferência de exportação é dimensionada aproximadamente linearmente com o tamanho da instância de até. r7i.16xlarge Como uma estimativa de planejamento conservadora, espere aproximadamente 50.000 declarações por segundo por vCPU.

Use esta fórmula para estimar a duração da exportação:

export_seconds = total_statements / (vCPUs × 50,000)

A taxa de transferência real depende das características do conjunto de dados, incluindo cardinalidade do predicado, complexidade da declaração e tamanho do cluster.

Pré-requisitos

Antes de usar a API de exportação, você deve:

Recomendações

É altamente recomendável executar a operação de exportação em um cluster clonado sem nenhuma read/write carga de trabalho para evitar impacto no desempenho da produção.

Para uma relação preço/desempenho ideal, recomendamos o uso de instâncias 16xlarge para operações de exportação. Esse tipo de instância fornece:

  • Memória suficiente para lidar com grandes conjuntos de dados sem degradação do desempenho

  • Recursos de CPU ideais para processamento simultâneo de exportações

  • Melhor relação custo-benefício para cargas de trabalho de exportação

Permissões do IAM

O recurso de exportação envolve duas funções distintas do IAM:

  • Função IAM do chamador — O principal do IAM (usuário ou função) que envia solicitações para o endpoint da API de exportação. Essa função precisa de permissões de acesso aos dados do Neptune.

  • Função IAM de acesso ao S3 — A função que o Neptune assume para gravar dados exportados para o Amazon S3. Você passa o ARN dessa função no iamRoleArn parâmetro da solicitação de exportação e ele deve estar associado ao seu cluster Neptune.

Permissões do chamador (ações de acesso a dados do Neptune)

O principal do IAM que chama a API de exportação deve ter as seguintes ações de acesso a dados do Neptune em sua 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 obter mais informações, consulte Como usar declarações de política de acesso a dados do IAM.

Permissões da função de acesso do S3

A função do IAM passada no parâmetro de iamRoleArn solicitação deve estar associada ao seu cluster Neptune e deve conceder permissão ao Neptune para gravar no bucket S3 de destino. Para ver as etapas sobre como criar uma função do IAM e associá-la ao seu cluster, consulte Criar uma função do IAM para permitir que o Neptune acesse o Amazon S3.

nota

A API de exportação exige permissões de gravação no S3, ao contrário do carregador em massa, que exige apenas acesso de leitura. Use a política de permissões a seguir em vez da política AmazonS3ReadOnlyAccess gerenciada descrita nessa página.

Anexe a seguinte política de permissões à função de acesso do 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/*" ] } ] }

Permissões opcionais do KMS

Se você especificar um kmsKeyIdentifier na solicitação de exportação, adicione as seguintes permissões à função de acesso do 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" } ] }

Exportar endpoint

Para exportar dados, você envia solicitações HTTP para o https://your-neptune-endpoint:port/export endpoint.

Sintaxe da solicitação de exportação

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

Cabeçalhos de solicitação

  • Content-Type: application/json

Corpo da solicitação

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

Parâmetros de solicitação

destino (string)

Obrigatório. O URI do S3 em que os dados exportados serão armazenados. Deve estar no formato s3://bucket-name/optional-prefix/.

formato (string)

Obrigatório. O formato dos dados exportados. Valores válidos:

  • ntriples— Exportar dados em N-Triples formato

  • nquads— Exportar dados em N-Quads formato

iam RoleArn (cadeia de caracteres)

Obrigatório. O nome de recurso da Amazon (ARN) da função do IAM que o Neptune assume para acessar o bucket do S3.

região (string)

Obrigatório. O Região da AWS do bucket S3. Deve ser a mesma região do seu cluster de Netuno.

compressão (string)

Opcional. Formato de compressão para arquivos exportados. Valores válidos:

  • gz- Comprimir arquivos no formato.gz

kms KeyIdentifier (sequência de caracteres)

Opcional. O ARN da AWS KMS chave a ser usada para criptografar os dados exportados.

ExportFilter (objeto)

Opcional. Filtros para exportar seletivamente um subconjunto de dados RDF. Disponível na versão 1.4.8.0 e posterior do motor.

nomeado GraphUris (matriz de cadeias de caracteres)

URIs de gráficos nomeados a serem exportados (máximo de 100). Somente os dados nos gráficos especificados são exportados. Se um gráfico especificado estiver vazio, a exportação será bem-sucedida com um resultado vazio. URIs inválidos falham com. InvalidParameterException

Sintaxe da resposta

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

O status HTTP da solicitação.

ID de exportação (string)

Um identificador exclusivo para a tarefa de exportação.

Endpoint de status de exportação

Para verificar o status de uma tarefa de exportação, você envia uma solicitação HTTP GET para o endpoint de exportação com o ID de exportação.

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

Parâmetros de solicitação

ID de exportação (string)

Obrigatório. O identificador exclusivo da tarefa de exportação.

Sintaxe da resposta

{ "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 exportação (string)

O identificador exclusivo da tarefa de exportação.

destino (string)

O URI do S3 em que os dados estão sendo exportados.

status (string)

O status atual da tarefa de exportação. Valores válidos:

  • EXPORT_NOT_STARTED— A exportação foi colocada na fila, mas não foi iniciada

  • EXPORT_IN_PROGRESS— A exportação está em execução

  • EXPORT_COMPLETED— Exportação concluída com sucesso

  • EXPORT_CANCELLING— A exportação está sendo cancelada

  • EXPORT_CANCELLED_BY_USER— A exportação foi cancelada pelo usuário

  • EXPORT_S3_ERROR— Falha na exportação devido a um erro de acesso ao S3

  • EXPORT_FAILED— Falha na exportação devido a outro erro

StatusReason (string)

Informações adicionais sobre o status da exportação.

formato (string)

O formato dos dados exportados.

iam RoleArn (cadeia de caracteres)

O ARN da função do IAM usada para acesso ao S3.

kms KeyIdentifier (sequência de caracteres)

O ARN da chave KMS usada para criptografia, se especificado.

ExportFilter (objeto)

O filtro de exportação que foi aplicado, caso tenha sido especificado na solicitação.

  • named GraphUris (array of strings) — Os URIs do gráfico nomeado usados para filtrar a exportação.

exportação TaskDetails (objeto)

Detalhes sobre o andamento da tarefa de exportação:

  • time ElapsedSeconds (number) — Tempo decorrido desde o início da exportação

  • startTime (número) — Hora da época em que a exportação começou

  • num RecordsWritten (número) — Número de registros gravados no S3

  • ProgressPercentage (número) — Porcentagem da exportação concluída

Endpoint de exportação de listas

Para listar todas as tarefas de exportação, você envia uma solicitação HTTP GET para o endpoint de exportação.

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

Sintaxe da resposta

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

Uma matriz de IDs de exportação para todas as tarefas de exportação.

Cancelar endpoint de exportação

Para cancelar uma tarefa de exportação, você envia uma solicitação HTTP DELETE para o endpoint de exportação com o ID de exportação.

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

Parâmetros de solicitação

ID de exportação (string)

Obrigatório. O identificador exclusivo da tarefa de exportação a ser cancelada.

Sintaxe da resposta

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

Formato de saída de exportação

Estrutura de diretórios do S3

Os dados exportados são organizados em seu bucket do S3 da seguinte forma:

s3://your-bucket/export-id/ ├── data/ │ ├── part-00000.nt │ ├── part-00001.nt │ └── ... └── export_status.json
diretório/ dados

Contém os arquivos de dados gráficos exportados no formato especificado.

arquivo export_status.json

Contém metadados sobre a operação de exportação.

Respostas de erro

Códigos de erro comuns

BadRequestException

A solicitação contém parâmetros inválidos ou uma exportação já está em andamento.

AccessDeniedException

A função do IAM não tem as permissões necessárias para acesso ao S3 ou ao KMS.

Exemplo de resposta de erro

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

Exemplos

Iniciar uma exportação

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 uma exportação filtrada (gráficos nomeados)

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

Verifique o status da exportação

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

Cancelar uma exportação

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

Limitações

A exportação nativa tem as seguintes limitações:

  • Suporte a instâncias — a exportação nativa não é suportada em instâncias sem servidor do Neptune ou em réplicas de leitura. A exportação sempre é executada na instância de gravação de um cluster provisionado.

  • Uma exportação por cluster — Somente uma exportação pode estar ativa em um cluster por vez. Se você enviar uma nova solicitação de exportação enquanto outra exportação estiver em andamento, a solicitação falhará.

  • Sem retomada automática — Se o mecanismo for reiniciado durante uma exportação, a exportação falhará e deverá ser reiniciada desde o início. O progresso da exportação não é preservado nas reinicializações do mecanismo.

  • Disponibilidade do status após eventos do mecanismo — Se o mecanismo travar, você não poderá recuperar o status de exportação por meio da API de status.

  • Consistência durante gravações — se o cluster estiver atendendo ao tráfego de gravação durante uma exportação, os dados exportados podem refletir uma visão parcial ou inconsistente do gráfico. Para garantir uma exportação consistente, execute a exportação em um cluster clonado.