[AWS] [DynamoDB]通过PhP SDK连接到数据库

时间:2015-10-21 16:39:37

标签: php amazon-web-services amazon-ec2 amazon-dynamodb

我是AWS新手。我安装了一个处理PhP代码的EC2服务器。我可以通过亚马逊网站管理数据库。我正在尝试使用以下代码访问我的DynamoDB表:

use Aws\DynamoDb\DynamoDbClient;      
    try {             
        $client = DynamoDbClient::factory(array(
            'profile' => 'default', // access ID + secret are in the .aws/credentials file
            'region' => Region::EU_WEST_1 // also tried with "eu-west-1"
        ));              
        echo "after client instanciation"; // this is not displayed

        $response = $client->getItem([
            'TableName' => 'Child',
            'Key' => [
                'ChildID' => 'Nicolas'
                ]
        ]);
        print_r ($response['Item']);
    } catch (Exception $e) {
        echo '<p>Exception received : ',  $e->getMessage(), "\n</p>";
    }

我没有得到任何例外。我想要的孩子没有显示(我确实创造了它)。还尝试使用putItem方法,但它没有向数据库添加任何内容。

2 个答案:

答案 0 :(得分:0)

我认为你错过了密钥中的数据类型:

$response = $dynamodb->getItem([
'TableName' => 'Child',
'Key' => [
    'ChildID' => [ 'S' => 'Nicolas' ]
]

]);

现在你应该得到输出,你可以参考这个Link

答案 1 :(得分:0)

尝试使用以下代码,它允许您通过参数传递公共密钥和秘密密钥。

$client = new DynamoDbClient([
'version' => 'latest',
'region' => 'ap-northeast-1',
'credentials' => [
'key' => 'A5ITUTLAK7W47NNNNQ',
'secret' => 'DrsEjmEMs4PUPIY5/12a/cpUB7JVVcKLahFz826p'
]
]);

try {   
$result = $client->getItem(array(
'ConsistentRead' => true,
'TableName' => 'fruits',
'Key' => array(
'id' => array('S' => '1')
)
));

将密钥替换为您的密钥。

参考: https://solutionarchitects.guru/viewtopic.php?f=30&t=27