Cam*_*ini 0 php amazon-web-services amazon-dynamodb
最近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")
Run Code Online (Sandbox Code Playgroud)
我正在使用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"),
),
)
));
Run Code Online (Sandbox Code Playgroud)
现在我试图存储一个简单的数组,其中包含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")),
),
)
));
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误:
致命错误:未捕获的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 - 或者他们是否需要发布更新以完全支持这些新数据类型?或者是我的代码中的问题?
我真的很感激任何意见或可能的解决方案.提前致谢!
在DynamoDB中,文档(列表或映射)的值应该是属性值.
'Item' => array(
'messageId' => array('S' => "test-message1"),
'data' => array('M' => array("key"=>
array('S' => "value"))),
),
)
Run Code Online (Sandbox Code Playgroud)
同样在列表中,您将拥有:
array('L' => array(
array('S' => "key"), array('S' => "value")));
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |