DynamoDB表已创建,但无法插入新项目。

3

我正在使用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
      })

我已经创建了连接,当我运行时,表格被正确地创建并且我可以在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
      })

但是在第二行仍然收到相同的错误消息。 我缺少了什么?


1
你能捕获并添加完整的错误回溯吗? - NoamG
2个回答

6
问题在于在创建表格后需要等待一段时间才能插入项目。您可以使用waitFor()事件来查找表格何时完成创建。
使用AWS Node SDK的示例:
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();
    });    
});

3

创建表后,您的表不会立即准备就绪,您需要等待它变为活动状态才能向其中写入数据。我找到了一个Java代码示例,演示了如何做到这一点,但问题并不特定于语言,适用于任何DynamoDB客户端。

您可以在AWS管理控制台中查看表的“状态”,以确认或否认此理论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接