前提
この記事の手順で必要なもの。
- Docker
gitとかawscliとか抜けばDockerだけ。追加のソフトウェアインストールも不要です。
環境構築
この項目がこの記事のメインです。簡単にDynamoDBの検証環境がローカルに構築できます。
# リポジトリをClone git clone https://github.com/yomon8/dynamodblocal.git # コンテナをビルド ./dynamodblocal/build.sh # 起動 ./dynamodblocal/start.sh
これで起動しているはずです。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c79e4652985f dynamodblocal:latest "/docker-entrypoin..." 6 seconds ago Up 3 seconds 0.0.0.0:8081->8000/tcp dyanmodblocal
停止はこちら。
./dynamodblocal/stop.sh
ポートの設定変えたければこちらを修正してください。
$ cat dynamodblocal/config DYNAMODB_LOCAL_PORT=8081
awscliで接続してみる
以下のプロファイルをawscliの設定ファイル(~/.aws/credentials
)に追加します。
[dynamodblocal] aws_access_key_id = aws_secret_access_key = region=ap-northeast-1
上記で設定したプロファイル(--profile
)とポート指定したURL(--endpoint-url
)を指定してawscliを実行すれば良いのですが、面倒なので簡単なクライアント用意しました。
$ ./dynamodblocal/awscli-dynamodb-local.sh list-tables { "TableNames": [] }
中身はこんな感じでシェルの中身はシンプルです。
#!/bin/bash if [ $# -eq 0 ];then aws dynamodb help exit 1 fi SCRIPT_DIR=$(cd $(dirname $0) && pwd) source ${SCRIPT_DIR}/config aws dynamodb --profile dynamodblocal --endpoint-url http://localhost:${DYNAMODB_LOCAL_PORT} "$@"
試しにテーブル作ってみます。
./dynamodblocal/awscli-dynamodb-local.sh create-table \ --table-name Music \ --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \ --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \ --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
ARNが arn:aws:dynamodb:ddblocal:000000000000:table/Music
とローカルになっています。
{ "TableDescription": { "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 1, "LastIncreaseDateTime": 0.0, "ReadCapacityUnits": 1, "LastDecreaseDateTime": 0.0 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "ACTIVE", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1517395962.744 } }
リポジトリみるとわかるのですが東京リージョンのDynamoDBをダウンロードして使っています。必要に応じて関連URLからリージョン毎のDynamoDBに変更して使ってください。 https://github.com/yomon8/dynamodblocal/blob/1st/files/Dockerfile#L7