Ambil Semua Item dari DynamoDB dengan AWS CLI
AWS CLI menyembunyikan paginasinya. aws dynamodb scan melakukan sebanyak mungkin panggilan layanan 1 MB sesuai kebutuhan tabel lalu mencetak satu hasil gabungan, jadi perintah yang membaca sepuluh item dan perintah yang membaca sepuluh juta adalah perintah yang sama.
Di situlah kemudahannya sekaligus jebakannya. Jumlah panggilan, memori, dan tagihan semuanya menskala mengikuti tabel sementara barisnya tetap satu baris.
Kode
aws dynamodb scan --table-name 'Music'Keluaran gabungannya memuat setiap item dalam tabel:
{
"Items": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
],
"Count": 1287,
"ScannedCount": 1287
}Penjelasan
--no-paginateadalah saklar panggilan tunggal — ia menghentikan CLI mengikuti kursor, jadi Anda mendapat halaman pertama dan tidak lebih. Cocok untuk mengintip, salah untuk pembacaan penuh (cara kerja kursor).--page-sizemengubah jumlah panggilan, bukan keluarannya — AWS menyatakannya terus terang: "Changing the page size doesn't affect the output; it affects only the number of API calls that need to be made to generate the output." Pakailah saat halaman besar mengalami timeout, jangan pernah untuk menghemat uang. Biaya bacanya sama saja.--max-itemsadalah tempat keluaran berhenti danNextTokendimulai — ia mencetak item sebanyak itu plus token untuk melanjutkan lewat--starting-token. Setel ia dan--page-sizeke angka yang sama: AWS memperingatkan bahwa nilai yang berbeda "can get unexpected results with missing or duplicated items".--queryberjalan di mesin Anda — ia adalah JMESPath atas hasil yang dicetak, diterapkan setelah setiap item dibaca dan ditagih.--projection-expression(plus--expression-attribute-namesuntuk reserved word) adalah yang dilihat DynamoDB, dan ia mengecilkan respons, bukan tagihan.--filter-expressionjuga membuang item setelah item itu ditagih (Scan dengan filter).- Semuanya di-buffer, lalu bertemu pager — CLI mengumpulkan setiap halaman sebelum mencetak, dan CLI v2 mengirim hasilnya lewat
lessdi macOS dan Linux ataumoredi Windows secara default. Pada tabel besar itu sekaligus lonjakan memori dan terminal yang macet. Tambahkan--no-cli-pager, atau setelAWS_PAGERke string kosong, lalu potong dengan--max-items. - Parallel scan juga bisa dari shell — jalankan N salinan dengan
--segment i --total-segments N, masing-masing mempaginasi irisannya sendiri secara otomatis. Total biayanya sama, wall clock-nya jauh lebih rendah (kapan itu sepadan).
Lakukan secara visual
Perintah satu baris bisa jadi perintah yang mahal. Kalkulator harga DynamoDB memberi angka untuk pembacaan penuh tabel Anda sebelum Anda menjalankannya.
DynoTable menyusuri tabel dalam sebuah grid alih-alih buffer terminal, dan bisa mengekspor Scan di balik grid itu kembali menjadi perintah aws dynamodb. Unduh DynoTable.
Contoh terkait
- Ambil semua item di Node.js — pembacaan penuh yang sama dengan loop eksplisit.
- Ambil semua item di Python — pembacaan penuh yang sama dengan paginator boto3.
- DynamoDB Scan dengan AWS CLI — melakukan scan dengan
--filter-expression. - Parallel scan — Segment/TotalSegments, jumlah worker, dan kapan perlu repot.
- Mengapa Scan DynamoDB saya lambat dan mahal? — model biayanya dan cara menghindarinya.
- DynamoDB ProvisionedThroughputExceededException — membaca seluruh tabel adalah cara klasik untuk menabraknya.
- "The provided starting key is invalid" — key lanjutan yang rusak di dalam loop paginasi.
Referensi
- Scan — Amazon DynamoDB API Reference
- scan — AWS CLI Command Reference
- Using AWS CLI pagination options — AWS CLI User Guide
- DynamoDB read and write operations (capacity unit consumption) — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-28 terhadap dokumentasi resmi AWS yang ditautkan di atas.