Skip to content

DynamoDB をローカルで使う

  • AWS
  • DynamoDB

📅 2019-10-10

⏱️ 2 min read

はじめに

AWS の NoSQL サービスである DynamoDB を使う機会があったのでローカルでのセットアップ手順をメモしておく。最後におまけとして簡単に基本的な操作までやってみた。

Docker コンテナを用意

公式の Docker イメージを指定して構築していく。 Docker Hub:amazon/dynamodb-local

  • Dockerfile
FROM amazon/dynamodb-local

WORKDIR /home/dynamodblocal

# UID=1000 → DynamoDB Local の実行ユーザ
RUN mkdir data && chown -R 1000 data
  • docker-compose.yml
version: "3"

services:
  dynamodb:
    build: ./dynamo
    container_name: dynamodb
    volumes:
      - $PWD/dynamodb_data:/home/dynamodblocal/data
    ports:
      - 8000:8000
      # デフォルトでは -inMemory オプションで起動されるため、コンテナを落とすとテーブル定義を含むデータがすべて消えてしまう。
      # 代わりに -dbPath オプションを指定して起動させることで、コンテナを落としてもデータを失わずに済む…らしい
    command: -jar DynamoDBLocal.jar -dbPath ./data

Docker(Docker Compose)から DynamoDB Local を使う際にデータを永続化する by @okashoi

コンテナを起動

下記コマンドで一発でやる。

$ docker-compose up -d --build

まずビルドしてみたいという時は docker-compose buildup コマンドと分ければ良い。

CLI で DynamoDB を操う

  • テーブルの作成
# プロジェクト直下に `/dynamo/hoge_table.json` のjsonファイルを元にテーブルを作成
$ aws dynamodb create-table --cli-input-json file://dynamo/hoge_table.json --endpoint-url ${DYNAMODB_ENDPOINT}
  • テーブル一覧
# `DYNAMODB_ENDPOINT` は `.envrc` とかにあらかじめ設定しておく
$ aws dynamodb list-tables --endpoint-url ${DYNAMODB_ENDPOINT}
  • テーブルからレコードの取得
# Id が 1 のレコードを取得
$ aws dynamodb get-item --table-name TableName --key '{"Id":{"N":"1"}}' --endpoint-url ${DYNAMODB_ENDPOINT}
← Prev
  • © ysmtegsr 2019 - 2021