DynamoDB本地 - 从PHP拒绝连接

时间:2016-06-30 19:05:41

标签: php amazon-dynamodb aws-sdk

我在端口8080上运行DynamoDB Local。这是用于启动数据库的命令:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 8080

转到localhost:8080/shell/会产生DynamoDB Javascript Shell。 shell工作并允许在本地db文件上执行操作。使用shell创建的db文件名为cUniqueSessionID_us-west-2.db

在PHP项目中,我有以下用于使用DynamoDB创建表的代码

$db = new \Aws\DynamoDb\DynamoDbClient([
    'region'   => 'us-west-2',
    'version'  => 'latest',
    'endpoint' => 'http://localhost:8080/',
    'credentials' => [
        'key' => 'not-a-real-key',
        'secret' => 'not-a-real-secret',
    ],
]);
$db->createTable([
    'TableName' =>'SampleTable',
    'AttributeDefinitions' => [
        [ 'AttributeName' => 'Id', 'AttributeType' => 'N' ]
    ],
    'KeySchema' => [
        [ 'AttributeName' => 'Id', 'KeyType' => 'HASH' ]
    ],
    'ProvisionedThroughput' => [
        'ReadCapacityUnits'    => 5,
        'WriteCapacityUnits' => 6
    ]
]);

但是运行它会产生Error executing "CreateTable" on "http://localhost:8080/"; AWS HTTP error: cURL error 7: Failed to connect to localhost port 8080: Connection refused

我尝试过关闭防火墙但没有成功。可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:-1)

我发现了这个问题。

我的PHP项目在Vagrant虚拟机中运行,但我在本地计算机上运行DynamoDB。因此,我的PHP代码中的localhost引用了 vagrant localhost ,但DynamoDB在我的机器的localhost 上运行。

为了解决这个问题,我在Vagrant中运行了DynamoDB。