2013-08-18 4 views
28

Da questo codice sto ottenendo l'errore sottoAmazon DynamoDB InvalidSignatureException

require "vendor/autoload.php"; 
use Aws\Common\Aws; 
use Aws\DynamoDb\DynamoDbClient; 
use Aws\DynamoDb\Enum\ComparisonOperator; 
use Aws\DynamoDb\Enum\KeyType; 
use Aws\DynamoDb\Enum\Type; 

$aws = Aws::factory(array(
'key' => '[clipped]', 
'secret' => '[clipped]', 
'region' => Region::US_WEST_1 
)); 

$client = $aws->get("dynamodb"); 
$tableName = "ExampleTable"; 

$result = $client->createTable(array(
    "TableName" => $tableName, 
    "AttributeDefinitions" => array(
     array(
      "AttributeName" => "Id", 
      "AttributeType" => Type::NUMBER 
     ) 
    ), 
    "KeySchema" => array(
     array(
      "AttributeName" => "Id", 
      "KeyType" => KeyType::HASH 
     ) 
    ), 
    "ProvisionedThroughput" => array(
     "ReadCapacityUnits" => 5, 
     "WriteCapacityUnits" => 6 
    ) 
)); 

print_r($result->getPath('TableDescription')); 

sto ottenendo il seguente errore quando si tenta di aggiungere una tabella in DynamoDB di AWS.

PHP Fatal error: Uncaught Aws\\DynamoDb\\Exception\\DynamoDbException: AWS Error Code: 
InvalidSignatureException, 
Status Code: 400, 
AWS Request ID: [clipped], 
AWS Error Type: client, 
AWS Error Message: Signature expired: 20130818T021159Z is now earlier than 
20130818T021432Z (20130818T022932Z - 15 min.), 
User-Agent: aws-sdk-php2/2.4.3 Guzzle/3.7.2 curl/7.21.6 PHP/5.3.6-13ubuntu3.9\n thrown in 
/var/www/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php on 
line 91 

Finora ho:

  • controllato per vedere se chiave di autenticazione e chiave segreta erano corrette, erano.
  • Aggiornato cURL
  • Quando ho inserito le autorizzazioni di autenticazione false, l'errore non è cambiato.

risposta

81

Sembra che l'ora del sistema locale potrebbe essere errata. Ho avuto un problema simile con AWS S3, dove il mio orologio di sistema era inclinato di 30 minuti.

Se stai usando Ubuntu, tenta l'aggiornamento del tempo di sistema:

sudo ntpdate ntp.ubuntu.com 
+1

Grazie ha fatto il lavoro! –

+8

su mac 'sudo ntpdate -u time.apple.com' – BKH

+0

Ho letteralmente sprecato tutto il giorno intorno a questo! Grazie per questa risposta, risolto il mio problema all'istante. –

2

È anche possibile riavviare il servizio di data per risolvere il problema se hai già ntpdate installato.

sudo service ntpdate stop 
sudo service ntpdate start 
1

Se si utilizza docker-machine su Mac, è possibile risolvere con questo comando:

docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'

0

nota rapida per progetti vaganti: questo di solito è risolto vagrant reload.