Pemula2 menit baca

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-local

Itu 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:

  • -sharedDb menjaga 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 setelah docker 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_REQUEST

Schema 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:8000

Jelajahi 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.

Diperbarui