はじめに
2020年12月現在のDynamoDBLocalの導入・GUIでのテーブル作成手順を紹介します。
DynamoDBLocalはAWS上のリソースを使わず、ローカルでDynamoDBの検証ができるので非常に便利です。
LinuxやMacを使った導入手順は既に多くの記事があるので、この記事ではWindowsを使った導入手順~テーブル作成の手順をまとめます。
※Dockerではなく通常のパッケージを使ったやり方です。
環境
- Windows10 Home
- JRE 8.027
- Node.js v14.15.0
DynamoDB Localの導入
1. ダウンロード
以下AWS公式リンクからzipファイルをダウンロードし、任意のプロジェクトフォルダに展開。
(アジアパシフィック (東京) リージョン)
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html
2. JREの導入
DyanamoDB LocalはJRE(Java Runtime Environmen)8.x以降で動作するため、
ローカル内にJREがない場合は以下リンクからダウンロードして実行する。
https://www.java.com/ja/download/
3. 実行
- PowrShellを開き、DynamoDB Localを展開したフォルダに移動。
- 以下のコマンドを実行
java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar -sharedDb
4. JavaScript consoleでの確認
DynamoDB Localには「JavaScript console」というJavaScriptでDBを操作する機能が備わっています。
上記コマンドでDynamoDBLocalを起動したら、ブラウザで「 http://localhost:8000/shell/ 」にアクセスするだけで確認できます。
後程、より簡単にテーブル作成ができるツールを紹介するので、ここではshellの説明は割愛します。
興味がある方は以下の記事等が参考になります。
https://dev.classmethod.jp/articles/dynamodb-local-shell-console/#toc-2
https://dev.classmethod.jp/articles/try_dynamodb_local/#toc-4
※ 右側のコンソールで「 tutorial.start() 」を実行するとDynamoDBのチュートリアルを始めることもできます(英語)
dynamodb-admin でのテーブル作成
先ほどのJavaScript consoleではjavaScriptを使ったDB操作が可能でしたが、検証で使うのに複雑なJavaScriptを書いてテーブル作成をしていては大変ですよね。
そこで、有志がOSSで開発してくれた「dynamodb-admin」の使い方を紹介します。
これはGUIでのテーブル作成を可能にしてくれるツールです。
https://github.com/aaronshaf/dynamodb-admin
1. Node.jsの構築
dynamodb-adminはNode.js上で動作します。
既にローカルマシンにNode.jsが存在すれば問題ありません。
もしまだNode.js環境が無い方は以下の記事などを参考に導入してみてください。
Windows 10へNode.jsをインストールする
2. 導入
PowrShellなどで以下のコマンドを実行し、dynamodb-adminを導入します。
npm install -g dynamodb-admin
3. 環境変数設定
以下のコマンドを実行し、環境変数をセットしてください。
set DYNAMO_ENDPOINT=http://localhost:8000
4. 実行
dynamodb-adminを実行するには、以下のコマンドを実行するだけです。
先ほどのDynamoDBLocalを実行したのと別のshellを立ち上げて実行してみてください。
dynamodb-admin
実行できたでしょうか?
私の環境では以下のエラーが出てしまい実行できませんでした。
このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\$user_name\AppData\Roaming\npm\dynamodb-admin.ps1 を読み込むことができません。
詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ dynamodb-admin
+ ~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Windows の初期設定では PowerShell のスクリプトの実行が実行ポリシーによって許可されていないことが原因です。
詳細はこちらを参照してみてください。
これを解決するセキュアな実行コマンドはこちらです。
PowerShell -ExecutionPolicy RemoteSigned dynamodb-admin
これは一時的にdynamodb-adminスクリプトに権限を与えて実行するコマンドです。
私はこれをメモしてコピペで使っていますが、毎度これを打つのが面倒という方は
「PowerShell Set-ExecutionPolicy RemoteSigned」このコマンドで恒久的に実行ポリシーを変更できます。
※恒久的なポリシーの変更はあまりお勧めできません。
それでは、実行ログに表示されたアドレス(http://localhost:8001) にブラウザでアクセスしてみてください。
私の環境では既にいくつかのテーブルを作成しているため、このように起動後の画面ではテーブルの一覧が表示されています。
5. テーブル作成
それでは実際にテーブルを作っていきます。
dynamodb-admin起動後のブラウザ画面で「Create table」ボタンを押してください。
ここでいくつか名称に関する注意点があります。
参考に2020年12月時点のAWS DynamoDBのコンソール画面を載せます。
見ての通りdynamodb-adminではキーの名称が古いです。
簡単な対応表を記載します。
dynamodb-admin | AWS dynamoDB(2020/12) |
---|---|
Hash Attribute | パーティションキー |
Range Attribute | ソートキー |
上記に注意して、キーの作成をしてみてください。
テーブル名、パーティションキー、必要であればソートキー・インデックスを追加し「submit」を押すだけでテーブルを作成できます。
6. 補足
- ReadCapacityUnits: 一秒ごとに何回 strongly consistent reads 出来るか。(eventually consistent read はその二倍)
- WriteCapacityUnits: 一秒ごと何回 書き込めるか。
- LSI: 簡単に言うとソートキーをもう1つ増やすイメージ。
- GSI: RDBでいう射影の概念で、簡単に言うと別の条件で検索するためキーを追加する。
※dynamodb-adminでは左下の「New Secondary Index」を押すことで、LSI,GSIを設定できます。
おわりに
以上でWindowsでのDynamoDBLocalの導入、dynamodb-adminでのテーブル作成の手順は終了です。
DynamoDBはNoSQLベースなのでRDBとは全く異なり、キー設計(データアクセス設計)が非常に重要になります。
また時間があればDynamoDBの設計に関する記事を書きたいと思います。