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