LoginSignup
4
0

More than 1 year has passed since last update.

amplify mock api での DynamoDBへの接続(amplifyのワークショップ)

Last updated at Posted at 2021-05-26

AWSが提供する、NoSQLWorkbench があり、それを使うとAWSのクラウド側のDynamoDB、自身の端末に入れたDynamoDB Localに接続ができる。そのため、workbenchを使って接続したが、テーブルが見られなかった。そのため代替手段を探してみた
調査不足であるが、Workbenchが読み込む何らかの設定でキー(region、accessKeyId、secretAccessKey)が指定できれば接続できるとは思う。

環境

Windows10でDocker WSL2と amplify を VSCodeのリモートコンテナを使っている

状況

  • コンテナの中で、amplify(とDynamoDB Local相当)は動いている
  • amplify で、$ amplify mock api を実行すると、Amplify GraphQL Explorer機能でGraphQLのスキーマクエリーを手軽に実行できるWEB UIがある
  • mockapiの実行
    01.png

  • Web UIの URL: http://localhost:20002/

そのWeb UIでは
(名称は仮)createPost, deletePost, getPost, listPosts が自動で作られ、データの投入、削除、取得ができる。DynamoDBへのPutItem、getItem、Query、Filter相当を指定できるUIとレスポンス結果のjsonを見られる機能がある。
で、そのamplify mock apiで使っているDynamoDBに接続してアイテムの変更や削除がしたいと思った。UI機能よりも手軽にデータ削除がしたかった。

  • amplify mock apiでは、DynamoDBはポート62224で起動する、コンテナ内のプロセスを見ると、ポートは62224で起動している。
root ➜ / $ ps -aux|grep DynamoDB
root     18929  0.1  1.0 14210040 262472 pts/0 Sl+  May25   2:33 /usr/bin/java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 62224 -dbPath /workspaces/amplify-sns-workshop/boyaki/amplify/mock-data/dynamodb
  • 自身のホスト端末からNoSQLWorkbenchで接続するための設定等

    • ローカルへの接続で62224を指定する 03-workbench-1.png
    • Access key ID と Secret access keyは変更不可(disabled) 03-workbench-2.png
    • 接続はできるが権限なのかテーブルが見つからない 03-workbench-3.png
  • DynamoDB Localでは、以下を指定する(デフォルトで決まるのかも)が、workbenchではそれらを指定できなかった

  region: 'us-fake-1';
  accessKeyId: 'fake';
  secretAccessKey: 'fake';

代替の対応

  • 探してみると、https://www.gravitywell.co.uk/insights/how-to-use-your-mocked-dynamodb-with-appsync-and-lambda/ で、記載されていた dynamodb-admin というツールが公開されていて、それだとDynamoDB操作のUI機能がある
  • そのツールGithubのreadme.mdに記載のあるような対応で見られた。なお、Windows環境なので、Mac等では setを変える必要がある。

  • 自身の端末にdynamodb-adminを入れて環境変数をセットして、実行する。コンテナ側には入れていない。

  • readmeでは以下

npm install -g dynamodb-admin

# For Windows:
set DYNAMO_ENDPOINT=http://localhost:8000
dynamodb-admin

上記を、コンテナ相当に置き換えると、npmでインストールした後は

set DYNAMO_ENDPOINT=http://localhost:62224
set AWS_REGION=us-fake-1
set AWS_ACCESS_KEY_ID=fake
set AWS_SECRET_ACCESS_KEY=fake
dynamodb-admin
  • コマンド実行
    dynamodb-admin-1.png

  • 画面のUIを開く、http://localhost:8001/

    • ポートが8001なのはコンソールでそう表示されているため dynamodb-admin-2.png

これで、少し楽にDelete(remove item)ができるようになった
情報は英語が多いな

4
0
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
4
0