最近DynamoDB发布了文档类型(列表或地图).请参阅此处:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes 或此处:http://www.allthingsdistributed.com/2014/10/document-model-dynamodb html的
现在我试图在DynamoDB中存储以下数组
array("key"=>"value")
我正在使用PHP SDK 2.7.0和2.7.2以及3.0.0 beta(尝试了所有那些解决我的问题,每次相同的问题).我下面的代码存储两个字符串完美的作品:
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"), ), ) ));
现在我试图存储一个简单的数组,其中包含Map数据类型而不是字符串:
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")), ), ) ));
这会导致以下错误:
致命错误:未捕获的Aws\DynamoDb\Exception\DynamoDbException:AWS错误代码:SerializationException,状态代码:400,AWS请求ID:8H9URPVBNPCTG4VALA62XXXX3NVV4KQNSO5AEMVJF66Q9ASUAYGX,AWS错误类型:客户端,AWS错误消息:预期为null,User-Agent:aws-sdk-在第91行的/path/aws2.7.0/Aws/Common/Exception/NamespaceExceptionFactory.php中抛出php2/2.7.0 Guzzle/3.9.2 curl/7.36.0 PHP/5.3.28
AWS PHP SDK 2.7.0及更高版本应支持Map和List类型:https://github.com/aws/aws-sdk-php/releases/tag/2.7.0
如何在DynamoDB中存储数组?是否可以使用当前的SDK - 或者他们是否需要发布更新以完全支持这些新数据类型?或者是我的代码中的问题?
我真的很感激任何意见或可能的解决方案.提前致谢!