Exportar resultados de consultas do Gremlin para o Amazon S3 - Amazon Neptune

Exportar resultados de consultas do Gremlin para o Amazon S3

A partir da versão 1.4.3.0 do mecanismo, o Amazon Neptune é compatível com a exportação de resultados de consultas do Gremlin diretamente para o Amazon S3. Esse recurso permite lidar com grandes resultados de consultas de forma eficiente, exportando-os para um bucket do Amazon S3 em vez de retorná-los como uma resposta de consulta.

Para exportar os resultados da consulta para o Amazon S3, use a etapa call() com o nome do serviço neptune.query.exportToS3 como a etapa final na consulta do Gremlin. A etapa terminal nos drivers do Tinkerpop usando o Bytecode pode ser adicionada após a etapa call(). Os parâmetros de exportação devem ser fornecidos como valores de string.

nota

A consulta com a etapa call() que tem neptune.query.exportToS3 falhará se não for usada como etapa final. Os clientes Gremlin que usam bytecode podem usar etapas de terminal. Consulte as práticas recomendadas do Gremlin na documentação do Amazon Neptune para obter mais informações.

g.V() ... .call('neptune.query.exportToS3', [ 'destination': 's3://your-bucket/path/result.json', 'format': 'GraphSONv3', 'kmskeyArn': 'optional-kms-key-arn' ])
Parâmetros
  • destination (obrigatório): o URI do Amazon S3 em que os resultados serão gravados.

  • format (obrigatório): o formato de saída, atualmente com suporte somente para GraphSONv3.

  • keyArn (opcional): o ARN de uma chave AWS KMS para criptografia do lado do servidor do Amazon S3.

Exemplos

Consulta de exemplo

g.V(). hasLabel('Comment'). valueMap(). call('neptune.query.exportToS3', [ 'destination': 's3://your-bucket/path/result.json', 'format': 'GraphSONv3', 'keyArn': 'optional-kms-key-arn' ])

Exemplo de resposta de consulta

{ "destination":"s3://your-bucket/path/result.json, "exportedResults": 100, "exportedBytes": 102400 }

Pré-requisitos

  • Sua instância de banco de dados do Neptune deve ter acesso ao Amazon S3 por meio de um endpoint da VPC do tipo gateway.

  • Para usar criptografia personalizada do AWS KMS na consulta, é necessário um endpoint da VPC do tipo Interface para o AWS KMS permitir que o Neptune se comunique com o AWS KMS.

  • Você deve habilitar a autenticação do IAM no Neptune e ter as permissões do IAM apropriadas para gravar no bucket do Amazon S3 de destino. Não ter esses requisitos causará um erro de solicitação inválida 400 “O cluster deve ter a autenticação do IAM habilitada para a exportação do S3”.

  • O bucket de destino do Amazon S3:

    • O bucket de destino do Amazon S3 não deve ser público. Block public access deve estar habilitado.

    • O destino do Amazon S3 de destino deve estar vazio.

    • O bucket de destino do Amazon S3 deve ter uma regra de ciclo de vida de Delete expired object delete markers or incomplete multipart uploads com Delete incomplete multipart uploads. Para obter mais informações, consulte S3 Lifecycle Management Update – Support for Multipart Uploads and Delete Markers.

      Uma imagem mostrando as ações das regras do ciclo de vida.
    • O bucket de destino do Amazon S3 deve ter uma regra de ciclo de vida de Delete expired object delete markers or incomplete multipart uploads com Delete incomplete multipart uploads com um valor maior do que a avaliação da consulta (por exemplo, 7 dias). Isso é necessário para excluir uploads incompletos (que não são diretamente visíveis, mas gerariam custos), caso não possam ser concluídos ou abortados pelo Neptune (por exemplo, devido a falhas na instância/no mecanismo). Para obter mais informações, consulte S3 Lifecycle Management Update – Support for Multipart Uploads and Delete Markers.

      Uma imagem mostrando as ações de regra de ciclo de vida e os marcadores de exclusão de objetos expirados.
Considerações importantes
  • A etapa de exportação deve ser a última etapa na consulta do Gremlin.

  • Se um objeto já existir no local especificado do Amazon S3, a consulta falhará.

  • O tempo máximo de execução da consulta para consultas de exportação é limitado a 11 horas e 50 minutos. Esse recurso usa sessões de acesso direto. Atualmente, o limite é 11 horas e 50 minutos para evitar problemas de expiração de tokens.

    nota

    A consulta de exportação ainda respeita o tempo limite da consulta. Para grandes exportações, use um tempo limite de consulta apropriado.

  • Todos os novos uploads de objetos para o Amazon S3 são criptografados automaticamente.

  • Para evitar custos de armazenamento decorrentes de uploads incompletos de várias partes em caso de erros ou falhas, recomendamos configurar uma regra de ciclo de vida com Delete incomplete multipart uploads em seu bucket do Amazon S3.

Formato de resposta

Em vez de retornar os resultados da consulta diretamente, a consulta retorna metadados sobre a operação de exportação, incluindo status e detalhes da exportação. Os resultados da consulta no Amazon S3 estarão no formato GraphSONv3.

{ "data": { "@type": "g:List", "@value": [ { "@type": "g:Map", "@value": [ "browserUsed", { "@type": "g:List", "@value": [ "Safari" ] }, "length", { "@type": "g:List", "@value": [ { "@type": "g:Int32", "@value": 7 } ] }, "locationIP", { "@type": "g:List", "@value": [ "192.0.2.0/24" ] }, "creationDate", { "@type": "g:List", "@value": [ { "@type": "g:Date", "@value": 1348341961000 } ] }, "content", { "@type": "g:List", "@value": [ "no way!" ] } ] }, { "@type": "g:Map", "@value": [ "browserUsed", { "@type": "g:List", "@value": [ "Firefox" ] }, "length", { "@type": "g:List", "@value": [ { "@type": "g:Int32", "@value": 2 } ] }, "locationIP", { "@type": "g:List", "@value": [ "203.0.113.0/24" ] }, "creationDate", { "@type": "g:List", "@value": [ { "@type": "g:Date", "@value": 1348352960000 } ] }, "content", { "@type": "g:List", "@value": [ "ok" ] } ] }, ... ] } }
Segurança
  • Todos os dados transferidos para o Amazon S3 são criptografados em trânsito via SSL.

  • Você pode especificar uma chave do AWS KMS para a criptografia do lado do servidor dos dados exportados. O Amazon S3 criptografa todos os novos dados por padrão. Se o bucket estiver configurado para usar uma chave do AWS KMS específica, ela será usada.

  • O Neptune verifica se o bucket de destino não é público antes de iniciar a exportação.

  • Exportações entre contas e entre regiões não é compatível.

Tratamento de erros
  • O bucket de destino do Amazon S3 é público.

  • O objeto especificado já existe.

  • Você não tem permissões suficientes para gravar no bucket do Amazon S3.

  • A execução da consulta excede o limite máximo de tempo.

Práticas recomendadas
  • Use as regras de ciclo de vida do bucket do Amazon S3 para limpar uploads incompletos de várias partes.

  • Monitore suas operações de exportação usando logs e métricas do Neptune. Você pode verificar o endpoint de status do Gremlin para ver se uma consulta está em execução no momento. Desde que o cliente não tenha recebido uma resposta, presume-se que a consulta esteja em execução.