Başlangıç1 dakikalık okuma

Docker ile DynamoDB Local Çalıştırma

DynamoDB Local, tek bir süreçteki gerçek DynamoDB motorudur — AWS hesabı yok, ağ yok, istek başına fatura yok. Yerel geliştirme ve entegrasyon testleri için kullanın, ardından aynı kodu production'da buluta yönlendirin.

Container'ı başlatın

docker run -p 8000:8000 amazon/dynamodb-local

Bu, motoru http://localhost:8000 üzerinde sunar.

docker-compose

Çoğu proje, tüm ekibin aynı endpoint'i alması için onu docker-compose.yml içinde sabitler:

services:
  dynamodb:
    image: amazon/dynamodb-local
    command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
    ports:
      - '8000:8000'
    volumes:
      - dynamodb-data:/data
volumes:
  dynamodb-data:

Kalıcılık

Varsayılan olarak DynamoDB Local bellek içidir — container durduğunda her tablo kaybolur. İki bayrak onu kalıcı yapar:

  • -sharedDb tüm istemcileri tek bir paylaşılan veritabanı dosyasında tutar (onsuz, her kimlik bilgileri/bölge seti kendi izole DB'sini alır — yaygın bir "tablom nereye gitti?" sürprizi).
  • -dbPath /data + bağlanmış bir volume, bu dosyayı diske yazar, böylece veriler docker compose down'dan sonra hayatta kalır.

SDK'yı ona yönlendirin

Yalnızca endpoint değişir — kimlik bilgileri herhangi bir sahte değer olabilir:

import {DynamoDBClient} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({
  endpoint: 'http://localhost:8000',
  region: 'local',
  credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});

Bir tablo oluşturun

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

Buradaki gibi bir single-table PK/SK şeması iyi bir varsayılandır. Fixture'lar yüklerken, düz JSON'u DynamoDB-JSON dönüştürücüsü ile wire formatına dönüştürün.

Container'ın çalışır durumda olduğunu ve tablonun oluştuğunu doğrulayın:

aws dynamodb list-tables --endpoint-url http://localhost:8000

Bir GUI ile gözden geçirin

CLI çağrıları hızla yorucu hale gelir. Olağan seçenekler, açık kaynaklı dynamodb-admin web arayüzü veya bir masaüstü istemcisidir. DynoTable, doğrudan localhost:8000'e (veya herhangi bir LocalStack endpoint'ine — DynamoDB Local & LocalStack'e bağlanma bölümüne bakın) bağlanır ve yerel tablolara, bulut tabloları için kullandığınız aynı arayüzle göz atmanıza, SQL Workbench ile sorgulamanıza ve düzenlemenize olanak tanır — aws CLI gidiş gelişleri olmadan.

Güncellendi