LoginSignup
3
3

More than 1 year has passed since last update.

Dockerでdynamodb環境を作りたい

Posted at

はじめに

業務でmysqlからdynamodbに移行することになり、dynamodbの環境構築について学びました。
他に記事がありましたが、個人的に学んだ箇所も踏まえて簡単にまとめてみます

ファイル

公式にymlのテンプレートがありました

docker-compose.yml
services:
  dynamodb-local-hoge:
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
    image: "amazon/dynamodb-local:latest"
    container_name: dynamodb-local-hoge
    ports:
      - "8000:8000"
    volumes:
      - "./docker/dynamodb:/home/dynamodblocal/data"
    working_dir: /home/dynamodblocal

  dynamodb-admin-hoge:
    container_name: dynamodb-admin-hoge
    image: aaronshaf/dynamodb-admin:latest
    environment:
      DYNAMO_ENDPOINT: ${DYNAMO_ENDPOINT}
    ports:
      - "8001:8001"
    depends_on:
      - dynamodb-local-hoge
.env
DYNAMO_ENDPOINT=dynamodb-local-hoge:8000

今回はaws cli用とgui用でコンテナを2つ立てています。
cli用(dynamodb-local-hoge)が8000番ポート、gui用(dynamodb-admin-hoge)が8001番ポートです。
gui用からcli用にアクセスするためにDYNAMO_ENDPOINTという環境変数でcli用のポート番号を指定しています。

上の2ファイルを同階層に作成し、コンテナを立ち上げます

$ docker-compose up

まずテーブルを作成するコマンドをコンソールで実行してみます。

aws dynamodb \
  --region ap-northeast-1 \
  --endpoint-url http://localhost:8000 \
    create-table \
  --table-name HogeTable \
  --attribute-definitions \
    AttributeName=userId,AttributeType=N \
    AttributeName=userName,AttributeType=S \
  --key-schema \
    AttributeName=userId,KeyType=HASH AttributeName=userName,KeyType=RANGE \
  --billing-mode PAY_PER_REQUEST

コンソール上ではこのような表示がされました
image.png

localhost:8001にアクセスすると、テーブルが作成できています
image.png

次にテーブルにレコードを挿入します

aws dynamodb \
  --region ap-northeast-1 \
  --endpoint-url http://localhost:8000 \
    put-item \
  --table-name HogeTable \
  --item '
    {
      "userId": {
        "N": "1"
       },
      "userName": {
        "S": "ほげ太郎"
      }
    }
  '

GUIからレコードを確認することができました

image.png

おわりに

mysqlを導入していた際はguiを使用していなかったので、gui用のパッケージを使ったコンテナからlocalにアクセスするやり方を初めて知りました。
db操作のコマンドもmysqlと違うので慣れていきたいです。

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3