View a markdown version of this page

Ekspor asli untuk data RDF - Amazon Neptune

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

Ekspor asli untuk data RDF

API ekspor Neptune memungkinkan Anda mengekspor data dari database Neptune Anda ke Amazon S3. Anda dapat mengekspor data RDF dalam N-Quads format N-Triples atau.

Cara kerja ekspor asli

Ekspor asli berjalan pada instance penulis cluster Neptune Anda dan menulis data yang diekspor ke Amazon S3 menggunakan unggahan multipart. Karena ekspor menggunakan sumber daya komputasi instance penulis, kami sangat menyarankan menjalankan ekspor terhadap cluster kloning untuk menghindari dampak beban kerja produksi. Lihat Rekomendasi untuk informasi lebih lanjut.

Output ekspor

Output ekspor menskalakan kira-kira secara linier dengan ukuran instance hinggar7i.16xlarge. Sebagai perkiraan perencanaan konservatif, harapkan sekitar 50.000 pernyataan per detik per vCPU.

Gunakan rumus ini untuk memperkirakan durasi ekspor:

export_seconds = total_statements / (vCPUs × 50,000)

Throughput aktual tergantung pada karakteristik dataset termasuk kardinalitas predikat, kompleksitas pernyataan, dan ukuran cluster.

Prasyarat

Sebelum menggunakan API ekspor, Anda harus:

Rekomendasi

Kami sangat menyarankan menjalankan operasi ekspor pada cluster kloning tanpa read/write beban kerja apa pun untuk menghindari dampak pada kinerja produksi.

Untuk rasio harga terhadap kinerja yang optimal, sebaiknya gunakan instance 16xlarge untuk operasi ekspor. Jenis instance ini menyediakan:

  • Memori yang cukup untuk menangani kumpulan data besar tanpa penurunan kinerja

  • Sumber daya CPU optimal untuk pemrosesan ekspor bersamaan

  • Efisiensi biaya terbaik untuk beban kerja ekspor

Izin IAM

Fitur ekspor melibatkan dua peran IAM terpisah:

  • Peran IAM pemanggil — Prinsip IAM (pengguna atau peran) yang mengirimkan permintaan ke titik akhir API ekspor. Peran ini membutuhkan izin akses data Neptunus.

  • Peran IAM akses S3 — Peran yang diasumsikan Neptunus untuk menulis data yang diekspor ke Amazon S3. Anda meneruskan ARN peran ini dalam iamRoleArn parameter permintaan ekspor, dan itu harus dikaitkan dengan cluster Neptunus Anda.

Izin pemanggil (tindakan akses data Neptunus)

Prinsip IAM yang memanggil API ekspor harus memiliki tindakan akses data Neptunus berikut dalam kebijakan IAM-nya:

{ "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/*" } ] }

Untuk informasi selengkapnya, lihat Menggunakan pernyataan kebijakan akses data IAM.

Izin peran akses S3

Peran IAM yang diteruskan dalam parameter iamRoleArn permintaan harus dikaitkan dengan cluster Neptunus Anda dan harus memberikan izin Neptune untuk menulis ke bucket S3 target. Untuk langkah-langkah membuat peran IAM dan mengaitkannya dengan cluster Anda, lihat Membuat peran IAM untuk mengizinkan Neptune mengakses Amazon S3.

catatan

API ekspor memerlukan izin menulis ke S3, tidak seperti pemuat massal yang hanya memerlukan akses baca. Gunakan kebijakan izin berikut alih-alih kebijakan ter AmazonS3ReadOnlyAccess kelola yang dijelaskan di halaman tersebut.

Lampirkan kebijakan izin berikut ke peran akses 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/*" ] } ] }

Izin KMS opsional

Jika Anda menentukan a kmsKeyIdentifier dalam permintaan ekspor, tambahkan izin berikut ke peran akses 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" } ] }

Ekspor titik akhir

Untuk mengekspor data, Anda mengirim permintaan HTTP ke https://your-neptune-endpoint:port/export titik akhir.

Sintaks permintaan ekspor

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

Minta header

  • Content-Type: application/json

Isi permintaan

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

Permintaan parameter

tujuan (string)

Wajib. URI S3 tempat data yang diekspor akan disimpan. Harus dalam format s3://bucket-name/optional-prefix/.

format (string)

Wajib. Format untuk data yang diekspor. Nilai valid:

  • ntriples— Ekspor data dalam N-Triples format

  • nquads— Ekspor data dalam N-Quads format

iam RoleArn (string)

Wajib. Nama Sumber Daya Amazon (ARN) dari peran IAM yang diasumsikan Neptunus untuk mengakses bucket S3.

wilayah (string)

Wajib. Wilayah AWS Dari bucket S3. Harus wilayah yang sama dengan cluster Neptunus Anda.

kompresi (string)

Tidak wajib. Format kompresi untuk file yang diekspor. Nilai valid:

  • gz- Kompres file dalam format.gz

kms KeyIdentifier (string)

Tidak wajib. ARN AWS KMS kunci yang digunakan untuk mengenkripsi data yang diekspor.

ExportFilter (objek)

Tidak wajib. Filter untuk secara selektif mengekspor subset data RDF. Tersedia dalam versi mesin 1.4.8.0 dan yang lebih baru.

bernama GraphUris (array string)

Diberi nama URI grafik untuk diekspor (maksimum 100). Hanya data dalam grafik yang ditentukan yang diekspor. Jika grafik tertentu kosong, ekspor berhasil dengan hasil kosong. URI tidak valid gagal denganInvalidParameterException.

Sintaksis Respons

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

Status HTTP dari permintaan.

exportID (string)

Pengidentifikasi unik untuk tugas ekspor.

Titik akhir status ekspor

Untuk memeriksa status tugas ekspor, Anda mengirim permintaan HTTP GET ke titik akhir ekspor dengan ID ekspor.

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

Permintaan parameter

exportID (string)

Wajib. Pengidentifikasi unik dari tugas ekspor.

Sintaksis Respons

{ "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 } } }
exportID (string)

Pengidentifikasi unik dari tugas ekspor.

tujuan (string)

URI S3 tempat data diekspor.

status (string)

Status tugas ekspor saat ini. Nilai valid:

  • EXPORT_NOT_STARTED— Ekspor telah mengantri tetapi belum dimulai

  • EXPORT_IN_PROGRESS— Ekspor saat ini sedang berjalan

  • EXPORT_COMPLETED— Ekspor selesai dengan sukses

  • EXPORT_CANCELLING— Ekspor dibatalkan

  • EXPORT_CANCELLED_BY_USER— Ekspor dibatalkan oleh pengguna

  • EXPORT_S3_ERROR- Ekspor gagal karena kesalahan akses S3

  • EXPORT_FAILED— Ekspor gagal karena kesalahan lain

StatusReason (string)

Informasi tambahan tentang status ekspor.

format (string)

Format data yang diekspor.

iam RoleArn (string)

ARN dari peran IAM yang digunakan untuk akses S3.

kms KeyIdentifier (string)

ARN kunci KMS yang digunakan untuk enkripsi, jika ditentukan.

ExportFilter (objek)

Filter ekspor yang diterapkan, jika ada yang ditentukan dalam permintaan.

  • named GraphUris (array of strings) — URI grafik bernama digunakan untuk memfilter ekspor.

ekspor TaskDetails (objek)

Rincian tentang kemajuan tugas ekspor:

  • waktu ElapsedSeconds (angka) — Waktu berlalu sejak ekspor dimulai

  • StartTime (angka) - Waktu Epoch saat ekspor dimulai

  • num RecordsWritten (number) — Jumlah catatan yang ditulis ke S3

  • ProgressPercentage (angka) — Persentase ekspor selesai

Daftar titik akhir ekspor

Untuk mencantumkan semua tugas ekspor, Anda mengirim permintaan HTTP GET ke titik akhir ekspor.

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

Sintaksis Respons

{ "status": "string", "payload": [ "string" ] }
muatan (array)

Array ID ekspor untuk semua tugas ekspor.

Batalkan titik akhir ekspor

Untuk membatalkan tugas ekspor, Anda mengirim permintaan HTTP DELETE ke titik akhir ekspor dengan ID ekspor.

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

Permintaan parameter

exportId (string)

Wajib. Pengidentifikasi unik dari tugas ekspor yang akan dibatalkan.

Sintaksis Respons

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

Format keluaran ekspor

Struktur direktori S3

Data yang diekspor diatur dalam bucket S3 Anda sebagai berikut:

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

Berisi file data grafik yang diekspor dalam format yang ditentukan.

export_status.json file

Berisi metadata tentang operasi ekspor.

Tanggapan kesalahan

Kode kesalahan umum

BadRequestException

Permintaan berisi parameter yang tidak valid atau ekspor sudah berlangsung.

AccessDeniedException

Peran IAM tidak memiliki izin yang diperlukan untuk akses S3 atau KMS.

Contoh respons kesalahan

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

Contoh

Mulai ekspor

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

Mulai ekspor yang difilter (grafik bernama)

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

Periksa status ekspor

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

Membatalkan ekspor

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

Batasan

Ekspor asli memiliki batasan berikut:

  • Dukungan instans — Ekspor asli tidak didukung pada instans Neptune Serverless atau pada replika baca. Ekspor selalu berjalan pada instance penulis dari cluster yang disediakan.

  • Satu ekspor per cluster — Hanya satu ekspor yang dapat aktif pada cluster pada satu waktu. Jika Anda mengirimkan permintaan ekspor baru saat ekspor lain sedang berlangsung, permintaan gagal.

  • Tidak ada auto-resume — Jika mesin restart selama ekspor, ekspor gagal dan harus dimulai ulang dari awal. Kemajuan ekspor tidak dipertahankan di seluruh restart mesin.

  • Ketersediaan status setelah kejadian engine — Jika mesin mogok, Anda tidak dapat mengambil status ekspor melalui API status.

  • Konsistensi selama penulisan — Jika cluster Anda melayani lalu lintas tulis selama ekspor, data yang diekspor mungkin mencerminkan tampilan grafik sebagian atau tidak konsisten. Untuk menjamin ekspor yang konsisten, jalankan ekspor terhadap cluster kloning.