最近DynamoDB發佈了文檔類型(列表或地圖)。在這裏看到:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes 或在這裏:http://www.allthingsdistributed.com/2014/10/document-model-dynamodb.htmlAWS PHP SDK問題(DynamoDB)
現在正在嘗試以下數組存儲在DynamoDB
array("key"=>"value")
我使用PHP SDK 2.7.0和2.7.2和3.0.0的測試版(嘗試了所有那些解決我的問題,每次都是同樣的問題)。我下面哪個代碼存儲兩個字符串完美的作品:
require ("aws2.7.0/aws-autoloader.php");
use Aws\DynamoDb\DynamoDbClient;
$client = DynamoDbClient::factory(array(
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'eu-west-1'
));
$result = $client->putItem(array(
'TableName' => 'requests-test',
'Item' => array(
'messageId' => array('S' => "test-message1"),
'data' => array('S' => "message-data-here"),
),
)
));
現在我想存儲與地圖數據類型的簡單數組,而不是字符串:
require ("aws2.7.0/aws-autoloader.php");
use Aws\DynamoDb\DynamoDbClient;
$client = DynamoDbClient::factory(array(
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'eu-west-1'
));
$result = $client->putItem(array(
'TableName' => 'requests-test',
'Item' => array(
'messageId' => array('S' => "test-message1"),
'data' => array('M' => array("key"=>"value")),
),
)
));
這將導致以下錯誤:
Fatal error: Uncaught Aws\DynamoDb\Exception\DynamoDbException: AWS Error Code: SerializationException, Status Code: 400, AWS Request ID: 8H9URPVBNPCTG4VALA62XXXX3NVV4KQNSO5AEMVJF66Q9ASUAYGX, AWS Error Type: client, AWS Error Message: Expected null, User-Agent: aws-sdk-php2/2.7.0 Guzzle/3.9.2 curl/7.36.0 PHP/5.3.28 thrown in /path/aws2.7.0/Aws/Common/Exception/NamespaceExceptionFactory.php on line 91
AWS PHP SDK 2.7.0及以上應支持地圖和列表類型:https://github.com/aws/aws-sdk-php/releases/tag/2.7.0
如何將數組存儲在DynamoDB中?目前的SDK還有可能 - 還是需要發佈更新以完全支持這些新的數據類型?或者是我的代碼中的問題?
我會很感激任何意見或可能的解決方案。提前致謝!
關於這個新功能的更多信息,可以發現在aws博客上:http://aws.amazon.com/blogs/aws/dynamodb-update-json-and-more/ – 2014-10-27 17:44:26