2013-08-18 13 views
28

Von diesem Code, den ich erhalte die Störung unterAmazon 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')); 

ich die folgende Fehlermeldung erhalten, wenn eine Tabelle in AWS DynamoDB hinzufügen möchten.

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 

Bisher habe ich:

  • geprüft, um zu sehen, ob Authentifizierungsschlüssel und Secret Key korrekt waren, waren sie.
  • Aktualisiert cURL
  • Wenn ich falsche Authentifizierungsberechtigungen eingab, änderte sich der Fehler nicht.

Antwort

81

Es scheint, dass Ihre lokale Systemzeit möglicherweise falsch ist. Ich hatte ein ähnliches Problem mit AWS S3, bei dem meine Systemuhr um 30 Minuten verschoben war.

Wenn Sie Ubuntu laufen lassen, versuchen Sie, Ihre Systemzeit Aktualisierung:

sudo ntpdate ntp.ubuntu.com 
+1

Danke, dass es den Job gemacht hat! –

+8

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

+0

Ich habe buchstäblich meinen ganzen Tag damit verschwendet! Danke für diese Antwort, habe mein Problem sofort behoben. –

2

Sie können auch Ihr Termin-Dienst neu starten, das Problem zu lösen, wenn Sie haben bereits ntpdate installiert.

sudo service ntpdate stop 
sudo service ntpdate start 
1

Wenn Sie docker-machine auf Mac verwenden, können Sie mit diesem Befehl lösen:

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

0

Schnell Hinweis für vagabundierende Projekte: Dies ist in der Regel durch vagrant reload aufgelöst.

Verwandte Themen