🐶

Dynamo DB local Shellが上手く動かなかったお話

2023/01/20に公開

背景

とある事情でDynamoDB localを触ってみることになり、Dockerコンテナでサクッと動かせるらしいので試してみた。

事象

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html
上の公式記事を参考に意気揚々とコンテナを立て、標準でDynamoDB shellといふものが備わっているらしいのでブラウザ越しに早速触ってみようとしたのだが。。。

上手くアクセスができない。

docker-compose.yaml
version: '3.8'
services:
  dynamodb-local:
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
    image: "amazon/dynamodb-local:latest"
    container_name: dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - "./docker/dynamodb:/home/dynamodblocal/data"
    working_dir: /home/dynamodblocal

ちゃんとホスト8000->コンテナ8000/tcpでフォワーディングされてるし、同じことをされてる方のブログや記事を見ても同事象が起きている様子はなさそうだった。

回避策

結果:Versionの古いImageをPullしてコンテナを立て直してみたらうまく動いた。

当初はPCを変えたばかりということもあり、自身の環境設定(WSLやら)起因で起きているのかと考えたが、どうもNWの問題ということでもなさそうだったのでネットの海を彷徨うこと小一時間。
https://stackoverflow.com/questions/70535330/dynamodb-local-web-shell-does-not-load
似たような問題に直面している方の質問を発見。

DynamoDB Local Web Shell was deprecated with version 1.16.X and is not available any longer from 1.17.X to latest. There are no immediate plans for a new Web Shell to be introduced.
You can download an old version of DynamoDB Local < 1.17.X should you wish to use the Web Shell.

と、いうことで少し古い1.16.0のversionのものにして再チャレンジしてみると。。。

すんなり動いた。

docker-compose.yaml
version: '3.8'
services:
  dynamodb-local:
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
    image: "amazon/dynamodb-local:1.16.0"
    container_name: dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - "./docker/dynamodb:/home/dynamodblocal/data"
    working_dir: /home/dynamodblocal

結論

上の引用にもあるが、1.17.X以降ではDynamoDB Local Web Shellがdeprecateされてしまったらしく、DynamoDB LocalのRelease Notesを見に行っててみると(Release Notesはダウンロードできるjarファイルと一緒に固めてあるREADMEの中にある)

2021-10-08 (1.17.0)

  • Update the AWS SDK dependency to AWS SDK for Java 1.12.x
  • Update License.txt file
  • Deprecated Javascript Web Shell

なるほど確かにそうっぽい…
と、いうことなのでDocker以外で動かすにしてもShell触るときはVersionに注意しないといけないようでした。難しいですね。

Discussion