我正在使用提到的here
本地启用了docker的dynamoDB以下是我的JS代码:
AWS.config.update({
region: 'sas',
endpoint: 'http://docker.for.mac.host.internal:8000' //'http://localhost:8000'
});
并在下面创建表函数:
function createTable() {
let params = {
TableName: 'sas',
KeySchema: [{
AttributeName: 'title',
KeyType: 'HASH',
}],
AttributeDefinitions: [{
AttributeName: 'title',
AttributeType: 'S'
}],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1,
}
};
dynamoDB.createTable(params, function(err, data) {
if (err)
console.log(err); // an error occurred
else
console.log(data);
});
}
我可以使用cli查看创建的表 sas :
aws dynamodb list-tables --endpoint-url http://localhost:8000 --region=sas
但未在中列出该表,并且该表始终为空。
http://localhost:8000/shell/
有什么主意吗?
注意: 我可以通过在本地运行dynamodb jar来查看带有以上代码的表
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
答案 0 :(得分:3)
@Mendhak在another answer here的注释中指出,如果您使用的是docker-compose,则需要共享数据库,您可以通过覆盖command
docker-compose.yml
version: "3.7"
services:
dynamodb-local:
image: amazon/dynamodb-local:latest
container_name: dynamodb-local
ports:
- "8000:8000"
command: -jar DynamoDBLocal.jar -sharedDb
在庞大的AWS文档中我什么都没看到,所以我想留下这个答案以提高其他流浪开发人员的可见性。
向Mendhak致谢-如果对您有帮助,您可以对他的评论以及此答案进行投票!
答案 1 :(得分:0)
确保您还将-sharedDb传递给docker映像。
如果-sharedDb不存在,则dynamodb-local将使用
将访问键+区域作为命名空间来分隔表
(好像他们在不同的AWS帐户下)
答案 2 :(得分:0)
您可以在启动 docker dynamodb 时指定 -sharedDb 参数。
docker run -itd -p 8000:8000 --name dev-db amazon/dynamodb-local:latest -jar DynamoDBLocal.jar -sharedDb