Cara Menghubungkan ke DynamoDB Local dan LocalStack
Anda punya DynamoDB lokal yang berjalan dan kode Anda berkomunikasi dengannya
baik-baik saja — tetapi Anda ingin melihat tabelnya, bukan menulis skrip scan
setiap kali. Menghubungkan klien ke endpoint lokal adalah dua perubahan: arahkan ke
URL yang benar, dan berikan kredensial sekali-pakai. Detail di bawah adalah tempat
orang tersangkut — namespacing region, aturan key alfanumerik, dan pembagian port
8000 vs 4566.
DynamoDB Local vs LocalStack: apa yang Anda hubungi
Keduanya memberi Anda API DynamoDB di localhost tanpa akun AWS, tetapi keduanya
adalah hal yang berbeda:
- DynamoDB Local adalah mesin DynamoDB yang dapat diunduh dalam satu proses — AWS
menyediakannya sebagai JAR dan image Docker
(
amazon/dynamodb-local). Ini DynamoDB dan tidak ada yang lain. Port default 8000 (dokumen AWS). Lihat menjalankan DynamoDB Local dengan Docker. - LocalStack mengemulasi setumpuk layanan AWS di balik satu endpoint. DynamoDB-nya sendiri ditenagai oleh DynamoDB Local, tetapi semuanya melewati edge port 4566 tunggal LocalStack.
Jadi satu-satunya perbedaan praktis untuk menghubungkan adalah URL endpoint: :8000
untuk DynamoDB Local berdiri-sendiri, :4566 untuk DynamoDB-via-LocalStack. Segala
hal lain — API, trik kredensial, konfigurasi GUI — identik.
Pengaturan endpoint + kredensial-palsu yang membuat semua orang tersandung
SDK dan CLI AWS memerlukan access key dan region bahkan saat berbicara ke endpoint lokal — tetapi nilai-nilai itu tidak harus nyata. Dokumen AWS sendiri menyatakan nilai-nilai ini "tidak harus berupa nilai AWS yang valid untuk berjalan secara lokal" (dokumen AWS).
Dua jebakan yang tidak jelas:
- Region/access-key diam-diam mem-namespace data Anda. Tanpa flag
-sharedDb, DynamoDB Local menulis filemyaccesskeyid_region.dbterpisah per kombinasi access-key-ID + region — penamaan persis AWS. Terhubung dengan key atau region berbeda dari yang dipakai aplikasi Anda dan tabel Anda tampak hilang; tabel itu hanya ada di file lain. Jalankan dengan-sharedDb(satushared-local-instance.dbuntuk setiap klien) atau cocokkan persis key + region yang dipakai aplikasi Anda. - Access key ID harus alfanumerik pada DynamoDB Local — tanpa simbol.
Dokumen AWS
menyatakan
AWS_ACCESS_KEY_IDhanya boleh berisiA–Z,a–z, dan0–9; AWS memperkenalkan ini di DynamoDB Local 2.0.0 (dan 1.23.0+), jadi key dengan karakter khusus yang dulu bekerja di image lebih lama kini gagal (AWS re:Post). Lihat error di bawah.
Untuk LocalStack default aman adalah test / test: ia
mengabaikan secret key sepenuhnya
dan tidak pernah memvalidasi nilai secret. Key tampak-nyata AKIA…/ASIA…
ditolak sebagai pengaman dan jatuh ke akun palsu 000000000000 —
akun yang sama yang diresolusi oleh key arbitrer seperti test. Tetaplah dengan
test.
Menghubungkan dengan AWS CLI (sanity check)
Sebelum mengarahkan GUI ke sana, konfirmasi endpoint hidup dari CLI. CLI
tidak bisa default ke endpoint lokal,
jadi Anda melewatkan --endpoint-url pada setiap perintah.
DynamoDB Local:
aws dynamodb list-tables --endpoint-url http://localhost:8000LocalStack (perintah sama, port berbeda):
aws dynamodb list-tables --endpoint-url http://localhost:4566Jika Anda punya kredensial yang dikonfigurasi sama sekali (bahkan yang palsu di
~/.aws/credentials atau via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY), ini
mengembalikan daftar tabel Anda. Daftar kosong tanpa error berarti endpoint bekerja
tetapi Anda melihat namespace key/region yang berbeda — lihat jebakan di atas.
GUI DynamoDB Local: menjelajah dan query tabel lokal di DynoTable
Setelah CLI bekerja, sebuah GUI memerlukan tiga nilai yang sama: endpoint, region, dan kredensial palsu apa pun. CLI mengembalikan DynamoDB-JSON yang Anda baca dengan mata; sebuah GUI merender data yang sama sebagai tabel yang dapat Anda urutkan, filter, dan edit.
Di DynoTable, tambahkan sebuah koneksi dan tetapkan endpoint kustom:
- Endpoint:
http://localhost:8000(DynamoDB Local) atauhttp://localhost:4566(LocalStack) - Region: apa pun yang dipakai aplikasi Anda — mis.
us-east-1. Ini label di sini, bukan region AWS sungguhan, tetapi harus cocok agar Anda mendarat di namespace data yang sama. - Access key / secret: apa saja (
test/testadalah konvensional). Hanya alfanumerik untuk access key pada DynamoDB Local.
Dari sana Anda menjelajahi Item, menjalankan Query atau Scan, dan mengedit baris
secara visual alih-alih marshalling JSON dengan tangan di CLI. Saat Anda memuat
fixture, konverter DynamoDB-JSON mengubah JSON biasa
menjadi format wire, dan Query vs Scan membahas baca mana yang
harus diandalkan. Latihan yang sama untuk
viewer DynamoDB LocalStack — hanya port yang berubah ke
4566.
DynoTable adalah perangkat lunak desktop khusus-lokal, jadi mengarahkannya ke
localhost menjaga fixture Anda di mesin Anda. Untuk pandangan lebih luas tentang
lanskap GUI, lihat perbandingan GUI DynamoDB.
Error umum (ketidakcocokan region, port, kredensial)
- Connection refused. Port salah —
8000adalah DynamoDB Local,4566adalah LocalStack. Konfirmasi juga kontainer benar-benar memublikasikan port (docker run -p 8000:8000 amazon/dynamodb-local). Untuk LocalStack, periksa layanan hidup dihttp://localhost:4566/_localstack/health. The Access Key ID or Security Token is Invalidpada DynamoDB Local. Sejak image 2.0.0 (dan 1.23.0+), access key ID harus hanya alfanumerik. Key dengan simbol yang dulu bekerja di image lebih lama kini gagal — ganti dengan huruf/angka (mis.test) dan perbarui setiap alat agar cocok.The security token included in the request is invalidterhadap LocalStack. Ini hampir selalu masalah endpoint, bukan kredensial — klien SDK Anda menjatuhkan--endpoint-url/endpoint_urldan menghantam endpoint AWS sungguhan, yang menolak key palsu Anda. Konfirmasi klien benar-benar diarahkan kehttp://localhost:4566.- Error kredensial dari SDK/CLI. Bahkan endpoint lokal butuh sebagian kredensial
hadir. Tetapkan
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY(atau profil palsu) agar rantai kredensial SDK ter-resolusi. httpvshttps. Endpoint lokal adalahhttpbiasa. URLhttps://akan gagal pada handshake TLS.
Apakah DynamoDB Local data yang sama dengan tabel AWS sungguhan saya?
Tidak — lokal dan cloud adalah penyimpanan yang sepenuhnya terpisah. DynamoDB Local (dan DynamoDB LocalStack) menyimpan data dalam file lokal atau di memori; ia tidak pernah menyentuh akun AWS Anda, dan Region/akun AWS tidak didukung di level klien secara lokal. Itulah intinya: ini untuk pengembangan dan pengujian. Jika Anda ingin fixture yang sama di cloud nanti, AWS menyarankan nilai key/region yang tampak-valid secara lokal sehingga Anda hanya menukar endpoint saat berpindah. Untuk memodelkan schema itu sebelum Anda merilisnya, single-table design dan GSI vs LSI membahas keputusan yang tidak berubah antara lokal dan prod.
FAQ
Apakah saya butuh kredensial AWS sungguhan? Tidak. Baik DynamoDB Local maupun LocalStack menerima nilai palsu. Nilai itu hanya harus hadir, alfanumerik (untuk DynamoDB Local), dan konsisten di seluruh alat Anda.
Mengapa tabel saya menghilang saat saya berganti alat? Tanpa -sharedDb, DynamoDB
Local mempartisi data berdasarkan access-key + region ke file
myaccesskeyid_region.db terpisah. Gunakan -sharedDb atau jaga nilai-nilai itu
identik di mana-mana.
Apa perbedaan antara port 8000 dan 4566? 8000 adalah default DynamoDB Local
berdiri-sendiri; 4566 adalah edge port tunggal LocalStack yang menjadi muka semua
layanan emulasinya, DynamoDB termasuk.
Bisakah satu GUI terhubung ke keduanya? Ya — keduanya berbicara API DynamoDB yang
sama. Hanya URL endpoint yang berubah (:8000 vs :4566).
Apakah DynamoDB Local gratis? Ya. AWS mendistribusikan DynamoDB Local tanpa biaya sebagai JAR dan image Docker — tidak ada "biaya throughput tersedia, penyimpanan data, atau transfer data"; ini ditujukan hanya untuk pengembangan dan pengujian, bukan produksi.
Bisakah saya menjalankan SQL terhadap tabel lokal saya? DynamoDB lokal berbicara
API yang sama dengan cloud, jadi aturan pola-akses yang sama berlaku — dan
keterbatasan yang sama: grammar PartiQL SELECT
DynamoDB hanya SELECT … FROM … WHERE … ORDER BY — tidak ada JOIN, tidak ada
GROUP BY, dan tidak ada fungsi agregat pengelompokan
seperti COUNT/SUM/AVG (lihat PartiQL vs SQL). SQL
Workbench DynoTable menjalankan query analitis tersebut atas koneksi apa pun, lokal
termasuk.
Coba DynoTable untuk terhubung langsung ke localhost:8000 atau
localhost:4566 dan menjelajahi, query, serta mengedit tabel lokal Anda dengan GUI.