DynamoDBをローカル環境で使う
docker-composeでローカルにDynamoDBを利用できる環境を作る
あと、dynamodb-adminも利用する
セットアップ
docker-compose.yml
version: '3.8' services: dynamodb-local: container_name: dynamodb-local image: amazon/dynamodb-local:latest user: root ports: - 8000:8000 volumes: - dynamodb-local-data:/data command: -jar DynamoDBLocal.jar -sharedDb -dbPath /data networks: - dynamodb-local-network dynamodb-admin: container_name: dynamodb-admin image: aaronshaf/dynamodb-admin:latest environment: - DYNAMO_ENDPOINT=dynamodb-local:8000 ports: - 8001:8001 depends_on: - dynamodb-local networks: - dynamodb-local-network volumes: dynamodb-local-data: networks: dynamodb-local-network: driver: bridge
実行
docker-compose up -d
コンテナを起動してから下記にアクセスすると管理コンソールを操作できる
http://localhost:8000/shell/
また、下記でdynamodb-adminを操作できる
http://localhost:8001/
管理コンソールから下記のスクリプトを流してテーブルを作成する
var params = { TableName: 'AuthTokenTable', KeySchema: [ { AttributeName: 'authToken', KeyType: 'HASH', //Partition key } ], AttributeDefinitions: [ { AttributeName: 'authToken', AttributeType: 'S' }, { AttributeName: 'userId', AttributeType: 'N' } ], ProvisionedThroughput: { // Only specified if using provisioned mode ReadCapacityUnits: 1, WriteCapacityUnits: 1 }, // https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.Creating.html#SQLtoNoSQL.Indexes.Creating.DynamoDB GlobalSecondaryIndexes: [ { IndexName: 'UserIdIndex', KeySchema: [ { AttributeName: 'userId', KeyType: 'HASH', } ], Projection: { ProjectionType: 'INCLUDE', NonKeyAttributes: [ 'authToken', ], }, ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1 } } ], }; dynamodb.createTable(params, function(err, data) { if (err) ppJson(err); // an error occurred else ppJson(data); // successful response });