Dockerを使ったDynamoDBの起動
DynamoDBは開発用にローカル環境で動かすためのDockerイメージが配布されています。
次のコマンドで8000番ポートでDynamoDBを起動できます。
$ docker run -p 8000:8000 amazon/dynamodb-local
aws-cliでテーブルを作成する
--endpoint-url http://localhost:8000
を指定します。
create-table — AWS CLI 1.16.184 Command Reference
$ aws dynamodb create-table \
--endpoint-url http://localhost:8000 \
--table-name MusicCollection \
--attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
--key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
テーブル作成に成功すると次のような結果が出力されます。
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "Artist",
"AttributeType": "S"
},
{
"AttributeName": "SongTitle",
"AttributeType": "S"
}
],
"TableName": "MusicCollection",
"KeySchema": [
{
"AttributeName": "Artist",
"KeyType": "HASH"
},
{
"AttributeName": "SongTitle",
"KeyType": "RANGE"
}
],
"TableStatus": "ACTIVE",
"CreationDateTime": 1561425583.809,
"ProvisionedThroughput": {
"LastIncreaseDateTime": 0.0,
"LastDecreaseDateTime": 0.0,
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
},
"TableSizeBytes": 0,
"ItemCount": 0,
"TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/MusicCollection"
}
}
aws-sdkからのアクセス
aws-sdk
を使ってアクセスするときもendpointを指定します。
'use strict';
const AWS = require('aws-sdk');
AWS.config.update({
region: 'ap-northeast-1',
endpoint: 'http://localhost:8000'
});
const docClient = new AWS.DynamoDB.DocumentClient();
const putParam = {
TableName: 'MusicCollection',
Item: {
Artist: 'The Beatles',
SongTitle: 'Please Please Me',
}
};
const getParam = {
TableName: 'MusicCollection',
Key: {
Artist: 'The Beatles',
SongTitle: 'Please Please Me',
}
};
const data = docClient.put(putParam, (err) => {
if (err) throw err;
docClient.get(getParam, (err, data) => {
if (err) throw err;
console.log(data);
});
});
このスクリプトを実行すると次のような出力が得られます。
{ Item: { Artist: 'The Beatles', SongTitle: 'Please Please Me' }