无法在本地dynamoDB

时间:2015-12-14 12:34:48

标签: amazon-web-services amazon-dynamodb aws-sdk

我在本地运行DynamoDB并使用shell创建一个表(localhost:8000 / shell /)。

可以使用以下代码确认:

var params = {
  ExclusiveStartTableName: 'STRING_VALUE',
  Limit: 10
};
dynamodb.listTables(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

输出

{"TableNames":["myTable"]}

然而,当我从PHP代码调用getItem / PutItem时,它会抛出以下错误

  

[Mon Dec 14 11:22:48.266930 2015] [:error] [pid 12] [客户   10.0.2.2:58042] PHP致命错误:未捕获的Aws \ DynamoDb \ Exception \ ResourceNotFoundException:AWS错误代码:   ResourceNotFoundException,状态代码:400,AWS Request ID:   8de599f1-7aa6-4147-b2f8-b3acc74b09da,AWS错误类型:客户端,AWS   错误消息:无法对不存在的表执行操作,   用户代理:aws-sdk-php2 / 2.8.24 Guzzle / 3.9.3 curl / 7.35.0   PHP / 5.5.9-1ubuntu4.14 \ n抛入   /opt/lib/aws/sdk/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php   在第91行

这就是我创建客户端的方式

$this->client = DynamoDbClient::factory(array(
    'key' => 'YOUR_KEY', 
    'secret' => 'YOUR_SECRET', 
    'profile' => 'default',
    'region'  => 'us-west-2',
    //'version' => '2012-08-10',
    'endpoint'=> 'http://localhost:8000',
    //'debug'   => true
));

如果端点错误,客户端创建本身会抛出错误,但在这种情况下,表格不会按照PHP创建

echo "List of tables";
$iterator = $this->client->()->getIterator('ListTables');
foreach ($iterator as $tableName) {
    echo $tableName . "\n";
}

什么都不打印。

1 个答案:

答案 0 :(得分:1)

我刚才在这里回答了类似的问题:https://stackoverflow.com/a/40806393/1061798

检查您如何启动dynamoDB。您需要添加-sharedDb标志,如上面链接中的答案中所述