我遇到了将数据发送到DynamoDB的问题。我不知道问题是什么,因为看起来程序运行正常,但我的数据库中似乎没有任何数据。我能够使用Amazons tutorial创建表格,但是当我按照本教程进行操作时,如果我尝试将 ALL 设置为项目,则会收到失败的响应,如果只有一个项目则会出现错误的成功,因为db中没有更新任何内容。
这是代码,我很好奇,如果有人知道调试这些问题的方法。
<?php
// If necessary, reference the sdk.class.php file.
// For example, the following line assumes the sdk.class.php file is
// in an sdk sub-directory relative to this file
require_once('includes/backend.php');
// Instantiate the class
$dynamodb = new AmazonDynamoDB();
####################################################################
# Setup some local variables for dates
$one_day_ago = date('Y-m-d H:i:s', strtotime("-1 days"));
$seven_days_ago = date('Y-m-d H:i:s', strtotime("-7 days"));
$fourteen_days_ago = date('Y-m-d H:i:s', strtotime("-14 days"));
$twenty_one_days_ago = date('Y-m-d H:i:s', strtotime("-21 days"));
####################################################################
# Adding data to the table
echo PHP_EOL . PHP_EOL;
echo "# Adding data to the table..." . PHP_EOL;
// Set up batch requests
$queue = new CFBatchRequest();
$queue->use_credentials($dynamodb->credentials);
// Add items to the batch
$dynamodb->batch($queue)->put_item(array(
'TableName' => 'ProductCatalog',
'Item' => array(
'Id' => array( AmazonDynamoDB::TYPE_NUMBER => '101' ), // Hash Key
'Title' => array( AmazonDynamoDB::TYPE_STRING => 'Book 101 Title' ),
'ISBN' => array( AmazonDynamoDB::TYPE_STRING => '111-1111111111' ),
'Authors' => array( AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Author1') ),
'Price' => array( AmazonDynamoDB::TYPE_NUMBER => '2' ),
'Dimensions' => array( AmazonDynamoDB::TYPE_STRING => '8.5 x 11.0 x 0.5' ),
'PageCount' => array( AmazonDynamoDB::TYPE_NUMBER => '500' ),
'InPublication' => array( AmazonDynamoDB::TYPE_NUMBER => '1' ),
'ProductCategory' => array( AmazonDynamoDB::TYPE_STRING => 'Book' )
)
));
echo "Item put in <b>Reply</b>" . "<br/>";
// Execute the batch of requests in parallel
$responses = $dynamodb->batch($queue)->send();
// Check for success...
if ($responses->areOK())
{
echo "The data has been added to the table." . PHP_EOL;
}
else
{
utdump($responses);
}
感谢您的时间
答案 0 :(得分:1)
尝试明确设置您的区域,例如对于EU,您需要致电:
$myDynamoDbObject->set_region('dynamodb.eu-west-1.amazonaws.com');
也可能是您在不同区域有两个表,您的应用程序使用其中一个表,并且您尝试使用另一个表读取(或使用Web控制台跟踪),因为应用了不同的默认区域。
如果您要跟踪表格中的项目数量,请记住它不是实时数字,它只会每6小时更新一次。因此,使用方式可以确保您的项目确实是通过在收到放置请求的“确定”响应后立即读回来确定的。