View a markdown version of this page

Mengekspor hasil kueri Gremlin ke Amazon S3 - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengekspor hasil kueri Gremlin ke Amazon S3

Mulai rilis mesin 1.4.3.0, Amazon Neptune mendukung pengekspor hasil kueri Gremlin langsung ke Amazon S3. Fitur ini memungkinkan Anda menangani hasil kueri besar secara efisien dengan mengekspornya ke bucket Amazon S3 alih-alih mengembalikannya sebagai respons kueri.

Untuk mengekspor hasil kueri ke Amazon S3, gunakan call() langkah dengan nama neptune.query.exportToS3 layanan sebagai langkah terakhir dalam kueri Gremlin Anda. Langkah terminal di driver Tinkerpop menggunakan Bytecode dapat ditambahkan setelah langkah. call() Parameter ekspor harus disediakan sebagai nilai string.

catatan

Kueri dengan call() langkah memiliki neptune.query.exportToS3 akan gagal jika tidak digunakan sebagai langkah terakhir. Klien Gremlin menggunakan bytecode dapat menggunakan langkah-langkah terminal. Lihat praktik terbaik Gremlin dalam dokumentasi Amazon Neptune untuk informasi selengkapnya.

g.V() ... .call('neptune.query.exportToS3', [ 'destination': 's3://your-bucket/path/result.json', 'format': 'GraphSONv3', 'kmskeyArn': 'optional-kms-key-arn' ])
Parameter
  • destination: wajib - URI Amazon S3 tempat hasilnya akan ditulis.

  • format: wajib - Format output, saat ini hanya mendukung 'GraphSonv3'.

  • keyArn: opsional - ARN AWS KMS kunci untuk enkripsi sisi server Amazon S3.

Contoh

Contoh kueri

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

Contoh respons kueri

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

Prasyarat

  • Instans Neptune DB Anda harus memiliki akses ke Amazon S3 melalui titik akhir VPC tipe gateway.

  • Untuk menggunakan AWS KMS enkripsi khusus dalam kueri, titik akhir Interface-type VPC untuk AWS KMS diperlukan untuk memungkinkan Neptunus berkomunikasi dengannya AWS KMS.

  • Anda harus mengaktifkan autentikasi IAM di Neptune, dan memiliki izin IAM yang sesuai untuk menulis ke bucket Amazon S3 target. Tidak memiliki ini akan menyebabkan kesalahan permintaan buruk 400 “Cluster harus mengaktifkan otentikasi IAM untuk Ekspor S3”.

  • Bucket target Amazon S3:

    • Bucket Amazon S3 target tidak boleh bersifat publik. Block public accessharus diaktifkan.

    • Tujuan target Amazon S3 harus kosong.

    • Bucket Amazon S3 target harus memiliki aturan siklus hidup aktif Delete expired object delete markers or incomplete multipart uploads denganDelete incomplete multipart uploads. Lihat pembaruan manajemen siklus hidup Amazon S3 - dukungan untuk unggahan multibagian dan penanda hapus untuk informasi selengkapnya.

      Gambar yang menunjukkan tindakan aturan siklus hidup.
    • Bucket Amazon S3 target harus memiliki aturan siklus hidup aktif Delete expired object delete markers or incomplete multipart uploads dengan diset Delete incomplete multipart uploads el ke nilai yang lebih tinggi dari yang dibutuhkan evaluasi kueri (misalnya, 7 hari). Ini diperlukan untuk menghapus unggahan yang tidak lengkap (yang tidak terlihat secara langsung tetapi akan dikenakan biaya) jika tidak dapat diselesaikan atau dibatalkan oleh Neptunus (misalnya, karena kegagalan). instance/engine Lihat pembaruan manajemen siklus hidup Amazon S3 - dukungan untuk unggahan multibagian dan penanda hapus untuk informasi selengkapnya.

      Gambar yang menunjukkan tindakan aturan siklus hidup, dan penanda penghapusan objek yang kedaluwarsa hapus.
Pertimbangan penting
  • Langkah ekspor harus menjadi langkah terakhir dalam kueri Gremlin Anda.

  • Jika objek sudah ada di lokasi Amazon S3 yang ditentukan, kueri akan gagal.

  • Waktu eksekusi kueri maksimum untuk kueri ekspor dibatasi hingga 11 jam dan 50 menit. Fitur ini menggunakan sesi akses Ter uskan. Saat ini dibatasi hingga 11 jam dan 50 menit untuk menghindari masalah kedaluwarsa token.

    catatan

    Kueri ekspor masih menghormati batas waktu kueri. Untuk ekspor besar, Anda harus menggunakan batas waktu kueri yang sesuai.

  • Semua unggahan objek baru ke Amazon S3 secara otomatis dienkripsi.

  • Untuk menghindari biaya penyimpanan dari unggahan multipart yang tidak lengkap jika terjadi kesalahan atau crash, sebaiknya siapkan aturan siklus hidup dengan bucket Delete incomplete multipart uploads Amazon S3 Anda.

Format respons

Alih-alih mengembalikan hasil kueri secara langsung, kueri mengembalikan metadata tentang operasi ekspor, termasuk status dan detail ekspor. Hasil kueri di Amazon S3 akan dalam format 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" ] } ] }, ... ] } }
Keamanan
  • Semua data yang ditransfer ke Amazon S3 dienkripsi saat transit menggunakan SSL.

  • Anda dapat menentukan AWS KMS kunci untuk enkripsi sisi server dari data yang diekspor. Amazon S3 mengenkripsi data baru secara default. Jika bucket dikonfigurasi untuk menggunakan AWS KMS kunci tertentu, maka kunci itu digunakan.

  • Neptunus memverifikasi bahwa bucket target tidak bersifat publik sebelum memulai ekspor.

  • Cross-account dan ekspor lintas wilayah tidak didukung.

Penanganan kesalahan
  • Bucket Amazon S3 target bersifat publik.

  • Objek yang ditentukan sudah ada.

  • Anda tidak memiliki izin yang cukup untuk menulis ke bucket Amazon S3.

  • Eksekusi kueri melebihi batas waktu maksimum.

Praktik terbaik
  • Gunakan aturan siklus hidup bucket Amazon S3 untuk membersihkan unggahan multipart yang tidak lengkap.

  • Pantau operasi ekspor Anda menggunakan log dan metrik Neptunus. Anda dapat memeriksa titik akhir status Gremlin untuk melihat apakah kueri sedang berjalan. Selama klien belum menerima tanggapan, kueri akan diasumsikan sedang berjalan.