NoSQL Workbench for Amazon DynamoDB 構築手順

Amazon DynamoDB のGUIツール「NoSQL Workbench」を調べる機会があり、せっかくなので構築手順書をブログにしてみました。

※（敢えて書きますが）本情報は2020年12月のものです。

## NoSQL Workbench
GUIツールと言っても、「AWSコンソールで十分じゃないか？」と言う意見もあるかもしれませんが、NoSQL Workbenchには各種RDBのGUIツール同様（それ以上に）さまざまな機能が備わっているようです。

公式情報
2019年9月16日時点
[Amazon DynamoDB 用 NoSQL Workbench のプレビュー版の発表](https://aws.amazon.com/jp/about-aws/whats-new/2019/09/introducing-nosql-workbench-for-amazon-dynamodb-now-in-preview/)
2020年5月7日時点
[Amazon DynamoDB 向け NoSQL Workbench を使用したデータモデリング](https://aws.amazon.com/jp/blogs/news/data-modeling-with-nosql-workbench-for-amazon-dynamodb/)

後者によると、

- 1つ以上のテーブルを使用してデータモデルを定義します。
- データモデルを視覚化して、さまざまなシナリオでどのように機能するかを理解します。
- 複数のプログラミング言語用のデータプレーン操作を構築します。

といったことが可能とのこと（しかし今回はあまり触れない！！）

## 前提
こちらの構築手順は`macOS`のものです。

## インストーラーのダウンロード
以下の公式サイトから各OSに対応したインストーラーをダウンロードします。
今回は`macOs`なので赤枠の「Download for macOS」のリンクをクリックします。

[Download NoSQL Workbench](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/workbench.settingup.html)
![スクリーンショット 2020-12-02 21.05.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/5277d634-c8cb-392e-2234-7180e073ae59.png)

インストーラーを起動していつものようにApplicatioonsフォルダにアプリを移動。
<img width="450" alt="NoSQL_Workbench" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/cd1a9566-95a1-f61b-b998-6535358ffd8b.png">

## アプリの起動→接続設定画面

アプリを開く前にセキュリティの確認が出るので「開く」をクリック。
<img width="450" alt="Security_check" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/ba3ce687-e9d3-06a3-b4b0-c40f596b1325.png">

ホーム(?)画面で、Amazon DynamoDBの「Launch」を選択。
![スクリーンショット 2020-12-02 22.28.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/af036084-f726-e5d1-8b58-06bb845df3ff.png)

左のメニューの「Operation builder」を選択。
![スクリーンショット 2020-12-02 22.52.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/6241399f-377d-2871-3849-be3fd8faa1a7.png)

以下の画面までこれたらOK
![スクリーンショット 2020-12-02 23.04.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/565c5807-cba6-0153-87f4-0ffb037c781f.png)

## 接続設定(AWS CLIの設定が済んでいる場合)
AWS CLIで既にAWSと接続設定は済んでいるので、「open」を選択したらDynamoDBと接続されます。
![スクリーンショット 2020-12-02 23.03.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/0418a9ba-f16e-4bae-a69c-f9b6df27438b.png)

設定しているAccess KeyとSecret KeyはDynamoDBアクセス権限を持っているユーザのものでないといけないはず。

open後はregionがDynamoDBを作成した場所と違ければ変更。
（ほぼほぼ「ap-northeast-1」でしょうか）
Nameもdefaultから変更する場合は変更。
![スクリーンショット 2020-12-02 23.33.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/a8fc1794-b4dd-1f81-5e93-a11d90fd0d9d.png)

ap-northeast-1に変更すると作成しているテーブル名が出てきます。
![スクリーンショット 2020-12-03 0.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/3e7dc797-3c2f-fde1-d594-c131e95d20d6.png)

## 接続設定(AWS CLIの設定が済んでいない場合)
ちなみに、私は確認できてないですが、AWS CLIのインストールは少なくとも必要そうです。
参考
[DynamoDB の GUI ツールが公式から出たよ！](https://qiita.com/is_ryo/items/76a4e823fcd5701d5a9f)

AWS CLIでAWSの接続設定が済んでいない。AWS CLIとは異なる接続設定を利用したい場合。
「+ Add connection」を選択。
![スクリーンショット 2020-12-03 0.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/325ed316-69e4-ecb5-cd1e-3b37aabee70f.png)

以下の入力項目が出てくるのでそれぞれ設定。

最低限の設定項目
Connection name : 任意
Default AWS Region : ap-northeast-1 (DynamoDBを作成した場所)
Access key ID : 接続するユーザのもの
Secret access key : 接続するユーザのもの
![スクリーンショット 2020-12-03 0.51.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/f1aced87-4c7f-7694-af55-70531431cce4.png)

必須でない項目
Session token
今のところ分かってない！！（以下参照ください）
[Amazon DynamoDB用 NoSQL Workbenchでsession tokenを使って接続してみた](https://dev.classmethod.jp/articles/nosql-workbench-connect-by-session-token/)

IAM role Arn
今のところやってみた人いなさそう？（以下公式情報）
[Amazon DynamoDB 用の NoSQL Workbench が、AWS Identity and Access Management (IAM) ロールと一時的なセキュリティ認証情報のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2019/12/nosql-workbench-for-amazon-dynamodb-adds-support-for-aws-identity-and-access-management-iam-roles-and-temporary-security-credentials/)

Persist connection
チェックするとAWSの接続情報を`/Users/[ユーザ名]/.aws/credentials`に保存される。

## 動作確認
テーブルを選択して、DynamoDBに登録したデータが表示されたらOKです。

![スクリーンショット 2020-12-03 2.10.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/cfc1dc44-6087-aaa1-ff7d-6a1ff3714724.png)
![スクリーンショット 2020-12-03 2.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/aa28de20-83c3-9fa9-b332-483e1b028c8e.png)

## ちょっと使ってみる
DynamoDBを操作するには、今までみていた「Results」ではなく「Build operations」を開きます。
![スクリーンショット 2020-12-04 2.37.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/aff63629-6ef3-3ef7-4b4d-5eca09d9ab4d.png)

開くと「Data plane operations」という項目があり、このプルダウンの中の操作ができる模様。
![スクリーンショット 2020-12-04 3.12.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/af03fcd6-c6ba-9652-2fdd-bc9654b77145.png)
### PutItem
書き込みやってみたかったので、`PutItem`やってみます。
入力項目（ざっと）
Data plane operations : PutItem
Table : 操作したいテーブル名
Partition Key : Partition Keyの値の入力
Other attributes→その他の値
![スクリーンショット 2020-12-04 2.33.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/a6cce416-2353-4b5b-1a57-6ee5bf464c02.png)
あとは「Run」をクリックして、入力項目に問題がなければデータが追加されます。
![スクリーンショット 2020-12-04 3.34.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/e064ca6d-a515-2b23-085d-6ddf1ceb3a93.png)
また「Generate code」をクリックすると、「Build operations」で指定した操作について「Python」「JavaScript」「Java」それぞれのコードを作成してくれます。（すごい）
![スクリーンショット 2020-12-04 2.36.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/cb511938-f9c0-a5d1-c311-91d2dda5fc84.png)

### Scan
キャプチャのみにとどめますが`Scan`の場合は以下のようになります。
(satisfaction)

入力
![スクリーンショット 2020-12-04 3.56.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/71863379-c8c9-2f6f-2168-378f2a1e6313.png)

結果
![スクリーンショット 2020-12-04 3.57.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277737/138f3b4a-0b92-a4a6-58ba-cc936898f2e4.png)

## 余談
普通にインストールするとデスクトップにアイコン配置されるのなんででしょうね。（macOSは個人的になくていい）

## おわり
便利な機能たくさんありそうなので、何か発見したらまた記事にしようかと思います。

以上です！！