windows — DynamoDB Local Basic PHP Setup

У меня возникли проблемы с подключением к моему локальному экземпляру DynamoDB. Я запускаю сервер, выполнив в командной строке следующее:

C:\Program Files\Java\jre8\bin>java -Djava.library.path=D:\DynamoDB\DynamoDBLoca
l_lib -jar D:\DynamoDB\DynamoDBLocal.jar

Мой PHP-код выглядит так:

<?

require './aws-autoloader.php';
use \Aws\DynamoDb\DynamoDbClient;

$client = \Aws\DynamoDb\DynamoDbClient::factory(array(
'profile' => 'default',
'region' => 'us-east-1',
'base_url' => 'http://localhost:8000'
));// create test table
$client->createTable(array(
'TableName' => 'errors',
'AttributeDefinitions' => array(
array(
'AttributeName' => 'id',
'AttributeType' => 'N'
),
array(
'AttributeName' => 'time',
'AttributeType' => 'N'
)
),
'KeySchema' => array(
array(
'AttributeName' => 'id',
'KeyType'       => 'HASH'
),
array(
'AttributeName' => 'time',
'KeyType'       => 'RANGE'
)
),
'ProvisionedThroughput' => array(
'ReadCapacityUnits'  => 10,
'WriteCapacityUnits' => 20
)
));

Когда я выполняю команду createTable (), я не вижу никаких действий в окне командной строки, где работает сервер, и я получаю следующую ошибку:

Fatal error:  Uncaught exception 'Aws\Common\Exception\InstanceProfileCredentialsException' with message 'Error retrieving credentials from the instance profile metadata server. When you are not running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in the "key" and "secret" options when creating a client or provide an instantiated Aws\Common\Credentials\CredentialsInterface object. ([curl] 28: Connection timed out after 5008 milliseconds [url] http://169.254.169.254/latest/meta-data/iam/security-credentials/)' in C:\xampp\htdocs\AWS\Aws\Common\InstanceMetadata\InstanceMetadataClient.php:85 Stack trace:
#0 C:\xampp\htdocs\AWS\Aws\Common\Credentials\RefreshableInstanceProfileCredentials.php(52): Aws\Common\InstanceMetadata\InstanceMetadataClient->getInstanceProfileCredentials()
#1 C:\xampp\htdocs\AWS\Aws\Common\Credentials\AbstractRefreshableCredentials.php(54): Aws\Common\Credentials\RefreshableInstanceProfileCredentials->refresh()
#2 C:\xampp\htdocs\AWS\Aws\Common\Signature\SignatureV4 in C:\xampp\htdocs\AWS\Aws\Common\InstanceMetadata\InstanceMetadataClient.php on line 85

Я немного сбит с толку, потому что кажется, что код не попадает ни на какой локальный сервер, что явно помешало бы работе чего-либо еще. Любой вклад / мысли будут высоко ценится.

1

Решение

Я не хочу отвечать на это так быстро, но оказалось, что ключ / секрет требуются даже для локального использования DynamoDB. Странно, это не упоминается на сайте AWS, но вот рабочий код для подключения, после этого все остальные примеры сработали:

$client = \Aws\DynamoDb\DynamoDbClient::factory(array(
'key' => 'YOUR_KEY',
'secret' => 'YOUR_SECRET',
'region' => 'us-west-2',
'base_url' => 'http://localhost:8000'
));
1

Другие решения

Других решений пока нет …