2013-08-18 74 views
28

Từ mã này tôi nhận được báo lỗi dưới đâyAmazon 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')); 

Tôi nhận được lỗi sau khi cố gắng thêm một bảng vào DynamoDB AWS của.

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 

Cho đến nay tôi đã:

  • Kiểm tra để xem nếu xác thực chính và bí mật chính là đúng, họ đã.
  • Cập nhật cURL
  • Khi tôi đặt quyền xác thực sai trong, lỗi không thay đổi.

Trả lời

81

Có vẻ như thời gian hệ thống cục bộ của bạn có thể không chính xác. Tôi đã có một vấn đề tương tự với AWS S3, nơi đồng hồ hệ thống của tôi bị lệch 30 phút.

Nếu bạn đang chạy ubuntu, hãy thử cập nhật thời gian hệ thống của bạn:

sudo ntpdate ntp.ubuntu.com 
+1

Cảm ơn đã thực hiện công việc! –

+8

trên mac 'sudo ntpdate -u time.apple.com' – BKH

+0

Tôi đã lãng phí cả ngày của mình xung quanh điều này! Cảm ơn câu trả lời này, đã khắc phục sự cố của tôi ngay lập tức. –

2

Bạn cũng có thể khởi động lại dịch vụ ngày của bạn để giải quyết vấn đề nếu bạn đã bị ntpdate cài đặt.

sudo service ntpdate stop 
sudo service ntpdate start 
1

Nếu bạn đang sử dụng docker-machine trên Mac, bạn có thể giải quyết bằng lệnh này:

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

0

lưu ý nhanh cho các dự án lang thang: điều này thường được giải quyết bằng cách vagrant reload.