我正在将dynamoDB-local与nodejs代码一起使用。

我有以下代码:

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调用)

例如。以下为我工作

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)
    });
  }
});

关于node.js - 无法在dynamodb-local中创建表-AWS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28697711/

10-11 08:38