DynamoDB 表正在创建但无法插入新项目

Roh*_*han 3 boto amazon-dynamodb

我正在使用 boto DynamoDBV2 接口作为脚本在 DynamoDB 中创建和填充表。我的代码看起来像这样 -

my_table = Table.create(table_name, schema=[HashKey('key', data_type=STRING)], connection = self.connection)
my_table.put_item(data={
         'key': 'somekey',
         'value': value
      })
Run Code Online (Sandbox Code Playgroud)

我已经创建了连接,当我运行它时,表被正确创建,我可以在 AWS 控制台中看到它。但是我在尝试将值放入表中时收到错误“未找到请求的资源”。

我也尝试单独读取表格,然后插入这样的值 -

Table.create(table_name, schema=[HashKey('key', data_type=STRING)], connection = self.connection)
my_table = Table(table_name, self.connection)
my_table.put_item(data={
         'key': 'somekey',
         'value': value
      })
Run Code Online (Sandbox Code Playgroud)

但在第二行仍然出现相同的错误。我错过了什么?

Zan*_*non 6

问题是您需要在创建表后等待一段时间再插入项目。您可以使用该waitFor()事件来查找表何时完成创建。

AWS 节点开发工具包示例:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB();

const createTableParams = {
  // parameters...
}

dynamodb.createTable(createTableParams, (err, data) => {
    if (err) return console.log(err, err.stack);

    const params = {
        TableName: 'MY_TABLE'
    };

    dynamodb.waitFor('tableExists', params, (err, data) => {
        if (err) console.log(err, err.stack);
        else     insertData();
    });    
});
Run Code Online (Sandbox Code Playgroud)