この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
本当に今さらながら、DynamoDB ローカルをちょっと試してみました。 ローカルで動かしますのでどれだけ好き勝手に触ってもAWSに課金されることはありません。そもそもダウンロードする際に、AWSのアカウントすら必要がありません。
検証環境
- Windows 8.1
- Java 1.8.0_101
ダウンロード
Javaのバージョンは6以上ないと動作しないようですので、事前準備としてJREのバージョンが6以上でない方はインストールしておいてください。 ダウンロードはこちらから行います。 ダウンロードしたファイルは解凍しておきます。 私は東京リージョンのものをダウンロードしました。
実行
ダウンロードしたファイルを解凍しましたら、中身はjarファイルとなっておりますので、それをjava コマンドから実行します。
javaコマンドは次のようになります。
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
実行すると以下のような文字が出力され、DynamoDBがローカルで起動しました。
Initializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: false
DbPath: null
SharedDb: true
shouldDelayTransientStatuses: false
CorsParams: *
次に、AWS CLIでつながるか確認してみます。
Windows環境ですがコマンドプロンプトではなく、GitBashを使ってコマンドを実行しています。
--endpoint-url
に、http://localhost:8000
指定することで、ローカル環境のDynamoDBに接続できます。
テーブルを作成してみます。
$ aws dynamodb create-table --table-name Persons \
--attribute-definitions AttributeName=Id,AttributeType=N \
--key-schema AttributeName=Id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
--endpoint-url http://localhost:8000
{
"TableDescription": {
"TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Persons",
"AttributeDefinitions": [
{
"AttributeName": "Id",
"AttributeType": "N"
}
],
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"WriteCapacityUnits": 1,
"LastIncreaseDateTime": 0.0,
"ReadCapacityUnits": 1,
"LastDecreaseDateTime": 0.0
},
"TableSizeBytes": 0,
"TableName": "Persons",
"TableStatus": "ACTIVE",
"KeySchema": [
{
"KeyType": "HASH",
"AttributeName": "Id"
}
],
"ItemCount": 0,
"CreationDateTime": 1508486712.897
}
}
作成されました。 テーブルの一覧で見てみます。
$ aws dynamodb list-tables --endpoint-url http://localhost:8000
{
"TableNames": [
"Persons"
]
}
データ挿入してみます。
$ aws dynamodb put-item --table-name Persons --item '{"Id":{"N":"1"},"Name":{"S":"Jack"}}' --endpoint-url http://localhost:8000
今挿入したデータを取得します。
$ aws dynamodb get-item --table-name Persons --key '{"Id":{"N":"1"}}' --endpoint-url http://localhost:8000
{
"Item": {
"Id": {
"N": "1"
},
"Name": {
"S": "Jack"
}
}
}
取得できました。
上記のような感じで、動かすことができます。
最後の--endpoint-url http://localhost:8000
はどうにか省略できないかなと思ったのですが、できなさそうです。
注記 AWS CLI はデフォルトのエンドポイントとしてダウンロード可能なバージョンの DynamoDB を使用できません。このため、各コマンドで --endpoint-url を指定する必要があります。
ブラウザから試す
http://localhost:8000/shell/
にアクセスすることでブラウザからJavaScriptで操作することも可能です。
以下のような画面があらわれます。
JavaScriptのコードでデータを登録します。
AWS.config.endpoint = new AWS.Endpoint('http://localhost:8000');
var dynamodb = new AWS.DynamoDB();
var params = {
TableName: 'Persons',
Item:{
'Id':{N: '2'},
'Name':{S: 'Daniel'},
'Gender':{S: 'male'},
'Height':{N: '175.5'}
}
};
dynamodb.putItem(params);
コードを書いたら三角のボタンを押しましょう。
今登録したデータを取得してみます。
データが表示されました。
おわりに
DynamoDB、慣れるまで結構な時間がかかると思うのですが、ローカル環境で好きなように試せるのはよいですね。 DynamoDBはAWS 認定デベロッパー – アソシエイトの出題範囲にもなっていますので、試験を受験予定の方は一通り触っておくとよいと思います!!
参考
Amazon DynamoDB AWSJavaScriptSDK DynamoDB 【詳解】JavascriptでDynamoDBを操作する | Qiita