无法在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)
});
}
});
发出createTable之后,您必须等到该表被有效创建。一旦创建了表格,它将出现在你的listTables调用中。您可以使用describeTable调用等待。
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property
CREATETABLE是一个异步操作。收到CreateTable请求后,DynamoDB立即返回一个带有CREATING的TableStatus的响应。
您可以使用DescribeTable API来检查表状态。
只是想指出,DynamoDB本地立即创建表,让你可以离开,不这样做,如果你不与实际的服务工作如下。(当然,也建议做如果您打算最终使用真正的DynamoDB,则检查TableStatus ACTIVE) – 2015-02-24 22:05:11
谢谢!我之前已经尝试过'ProvisionedThroughput'。但是我在那里把'KeyType'当作字符串 - 'S' - 所以它不起作用,这就是为什么我删除它的原因。在此之后,我将其更改为“HASH”,但没有返回:) – user2503775 2015-02-25 07:28:07