HomebrewでインストールしたDynamoDB Localについて全力でまとめてみた

Java側からとJavascript側からDynamoDB Localにアクセスした際に表示されるテーブル一覧がずれていたので、その調査になります。

DynamoDB Localの中身はSQLiteになっています。

Homebrewでインストールした場合、ファイルの保存先は以下のようになっています。

/usr/local/var/data/dynamodb-local

Javaから接続する場合

  • Region:ap-northeast-1
  • Endpoint:http://localhost:8000

にした場合

AmazonDynamoDBClient client = new AmazonDynamoDBClient(new BasicAWSCredentials("AWS_ACCESS_KEY_ID", "yourSecretAccessKey"));
client.setRegion(Region.getRegion(Regions.AP_NORTHEAST_1));
client.setEndpoint("http://localhost:8000");

/usr/local/var/data/dynamodb-local のフォルダ内に

AWS_ACCESS_KEY_ID_us-east-1.db

のような形でデータベースが生成されます。(Region指定は無視されるようです)

DynamoDB JavaScript Shell

DynamoDB Localには以下のコンパネが付属しています。

http://localhost:8000/shell/

ここから接続する際に接続先情報を共有するには

Optionの「Access Key Id」にJava側で設定しているものと同じIDを指定します。

ただ、これだけだとリージョンがずれるようです。

/usr/local/var/data/dynamodb-local のフォルダ内のファイルは以下のようになります。

AWS_ACCESS_KEY_ID_us-west-2.db

そのため、DynamoDB JavaScript Shellからは以下のようにしてRegionおよびEndpointを指定して接続をします。

var dynamodb = new AWS.DynamoDB({
    region: 'us-east-1',
    endpoint: "http://localhost:8000"
});
dynamodb.listTables().eachPage(function(err, data) {
    if (err) {
        ppJson(err); // an error occurred
    } else if (data) {
        ppJson(data);
    }
});

他の方法としては起動時のオプションとして「 -sharedDb 」を指定するといいようです。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html