View a markdown version of this page

Esportazione dei risultati delle query Gremlin in Amazon S3 - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esportazione dei risultati delle query Gremlin in Amazon S3

A partire dalla versione 1.4.3.0 del motore, Amazon Neptune supporta l'esportazione dei risultati delle query Gremlin direttamente in Amazon S3. Questa funzionalità consente di gestire in modo efficiente i risultati di query di grandi dimensioni esportandoli in un bucket Amazon S3 anziché restituirli come risposta alla query.

Per esportare i risultati delle query in Amazon S3, utilizza il call() passaggio con il nome del neptune.query.exportToS3 servizio come passaggio finale della query su Gremlin. Dopo il passaggio è possibile aggiungere la fase terminale nei driver Tinkerpop che utilizzano Bytecode. call() I parametri di esportazione devono essere forniti come valori di stringa.

Nota

La query contenente il call() passaggio neptune.query.exportToS3 avrà esito negativo se non viene utilizzata come passaggio finale. I client Gremlin che utilizzano il bytecode possono utilizzare i passaggi del terminale. Per ulteriori informazioni, consulta le best practice di Gremlin nella documentazione di Amazon Neptune.

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

Esempi

Esempio di interrogazione

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

Esempio di risposta alla domanda

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

Prerequisiti

  • La tua istanza Neptune DB deve avere accesso ad Amazon S3 tramite un endpoint VPC di tipo gateway.

  • Per utilizzare la AWS KMS crittografia personalizzata nella query, è necessario un endpoint Interface-type VPC per consentire a Neptune di AWS KMS comunicare con. AWS KMS

  • È necessario abilitare l'autenticazione IAM su Neptune e disporre delle autorizzazioni IAM appropriate per scrivere nel bucket Amazon S3 di destinazione. In caso contrario, verrà generato l'errore 400 bad request «Il cluster deve avere l'autenticazione IAM abilitata per S3 Export».

  • Il bucket Amazon S3 di destinazione:

    • Il bucket Amazon S3 di destinazione non deve essere pubblico. Block public accessdeve essere abilitato.

    • La destinazione Amazon S3 di destinazione deve essere vuota.

    • Il bucket Amazon S3 di destinazione deve avere una regola del ciclo di vita attivata con. Delete expired object delete markers or incomplete multipart uploads Delete incomplete multipart uploads Per ulteriori informazioni, consulta l'aggiornamento sulla gestione del ciclo di vita di Amazon S3: supporto per caricamenti in più parti e indicatori di eliminazione.

      Un'immagine che mostra le azioni delle regole del ciclo di vita.
    • Il bucket Amazon S3 di destinazione deve avere una regola del ciclo di vita Delete incomplete multipart uploads impostata su un valore superiore Delete expired object delete markers or incomplete multipart uploads a quello richiesto per la valutazione della query (ad esempio, 7 giorni). Ciò è necessario per eliminare i caricamenti incompleti (che non sono direttamente visibili ma comporterebbero dei costi) nel caso in cui non possano essere completati o annullati da Neptune (ad esempio, a causa di errori). instance/engine Per ulteriori informazioni, consulta l'aggiornamento sulla gestione del ciclo di vita di Amazon S3: supporto per caricamenti in più parti e indicatori di eliminazione.

      Un'immagine che mostra le azioni delle regole del ciclo di vita e gli indicatori di eliminazione degli oggetti scaduti.
Considerazioni importanti
  • La fase di esportazione deve essere l'ultima fase della query su Gremlin.

  • Se un oggetto esiste già nella posizione Amazon S3 specificata, la query avrà esito negativo.

  • Il tempo massimo di esecuzione delle query per le query di esportazione è limitato a 11 ore e 50 minuti. Questa funzionalità utilizza le sessioni di accesso diretto. Attualmente è limitato a 11 ore e 50 minuti per evitare problemi di scadenza dei token.

    Nota

    La query di esportazione rispetta comunque il timeout della query. Per le esportazioni di grandi dimensioni, è necessario utilizzare un timeout di query appropriato.

  • Tutti i nuovi oggetti caricati su Amazon S3 vengono crittografati automaticamente.

  • Per evitare costi di storage dovuti a caricamenti multiparte incompleti in caso di errori o arresti anomali, ti consigliamo di impostare una regola del ciclo di vita nel tuo bucket Amazon S3. Delete incomplete multipart uploads

Formato della risposta

Anziché restituire direttamente i risultati della query, la query restituisce i metadati sull'operazione di esportazione, inclusi lo stato e i dettagli di esportazione. I risultati della query in Amazon S3 saranno in 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" ] } ] }, ... ] } }
Sicurezza
  • Tutti i dati trasferiti su Amazon S3 sono crittografati in transito tramite SSL.

  • Puoi specificare una AWS KMS chiave per la crittografia lato server dei dati esportati. Amazon S3 crittografa i nuovi dati per impostazione predefinita. Se il bucket è configurato per utilizzare una AWS KMS chiave specifica, viene utilizzata quella chiave.

  • Neptune verifica che il bucket di destinazione non sia pubblico prima di iniziare l'esportazione.

  • Cross-account e le esportazioni interregionali non sono supportate.

Gestione degli errori
  • Il bucket Amazon S3 di destinazione è pubblico.

  • L'oggetto specificato esiste già.

  • Non disponi di autorizzazioni sufficienti per scrivere nel bucket Amazon S3.

  • L'esecuzione della query supera il limite di tempo massimo.

Best practice
  • Usa le regole del ciclo di vita dei bucket di Amazon S3 per eliminare i caricamenti multiparte incompleti.

  • Monitora le tue operazioni di esportazione utilizzando i log e le metriche di Neptune. Puoi controllare l'endpoint di stato di Gremlin per vedere se una query è attualmente in esecuzione. Finché il client non ha ricevuto una risposta, si presume che la query sia in esecuzione.