6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DynamoDB Localの導入からGUIでのテーブル作成手順 (Windows10)

Last updated at Posted at 2020-12-03

はじめに

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. 実行

  1. PowrShellを開き、DynamoDB Localを展開したフォルダに移動。
  2. 以下のコマンドを実行
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/ 」にアクセスするだけで確認できます。
DynamoDBJavaScriptShell.PNG
後程、より簡単にテーブル作成ができるツールを紹介するので、ここでは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) にブラウザでアクセスしてみてください。
私の環境では既にいくつかのテーブルを作成しているため、このように起動後の画面ではテーブルの一覧が表示されています。
dynamodb-admin.PNG

5. テーブル作成

それでは実際にテーブルを作っていきます。
dynamodb-admin起動後のブラウザ画面で「Create table」ボタンを押してください。

dynamodb-admin-create.PNG

ここでいくつか名称に関する注意点があります。
参考に2020年12月時点のAWS DynamoDBのコンソール画面を載せます。
AWS-dynamo.PNG

見ての通り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の設計に関する記事を書きたいと思います。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?