Docker
DynamoDB

Dynamoがlocalで実行できる事を知ったので、Docker Container上で動かせるようにして、公開してみたお話。

More than 3 years have passed since last update.


DynamoDB localについて

(公式ドキュメント)DynamoDB Local 色々かかれています。


今回はこちらを元に書き進めます。


DynamoDB local実行に必要な環境


OS

Ubuntu


Pakages


  • openjdk-7-jdk

  • wget


構築手順

Dynamo DBを配置

$ mkdir /usr/local/ddlocal

$ cd /usr/local/ddlocal
$ wget http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz
$ tar zxvf dynamodb_local_latest.tar.gz

データ配置用ディレクトリ作成

$ mkdir /usr/local/ddlocal/db

実行

$ export JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64

$ java -Djava.library.path=/usr/local/ddlocal/DynamoDBLocal_lib -jar /usr/local/ddlocal/DynamoDBLocal.jar -port 8080 -dbPath /usr/local/ddlocal/db


確認

$ aws dynamodb list-tables --endpoint-url http://localhost:8080

{
"TableNames": []
}


さて、Dockerに置き換えてみましょうか

https://github.com/shinofara/dynamodb-local


githubにサンプルソースを上げてます。

README.mdに書いてますが一応


注意

当手順は、docker-compose and docker-machine を使うことを前提に書いていますので、ソレ以外の場合は、置き換えてお使いください!


環境準備

$ git clone git@github.com:shinofara/dynamodb-local.git

$ cd dynamodb-local

Dockerイメージ作成

$ docker-compose build

containerを立ち上げましょう

$ docker-compose up

dynamo_1 | Initializing DynamoDB Local with the following configuration:
dynamo_1 | Port: 8080
dynamo_1 | InMemory: false
dynamo_1 | DbPath: /usr/local/ddlocal/db
dynamo_1 | SharedDb: false
dynamo_1 | shouldDelayTransientStatuses: false
dynamo_1 | CorsParams: *
dynamo_1 |

8080ポートで立ち上がりましたね。


今回は、docker-machine 上に立ち上げてますので、 localhost でアクセスできません。


事前にIPを確認

$ docker-machine ip [環境]

192.168.99.100

僕の場合は 192.168.99.100 でした。


軽く触ってみます。

テーブル一覧確認

$ aws dynamodb list-tables --endpoint-url http://192.168.99.100:8080

{
"TableNames": []
}

ない!

つくろう

$ aws dynamodb create-table --endpoint-url http://192.168.99.100:8080 --table-name test --attribute-definitions AttributeName=testId,AttributeType=S --key-schema AttributeName=testId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

つくった。確認

$ aws dynamodb list-tables --endpoint-url http://192.168.99.100:8080

{
"TableNames": [
"test"
]
}

出来た!


最後に

今回は、DynamoDBDocker 上に作成するところまででしたので、awscli で Dynamoをもっと触りたい人は色々調べてみてください!