Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kuota impor
Impor DynamoDB dari Amazon S3 dapat mendukung hingga 50 tugas impor bersamaan dengan total ukuran objek sumber impor sebesar 15 TB sekaligus di wilayah us-east-1, us-west-2, dan eu-west-1. Di seluruh wilayah lainnya, didukung hingga 50 tugas impor bersamaan dengan ukuran total 1 TB. Setiap pekerjaan impor dapat mengambil hingga 50.000 objek Amazon S3 di semua wilayah. Kuota default ini berlaku untuk setiap akun. Jika Anda merasa perlu merevisi kuota ini, silakan hubungi tim akun Anda, dan ini akan dipertimbangkan atas dasar. case-by-case Untuk detail selengkapnya tentang batasan DynamoDB, lihat Kuota Layanan.
Kesalahan validasi
Selama proses impor, DynamoDB mungkin mengalami kesalahan saat mengurai data Anda. Untuk setiap kesalahan, DynamoDB memancarkan CloudWatch log dan menyimpan hitungan jumlah total kesalahan yang ditemui. Jika objek Amazon S3 itu sendiri salah format atau jika isinya tidak dapat membentuk item DynamoDB, kami dapat melewatkan pemrosesan bagian objek yang tersisa.
catatan
Jika sumber data Amazon S3 memiliki beberapa item yang berbagi kunci yang sama, item tersebut akan ditimpa hingga tersisa satu item. Hal ini dapat terlihat seolah-olah 1 item diimpor dan item lainnya diabaikan. Item duplikat akan ditimpa secara acak, tidak dihitung sebagai kesalahan, dan tidak dipancarkan ke log. CloudWatch
Setelah impor selesai, Anda dapat melihat jumlah total item yang diimpor, jumlah total kesalahan, dan jumlah total item yang diproses. Untuk pemecahan masalah selengkapnya, Anda juga dapat memeriksa ukuran total item yang diimpor dan ukuran total data yang diproses.
Ada tiga kategori kesalahan impor: kesalahan validasi API, kesalahan validasi data, dan kesalahan konfigurasi.
Kesalahan validasi API
Kesalahan validasi API adalah kesalahan tingkat item dari API sinkronisasi. Penyebab umumnya adalah masalah izin, tidak adanya parameter yang diperlukan, dan kegagalan validasi parameter. Detail tentang alasan kegagalan panggilan API terdapat dalam pengecualian yang diberikan oleh permintaan ImportTable
.
Kesalahan validasi data
Kesalahan validasi data dapat terjadi pada tingkat item atau tingkat file. Selama impor, item divalidasi berdasarkan aturan DynamoDB sebelum diimpor ke tabel target. Ketika item gagal validasi dan tidak diimpor, tugas impor akan melewati item tersebut dan melanjutkan ke item berikutnya. Di akhir pekerjaan, status impor disetel ke GAGAL dengan FailureCode, ItemValidationError dan FailureMessage “Beberapa item gagal memeriksa validasi dan tidak diimpor. Silakan periksa log CloudWatch kesalahan untuk lebih jelasnya.”
Penyebab umum kesalahan validasi data mencakup objek tidak dapat diurai, format objek salah (input menentukan DYNAMODB_JSON namun objek tidak ada di DYNAMODB_JSON), dan skema tidak cocok dengan kunci tabel sumber yang ditentukan.
Kesalahan konfigurasi
Kesalahan konfigurasi biasanya merupakan kesalahan alur kerja karena validasi izin. Alur kerja Impor memeriksa beberapa izin setelah menerima permintaan. Jika ada masalah saat memanggil dependensi yang diperlukan seperti Amazon S3 CloudWatch atau proses menandai status impor sebagai GAGAL. failureCode
dan failureMessage
menunjukkan alasan kegagalan. Jika berlaku, pesan kegagalan juga berisi id permintaan yang dapat Anda gunakan untuk menyelidiki alasan kegagalan CloudTrail.
Kesalahan konfigurasi umum termasuk memiliki URL yang salah untuk bucket Amazon S3, dan tidak memiliki izin untuk mengakses bucket Amazon S3, Log CloudWatch , AWS KMS dan kunci yang digunakan untuk mendekripsi objek Amazon S3. Untuk informasi lebih lanjut lihat Menggunakan dan kunci data.
Memvalidasi objek sumber Amazon S3
Untuk memvalidasi objek S3 sumber, lakukan langkah-langkah berikut.
Validasi format data dan jenis kompresi
Pastikan semua objek Amazon S3 yang cocok dengan prefiks yang ditentukan memiliki format yang sama (DYNAMODB_JSON, DYNAMODB_ION, CSV)
Pastikan semua objek Amazon S3 yang cocok dengan prefiks yang ditentukan dikompresi dengan cara yang sama (GZIP, ZSTD, NONE)
catatan
Objek Amazon S3 tidak perlu memiliki ekstensi yang sesuai (.csv/.json/.ion/.gz/.zstd dll) karena format input yang ditentukan dalam panggilan diutamakan. ImportTable
Validasi bahwa data impor sesuai dengan skema tabel yang diinginkan
Pastikan setiap item dalam data sumber memiliki kunci primer. Kunci urutan bersifat opsional untuk impor.
Pastikan jenis atribut yang terkait dengan kunci primer dan kunci urutan apa pun cocok dengan jenis atribut dalam Tabel dan skema GSI, seperti yang ditentukan dalam parameter pembuatan tabel
Pemecahan Masalah
CloudWatch log
Untuk pekerjaan Impor yang gagal, pesan kesalahan terperinci akan diposting ke CloudWatch log. Untuk mengakses log ini, pertama-tama ambil ImportArn dari output dan deskripsikan impor menggunakan perintah ini:
aws dynamodb describe-import --import-arn arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658528578619-c4d4e311
}
Contoh output:
aws dynamodb describe-import --import-arn "arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658528578619-c4d4e311"
{
"ImportTableDescription": {
"ImportArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658528578619-c4d4e311",
"ImportStatus": "FAILED",
"TableArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table",
"TableId": "7b7ecc22-302f-4039-8ea9-8e7c3eb2bcb8",
"ClientToken": "30f8891c-e478-47f4-af4a-67a5c3b595e3",
"S3BucketSource": {
"S3BucketOwner": "ACCOUNT",
"S3Bucket": "my-import-source",
"S3KeyPrefix": "import-test"
},
"ErrorCount": 1,
"CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT:log-group:/aws-dynamodb/imports:*",
"InputFormat": "CSV",
"InputCompressionType": "NONE",
"TableCreationParameters": {
"TableName": "target-table",
"AttributeDefinitions": [
{
"AttributeName": "pk",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "pk",
"KeyType": "HASH"
}
],
"BillingMode": "PAY_PER_REQUEST"
},
"StartTime": 1658528578.619,
"EndTime": 1658528750.628,
"ProcessedSizeBytes": 70,
"ProcessedItemCount": 1,
"ImportedItemCount": 0,
"FailureCode": "ItemValidationError",
"FailureMessage": "Some of the items failed validation checks and were not imported. Please check CloudWatch error logs for more details."
}
}
Ambil grup log dan id impor dari respons di atas dan gunakan untuk mengambil log kesalahan. ID impor adalah elemen jalur terakhir dari bidang ImportArn
. Nama grup log adalah /aws-dynamodb/imports
. Nama log stream kesalahan adalah import-id/error
. Untuk contoh ini, akan menjadi 01658528578619-c4d4e311/error
.
Tidak ada pk kunci dalam item
Jika objek S3 sumber tidak berisi kunci primer yang disediakan sebagai parameter, impor akan gagal. Misalnya, ketika Anda menentukan kunci primer untuk impor sebagai nama kolom “pk”.
aws dynamodb import-table —s3-bucket-source S3Bucket=my-import-source,S3KeyPrefix=import-test.csv \
—input-format CSV --table-creation-parameters '{"TableName":"target-table","KeySchema": \
[{"AttributeName":"pk","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"pk","AttributeType":"S"}],"BillingMode":"PAY_PER_REQUEST"}'
Kolom “pk” hilang dari objek sumber import-test.csv
yang memiliki konten berikut:
title,artist,year_of_release
The Dark Side of the Moon,Pink Floyd,1973
Impor ini akan gagal karena kesalahan validasi item karena kunci primer yang hilang di sumber data.
Contoh log CloudWatch kesalahan:
aws logs get-log-events —log-group-name /aws-dynamodb/imports —log-stream-name 01658528578619-c4d4e311/error
{
"events": [
{
"timestamp": 1658528745319,
"message": "{\"itemS3Pointer\":{\"bucket\":\"my-import-source\",\"key\":\"import-test.csv\",\"itemIndex\":0},\"importArn\":\"arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658528578619-c4d4e311\",\"errorMessages\":[\"One or more parameter values were invalid: Missing the key pk in the item\"]}",
"ingestionTime": 1658528745414
}
],
"nextForwardToken": "f/36986426953797707963335499204463414460239026137054642176/s",
"nextBackwardToken": "b/36986426953797707963335499204463414460239026137054642176/s"
}
Log kesalahan ini menunjukkan bahwa “Satu atau lebih nilai parameter tidak valid: Kunci pk dalam item tidak ada”. Karena tugas impor ini gagal, tabel “tabel target” sekarang ada dan kosong karena tidak ada item yang diimpor. Item pertama diproses dan objek gagal Validasi Item.
Untuk memperbaiki masalah ini, pertama-tama hapus “tabel target” jika tidak diperlukan lagi. Kemudian gunakan nama kolom kunci primer yang ada di objek sumber, atau perbarui data sumber menjadi:
pk,title,artist,year_of_release
Albums::Rock::Classic::1973::AlbumId::ALB25,The Dark Side of the Moon,Pink Floyd,1973
Tabel target ada
Saat Anda memulai tugas impor dan menerima respons sebagai berikut:
An error occurred (ResourceInUseException) when calling the ImportTable operation: Table already exists: target-table
Untuk memperbaiki kesalahan ini, Anda harus memilih nama tabel yang belum ada dan mencoba mengimpor lagi.
Bucket yang ditentukan tidak ada
Jika bucket sumber tidak ada, impor akan gagal dan mencatat detail pesan kesalahan CloudWatch.
Contoh menjelaskan impor:
aws dynamodb —endpoint-url $ENDPOINT describe-import —import-arn "arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658530687105-e6035287"
{
"ImportTableDescription": {
"ImportArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658530687105-e6035287",
"ImportStatus": "FAILED",
"TableArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table",
"TableId": "e1215a82-b8d1-45a8-b2e2-14b9dd8eb99c",
"ClientToken": "3048e16a-069b-47a6-9dfb-9c259fd2fb6f",
"S3BucketSource": {
"S3BucketOwner": "531234567890",
"S3Bucket": "BUCKET_DOES_NOT_EXIST",
"S3KeyPrefix": "import-test"
},
"ErrorCount": 0,
"CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT:log-group:/aws-dynamodb/imports:*",
"InputFormat": "CSV",
"InputCompressionType": "NONE",
"TableCreationParameters": {
"TableName": "target-table",
"AttributeDefinitions": [
{
"AttributeName": "pk",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "pk",
"KeyType": "HASH"
}
],
"BillingMode": "PAY_PER_REQUEST"
},
"StartTime": 1658530687.105,
"EndTime": 1658530701.873,
"ProcessedSizeBytes": 0,
"ProcessedItemCount": 0,
"ImportedItemCount": 0,
"FailureCode": "S3NoSuchBucket",
"FailureMessage": "The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: Q4W6QYYFDWY6WAKH; S3 Extended Request ID: ObqSlLeIMJpQqHLRX2C5Sy7n+8g6iGPwy7ixg7eEeTuEkg/+chU/JF+RbliWytMlkUlUcuCLTrI=; Proxy: null)"
}
}
FailureCode
adalah S3NoSuchBucket
, dengan FailureMessag
berisi detail seperti id permintaan dan layanan yang memunculkan kesalahan. Karena kesalahan diketahui sebelum data diimpor ke tabel, tabel DynamoDB baru tidak dibuat. Dalam beberapa kasus, ketika kesalahan ini terjadi setelah impor data dimulai, tabel dengan data yang diimpor sebagian akan dipertahankan.
Untuk memperbaiki kesalahan ini, pastikan bucket Amazon S3 sumber ada, lalu mulai ulang proses impor.