Dynamo DB local Shellが上手く動かなかったお話
背景
とある事情でDynamoDB localを触ってみることになり、Dockerコンテナでサクッと動かせるらしいので試してみた。
事象
上の公式記事を参考に意気揚々とコンテナを立て、標準でDynamoDB shellといふものが備わっているらしいのでブラウザ越しに早速触ってみようとしたのだが。。。

上手くアクセスができない。
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の問題ということでもなさそうだったのでネットの海を彷徨うこと小一時間。 似たような問題に直面している方の質問を発見。
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のものにして再チャレンジしてみると。。。

すんなり動いた。
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