dynamo db本地外壳未使用docker image列出表

时间:2019-02-15 23:23:27

标签: node.js amazon-web-services docker amazon-dynamodb dynamo-local

我正在使用提到的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 

3 个答案:

答案 0 :(得分:3)

@Mendhakanother 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