概要
pythonの採番処理を作成するときにDynamoDBを使うときに開発中に実際のDynamoDBを使うのは・・・という場合DynamoDB Local を使っての開発すると思うのでその方法をまとめていきます。
まずは準備としてdockerのコンテナを作ってテーブルの作成まで行います。
事前準備
- dockerをまず導入します。windows Homeの場合は Docker Quickstart Terminal を使います。
- aws cli もインストールします。
- aws cli インストール後 aws config で設定を行います。region , aws_access_key_id は設定してください。後続の処理でコマンドが実行できないため。値は適当でも大丈夫です。
docker fileの設定
-
データを永続化させるため こちらを参考にdocker-compose.yml,Dockerfile を作成します。実際に使ったのは以下のものです。
-
docker-compose.yml
version: '3.7'
services:
dynamodb:
build: ./dynamodb
volumes:
- dynamodb_data:/home/dynamodblocal/data
ports:
- 8000:8000
command: -jar DynamoDBLocal.jar -dbPath ./data
volumes:
dynamodb_data:
- Dockerfile
FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
# UID=1000 → DynamoDB Local の実行ユーザ
RUN mkdir data && chown -R 1000 data
テーブルの作成
-
こちらを参照にまずスケルトンJSONを作成します。以下のコマンドを実行します。
- aws dynamodb create-table --generate-cli-skeleton > skel_dynamodb_create-table.json
- jsonファイルにテーブル定義を作成します以下のように作成しました。
{
"AttributeDefinitions": [
{
"AttributeName": "sequence_key",
"AttributeType": "S"
}
],
"TableName": "sequences",
"KeySchema": [
{
"AttributeName": "sequence_key",
"KeyType": "HASH"
}
],
"BillingMode": "PROVISIONED",
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
}
-
以下のコマンドでテーブルを作成します。
- aws dynamodb create-table --cli-input-json file://skel_dynamodb_create-table.json --endpoint-url http://localhost:8000
-
テーブルが作成されたかの確認は DynamoDB shell から行えます。
-
http://localhost:8000/shell/ にアクセスすることでブラウザ上で確認ができます。
- Docker Quickstart Terminal の場合はlocalhostをIPに変えてください。
- CTRL+スペースキーで補完ができるので適当にやってみるといいかも
-
下記のコマンドで作成されているテーブルの確認ができます。テーブルを作成したときのリージョンとAWS Access key を合わせないとみることができないので設定を忘れずに。
- リージョンを
ap-northeast-1
に設定していますがこちらはawsconfigでの設定値に合わせてください。 - 右上の方の歯車のアイコンでaws_access_key_id を設定してください。
- リージョンを
dynamodb.config.update({
region: "ap-northeast-1"
})
dynamodb.listTables().eachPage(function(err, data) {
if (err) {
ppJson(err); // an error occurred
} else if (data) {
ppJson(data);
}
});