Closed kawabata2018 closed 3 years ago
https://www.npmjs.com/package/dynamodb-admin
npm install -g dynamodb-admin
# For Windows:
export DYNAMO_ENDPOINT=http://localhost:8000
dynamodb-admin
# For Mac/Linux:
DYNAMO_ENDPOINT=http://localhost:8000 dynamodb-admin
Docker version 19.03.13, build 4484c46d9d
docker-compose version 1.27.4, build 40524192
version: "3"
services:
dynamodb:
image: amazon/dynamodb-local
command: -jar DynamoDBLocal.jar -dbPath ./data -sharedDb
volumes:
- dynamodb-data:/home/dynamodblocal/data
ports:
- "8000:8000"
dynamodb-admin:
image: aaronshaf/dynamodb-admin
environment:
- DYNAMO_ENDPOINT=dynamodb:8000
ports:
- "8001:8001"
depends_on:
- dynamodb
volumes:
dynamodb-data:
command: -jar DynamoDBLocal.jar -dbPath /home/dynamodblocal/data -sharedDb
↓
command: -jar DynamoDBLocal.jar -inMemory
/home/dynamodblocal/data
への書き込み権限がない[dynamodblocal@f4db8135503f ~]$ whoami
dynamodblocal
[dynamodblocal@f4db8135503f ~]$ pwd
/home/dynamodblocal
[dynamodblocal@f4db8135503f ~]$ ls -l
total 3744
-rw-r--r-- 1 root root 3803609 Dec 17 21:21 DynamoDBLocal.jar
drwxr-xr-x 2 root root 4096 Dec 17 21:21 DynamoDBLocal_lib
-rw-r--r-- 1 root root 8644 Dec 17 21:21 LICENSE.txt
-rw-r--r-- 1 root root 3289 Dec 17 21:21 README.txt
drwxr-xr-x 2 root root 4096 Jan 3 04:13 data
drwxr-xr-x 2 root root 4096 Dec 17 21:21 third_party_licenses
[dynamodblocal@f4db8135503f ~]$
version: "3"
services:
dynamodb:
image: amazon/dynamodb-local
# これを追加する
user: root
command: -jar DynamoDBLocal.jar -dbPath ./data -sharedDb
volumes:
- dynamodb-data:/home/dynamodblocal/data
ports:
- "8000:8000"
dynamodb-admin:
image: aaronshaf/dynamodb-admin
environment:
- DYNAMO_ENDPOINT=dynamodb:8000
ports:
- "8001:8001"
depends_on:
- dynamodb
volumes:
dynamodb-data:
結果👍
/home/dynamodblocal/data
の所有者をdynamodblocalに変更する# ./dynamodb-local/Dockerfile
FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
RUN mkdir data && chown -R 1000 data
version: "3"
services:
dynamodb:
build: ./dynamodb-local
command: -jar DynamoDBLocal.jar -dbPath ./data -sharedDb
volumes:
- dynamodb-data:/home/dynamodblocal/data
ports:
- "8000:8000"
dynamodb-admin:
image: aaronshaf/dynamodb-admin
environment:
- DYNAMO_ENDPOINT=dynamodb:8000
ports:
- "8001:8001"
depends_on:
- dynamodb
volumes:
dynamodb-data:
結果👍
[dynamodblocal@0d2515083911 ~]$ whoami
dynamodblocal
[dynamodblocal@0d2515083911 ~]$
[dynamodblocal@0d2515083911 ~]$ id dynamodblocal
uid=1000(dynamodblocal) gid=1000(dynamodblocal) groups=1000(dynamodblocal)
[dynamodblocal@0d2515083911 ~]$
[dynamodblocal@0d2515083911 ~]$ ls -l
total 3744
-rw-r--r-- 1 root root 3803609 Dec 17 21:21 DynamoDBLocal.jar
drwxr-xr-x 2 root root 4096 Dec 17 21:21 DynamoDBLocal_lib
-rw-r--r-- 1 root root 8644 Dec 17 21:21 LICENSE.txt
-rw-r--r-- 1 root root 3289 Dec 17 21:21 README.txt
drwxr-xr-x 2 dynamodblocal dynamodblocal 4096 Jan 3 05:19 data
drwxr-xr-x 2 root root 4096 Dec 17 21:21 third_party_licenses
https://dev.classmethod.jp/articles/dynamodb-data-export/
DynamoDBにスカラー型(いわゆるプリミティブな型)として格納できるのは以下の5種類(日付型とかはない)
めんどくさいのは、PythonでDynamoDBの項目(RDBで言うところのレコード)を取得したときに数値型はdecimal.Decimal型として扱われる。取得した項目をjson.dumps()
で出力しようとしてもデフォルトでDecimal型はシリアライズしてくれない。
これにてDynamoDB調査は終了
close
背景
To do
完了条件