无法在dynamodb-local中创建表 - aws

问题描述:

我正在使用dynamoDB-local和nodejs代码。无法在dynamodb-local中创建表 - aws

我有以下代码:

var aws = require("aws-sdk") 
aws.config.update({"accessKeyId": "aaa", 
        "secretAccessKey": "bbb", 
        "region": "us-east-1"}) 

var awsdb = new aws.DynamoDB({ endpoint: new aws.Endpoint("http://localhost:8000") }); 

awsdb.createTable({ 
    TableName: 'myTbl', 
    AttributeDefinitions: [ 
    { AttributeName: 'aaa', AttributeType: 'S' }, 
    ], 
    KeySchema:[ 
    { AttributeName: 'aaa', KeyType: 'HASH' } 
    ] 
}, function() { 
    awsdb.listTables(function(err, data) { 
     console.log(data) 
    }); 
}); 

但它不是创建表。我在日志中获得{ TableNames: [] }。 err为空。

看起来您似乎缺少CreateTable请求中必需的ProvisionedThroughput参数。所以发生了什么事情是CreateTable返回一个验证错误,并且ListTables成功执行而没有返回任何表(代码中的“err”变量似乎是用于ListTables调用的)

E.g.为我工作

var aws = require("aws-sdk") 
aws.config.update({"accessKeyId": "aaa", 
    "secretAccessKey": "bbb", 
    "region": "us-east-1"}) 
var awsdb = new aws.DynamoDB({ endpoint: new aws.Endpoint("http://localhost:8000") }); 

awsdb.createTable({ 
    TableName: 'myTbl', 
    AttributeDefinitions: [ 
     { AttributeName: 'aaa', AttributeType: 'S' }, 
     ], 
    KeySchema:[ 
     { AttributeName: 'aaa', KeyType: 'HASH' } 
    ], 
    ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}, 
}, function(err, data) { 
    if (err) 
    console.log(err, err.stack); // an error occurred 
    else { 
    awsdb.listTables(function(err, data) { 
     console.log(data) 
    }); 
    } 
}); 
+0

谢谢!我之前已经尝试过'ProvisionedThroughput'。但是我在那里把'KeyType'当作字符串 - 'S' - 所以它不起作用,这就是为什么我删除它的原因。在此之后,我将其更改为“HASH”,但没有返回:) – user2503775 2015-02-25 07:28:07

发出createTable之后,您必须等到该表被有效创建。一旦创建了表格,它将出现在你的listTables调用中。您可以使用describeTable调用等待。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property

CREATETABLE是一个异步操作。收到CreateTable请求后,DynamoDB立即返回一个带有CREATING的TableStatus的响应。

您可以使用DescribeTable API来检查表状态。

+0

只是想指出,DynamoDB本地立即创建表,让你可以离开,不这样做,如果你不与实际的服务工作如下。(当然,也建议做如果您打算最终使用真正的DynamoDB,则检查TableStatus ACTIVE) – 2015-02-24 22:05:11