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:
Tenha um cluster de banco de dados Neptune executando a versão 1.4.6.0 ou posterior (versão 1.4.8.0 ou posterior para suporte)
exportFilterCrie uma função do IAM com permissões para acessar seu bucket do S3
Recomendações
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
iamRoleArnparâ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 formatonquads— 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 iniciadaEXPORT_IN_PROGRESS— A exportação está em execuçãoEXPORT_COMPLETED— Exportação concluída com sucessoEXPORT_CANCELLING— A exportação está sendo canceladaEXPORT_CANCELLED_BY_USER— A exportação foi cancelada pelo usuárioEXPORT_S3_ERROR— Falha na exportação devido a um erro de acesso ao S3EXPORT_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.