Menjalankan DynamoDB Local dengan Docker
DynamoDB Local adalah mesin DynamoDB asli dalam satu proses — tanpa akun AWS, tanpa jaringan, tanpa tagihan per request. Gunakan untuk pengembangan lokal dan pengujian integrasi, lalu arahkan kode yang sama ke cloud saat produksi.
Mulai container
docker run -p 8000:8000 amazon/dynamodb-localItu mengekspos mesin di http://localhost:8000.
docker-compose
Sebagian besar proyek menyematkannya di docker-compose.yml sehingga seluruh tim
mendapat endpoint yang sama:
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistensi
Secara default DynamoDB Local bersifat in-memory — setiap tabel lenyap saat container berhenti. Dua flag membuatnya durable:
-sharedDbmenjaga semua klien pada satu file database bersama (tanpa itu, setiap kumpulan kredensial/region mendapat DB terisolasinya sendiri — kejutan "ke mana tabel saya pergi?" yang umum).-dbPath /data+ sebuah volume yang di-mount menulis file itu ke disk, sehingga data bertahan setelahdocker compose down.
Arahkan SDK ke sana
Hanya endpoint yang berubah — kredensial bisa berupa nilai dummy apa pun:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Buat sebuah tabel
aws dynamodb create-table \
--endpoint-url http://localhost:8000 \
--table-name AppData \
--attribute-definitions AttributeName=PK,AttributeType=S AttributeName=SK,AttributeType=S \
--key-schema AttributeName=PK,KeyType=HASH AttributeName=SK,KeyType=RANGE \
--billing-mode PAY_PER_REQUESTSchema single-table PK/SK seperti ini adalah
default yang baik. Saat Anda memuat fixture, konversi JSON biasa ke format wire
dengan konverter DynamoDB-JSON.
Verifikasi container sudah aktif dan tabel sudah dibuat:
aws dynamodb list-tables --endpoint-url http://localhost:8000Jelajahi dengan GUI
Panggilan CLI cepat membosankan. Opsi yang biasa adalah UI web open-source
dynamodb-admin atau klien desktop. DynoTable terhubung langsung ke
localhost:8000 (atau endpoint LocalStack mana pun — lihat
menghubungkan ke DynamoDB Local & LocalStack)
dan memungkinkan Anda menjelajahi, mem-Query dengan SQL Workbench, dan mengedit
tabel lokal dengan UI yang sama seperti yang Anda gunakan untuk tabel cloud —
tanpa pulang-pergi CLI aws.