はじめに
業務で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
localhost:8001にアクセスすると、テーブルが作成できています
次にテーブルにレコードを挿入します
aws dynamodb \
--region ap-northeast-1 \
--endpoint-url http://localhost:8000 \
put-item \
--table-name HogeTable \
--item '
{
"userId": {
"N": "1"
},
"userName": {
"S": "ほげ太郎"
}
}
'
GUIからレコードを確認することができました
おわりに
mysqlを導入していた際はguiを使用していなかったので、gui用のパッケージを使ったコンテナからlocalにアクセスするやり方を初めて知りました。
db操作のコマンドもmysqlと違うので慣れていきたいです。
参考