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