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:
Memiliki cluster database Neptune yang menjalankan versi 1.4.6.0 atau yang lebih baru (versi 1.4.8.0 atau lebih baru untuk dukungan)
exportFilterKonfigurasikan titik akhir S3 VPC di VPC cluster Neptune Anda
Rekomendasi
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
iamRoleArnparameter 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 formatnquads— 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 dengan
InvalidParameterException.
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 dimulaiEXPORT_IN_PROGRESS— Ekspor saat ini sedang berjalanEXPORT_COMPLETED— Ekspor selesai dengan suksesEXPORT_CANCELLING— Ekspor dibatalkanEXPORT_CANCELLED_BY_USER— Ekspor dibatalkan oleh penggunaEXPORT_S3_ERROR- Ekspor gagal karena kesalahan akses S3EXPORT_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.