前書き:DynamoDB、はじめまして

本記事では、DynamoDBをローカルで起動する方法を説明します。DynamoDBは、AWSが提供するNoSQLデータベースです。サーバーレスのKey Valueストアであり、フルマネージドサービスです。

検証環境

本記事は、Ubuntu環境で検証しています。Docker Composeを使用するため、別途インストールが必要です。

            .-:/++oooo++/:-.               nao@nao 
        `:/oooooooooooooooooo/-`           ------- 
      -/oooooooooooooooooooo+ooo/- OS: Ubuntu Cinnamon 23.04 x86_64 
    .+oooooooooooooooooo+/-`.ooooo+.       Host: B450 I AORUS PRO WIFI 
   :oooooooooooo+//:://++:. .ooooooo:      Kernel: 6.2.0-32-generic 
  /oooooooooo+o:`.----.``./+/oooooooo/     Uptime: 1 hour, 31 mins 
 /ooooooooo+. +ooooooooo+:``/ooooooooo/    Packages: 5364 (dpkg), 2 (brew), 4 ( 
.ooooooooo: .+ooooooooooooo- -ooooooooo.   Shell: bash 5.2.15 
/oooooo/o+ .ooooooo:`+oo+ooo- :oooooooo/   Resolution: 2560x1080 
ooo+:. .o: :ooooo:` .+/. ./o+:/ooooooooo   DE: Cinnamon 5.6.7 
oooo/-`.o: :ooo/` `/+.     ./.:ooooooooo   WM: Mutter (Muffin) 
/oooooo+o+``++. `:+- /oooooooo/   WM Theme: Green-Submarine (Default) 
.ooooooooo/``  -+:`          :ooooooooo.   Theme: QogirBudgie-Dark [GTK2/3] 
 /ooooooooo+--+/`          .+ooooooooo/    Icons: Yaru-red-dark [GTK2/3] 
  /ooooooooooo+.`      `.:++:oooooooo/     Terminal: gnome-terminal 
   :oooooooooooooo++++oo+-` .ooooooo:      CPU: AMD Ryzen 5 3400G (8) @ 3.700GH 
    .+ooooooooooooooooooo+:..ooooo+.       GPU: AMD ATI Radeon Vega Series / Ra 
      -/oooooooooooooooooooooooo/- Memory: 6046MiB / 30012MiB 
        `-/oooooooooooooooooo/:`
            .-:/++oooo++/:-.                                       
                                                                   
$ docker compose version
Docker Compose version v2.6.1                                  

Docker上でDynamoDB本体と管理画面を立ち上げ 

DynamoDBをローカル上で立ち上げる方法がAWS公式サイトに書かれています。jarファイルをローカルにインストールしてDynamoDBを立ち上げる方法もありますが、JREを準備する必要があり、手間がかかります。

そこで、AWS公式が提供しているamazon/dynamodb-local(Dockerイメージ)を利用して、DynamoDBをローカルに立ち上げます。ローカルで立ち上がったDynamoDBをAWS CLIで操作するのは億劫なので、管理画面ブラウザから操作できるようにします。具体的には、aaronshaf/dynamodb-admin(Dockerイメージ)を使用します。こちらのイメージはAWS公式提供ではないので、気になる方はAWS CLIで操作しましょう。

compose.ymlの中身

version: '3.8'
services:
  dynamodb-local:
    image: "amazon/dynamodb-local:latest"
    container_name: dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - "./dynamodb:/home/dynamodblocal/data"
    working_dir: /home/dynamodblocal
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"

  dynamodb-admin:
    image: "aaronshaf/dynamodb-admin:latest"
    tty: true
    container_name: dynamodb-admin
    ports:
      - "8001:8001"
    depends_on:
      - dynamodb-local
    environment:
      DYNAMO_ENDPOINT: http://dynamodb-local:8000                             

実行結果

以下のコマンドでDockerをバックグラウンド実行する。初回実行時は、イメージの取得から始まるため、時間がかかります。

$ docker compose up -d

Dockerの起動が確認できたら、http://127.0.0.1:8001にアクセスします。DynamoDBの管理画面が表示されていれば成功です。

余談ですが、DynamoDB localは内部的にSQLiteを使用しています。今回示した例ではファイルにデータを書き込みますが、インメモリーに書き込むこともできます。その場合は、dynamodb-localイメージ(compose.yml)のcommandを以下の設定に変更します。

command: "-jar DynamoDBLocal.jar -sharedDb -inMemory"

最後に

AWSの勉強を真面目に始めましたが、サービスが多すぎて覚えられない。