2013-08-18 13 views
28

このコードから、私は、AWSのDynamoDBのにテーブルを追加しようとすると、私は次のエラーを取得していますアマゾン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')); 

以下のエラーを取得しています。

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 

これまでのところ、私はしました:

  • は認証鍵と秘密鍵が正しかったかどうかを確認するためにチェック、彼らがいました。
  • cURL
  • 誤った認証権限を入力すると、エラーは変更されませんでした。

答えて

81

ローカルシステムの時刻が間違っているようです。私はAWS S3で同様の問題を抱えていました。私のシステムクロックは30分遅れていました。

あなたがUbuntuを使用している場合は、お使いのシステム時刻を更新してみてください:

sudo ntpdate ntp.ubuntu.com 
+1

ありがとうございました! –

+8

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

+0

私はこの間、文字通り私の一日を無駄にしました!この回答をお寄せいただきありがとうございます。 –

2

また、あなたはすでにntpdateをインストール持っていれば、問題を解決するためにあなたの日付サービスを再起動することができます。

sudo service ntpdate stop 
sudo service ntpdate start 
1

あなたがMac上でdocker-machineを使用している場合は、このコマンドで解決できます。

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

0

クイックノートを放浪プロジェクトのために:これは、通常vagrant reloadによって解決されます。