【Docker】amazon/dynamodb-localとaaronshaf/dynamodb-adminを組み合わせてローカルのDynamoDBをGUI操作する

version: '3'
services:
  db:
    image: amazon/dynamodb-local
    ports:
      - 8000:8000

  db-admin:
    image: aaronshaf/dynamodb-admin
    ports:
      - 8001:8001
    environment:
      AWS_REGION: us-east-1
      AWS_ACCESS_KEY_ID: local
      AWS_SECRET_ACCESS_KEY: local
      DYNAMO_ENDPOINT: http://db:8000

このような docker-compose.yml を組んで docker-compose up -d を実施し、ブラウザで http://localhost:8001 を開くだけなのだが、少しハマった。

GUI上ではテーブル作成・テーブル一覧表示が行えているが、awscliで

aws dynamodb list-tables --endpoint-url http://localhost:8000 --region us-east-1

を叩いても

{
    "TableNames": []
}

と返ってきてテーブルが見れない。

Does not work with docker image · Issue #52 · aaronshaf/dynamodb-admin · GitHub

このissueによると endpoint, regionだけでなくaccess keyとsecret keyも完全に合わせる必要がある ということらしい。

なので次のようにローカル開発用にprofileを作れば良い。

aws configure --profile local
AWS Access Key ID : local
AWS Secret Access Key : local
Default region name : us-east-1
Default output format : json

profileを追加したらそれを使ってさっきのコマンドを叩く。

aws dynamodb list-tables --endpoint-url http://localhost:8000 --region us-east-1 --profie local
{
    "TableNames": [
        "test"
    ]
}

GUIから作った test テーブルを見ることができた。