s3client example composer aws php amazon-web-services amazon-dynamodb

php - example - Amazon DynamoDB InvalidSignatureException



aws/aws-sdk-php (4)

De este código obtengo el siguiente error

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''));

Recibo el siguiente error al intentar agregar una tabla al DynamoDB de 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

Hasta ahora he:

  • Comprobado para ver si la clave de autenticación y la clave secreta eran correctas, lo eran.
  • CURL actualizado
  • Cuando puse permisos de autenticación falsa, el error no cambió.

Nota rápida para proyectos vagabundos: esto generalmente se resuelve mediante la vagrant reload .


Parece que la hora de su sistema local puede ser incorrecta. Tuve un problema similar con AWS S3, donde el reloj de mi sistema estaba sesgado en 30 minutos.

Si está ejecutando ubuntu, intente actualizar la hora de su sistema:

sudo ntpdate ntp.ubuntu.com


Si está utilizando docker-machine en Mac, puede resolverlo con este comando:

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


También puede reiniciar su servicio de citas para resolver el problema si ya tiene instalado ntpdate.

sudo service ntpdate stop sudo service ntpdate start