我正在尝试执行batch_get_item以从表中请求多个项目。我正在遵循DynamoDB文档中的PHP示例,但未获得预期的结果。

以下是代码:

$batch_array = array ();
$batch_array[]= array ('HashKeyElement'  =>
 array( AmazonDynamoDB::TYPE_STRING => 'V1L3M5O5L1W8R5B6D2Q1S8V0B3R8M7A6R0X0'));

$options = array (
    'RequestItems' => array(
        'profile_dev' => array (
            'Keys' => $batch_array
            )
    )
);

$result = $this->db->batch_get_item($options);


我没有得到数据,而是得到了很长的响应,并且从尾端包括了相关信息:

[x-aws-body] => {"RequestItems":{"profile_dev":{"Keys":[{"HashKeyElement":{"S":"V1L3M5O5L1W8R5B6D2Q1S8V0B3R8M7A6R0X0"}}]}}} ) [body] => CFSimpleXML Object ( [__type] => com.amazon.coral.validate#ValidationException [message] => One or more parameter values were invalid: The provided key size does not match with that of the schema ) [status] => 400 ) )


该表的hashKey是一个字符串。它有一个rangeKey,但是我正在使用hashKey,所以我可以获得与hashKey匹配的所有行。我想念什么?

最佳答案

DynamoDB文档(和SDK示例)中包含许多错误。文档和实际的SDK代码仅使用hashKeyElement,但是实际上,如果表同时具有hashKey和rangeKey,则必须同时使用两者。

当我同时使用hashKey和rangeKey时,该调用有效。

关于php - DynamoDB:使用batch_get_item无法得到我期望的答案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13832765/

10-11 07:01