2012-04-23 46 views
7

Estoy utilizando una clase PHP para Amazon S3 y CloudFront - Link. Pero cuando intento cargar un archivo en un cubo, aparece este error:SignatureDoesNotMatch - Amazon S3 API

[SignatureDoesNotMatch] The request signature we calculated does not match the signature you provided. Check your key and signing method.

¿Cómo solucionarlo?

Gracias.

Respuesta

8

Cuando se registra en Amazon, puede crear usted mismo un par de claves (Amazon llama a las claves de acceso y la clave de acceso secreta).

Esos dos se utilizan para firmar solicitudes a los servicios web de Amazon. Amazon vuelve a calcular la firma y la compara si coincide con la que figuraba en su solicitud. De esa forma, la clave de acceso secreta nunca necesita ser transmitida a través de la red.

Si obtiene "La firma no coincide", es muy probable que haya utilizado una clave de acceso secreta incorrecta. ¿Puedes volver a verificar la clave de acceso y la clave de acceso secreta para asegurarte de que son correctas?

+0

Gracias! Cómo solucionar este problema - http://goo.gl/QTdm4 –

+0

@ roman-nazarkin Entonces, ¿el problema era la ubicación del contenedor? – awendt

+1

en mi caso, había un espacio en blanco adicional en el archivo/configuración de configuración que tenía la clave secreta, por lo que estaba transmitiendo un carácter 'tab' extra en la" contraseña ", lo que invalidaba la firma. – drzaus

4

Personalmente recibí este error debido a los caracteres que estaban en mis metadatos.

El carácter problemático era el carácter "-" que es "\ u2013" en Unicode y diferente de "-".

$result = $s3->putObject(array(
    'Bucket'  => $bucket, 
    'Key'   => $keyname, 
    'Metadata' => [ 
     'name' => 'Terminology – Blah' 
    ] 
)); 

Una nota de la documentación http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata ...

Amazon S3 stores user-defined metadata in lowercase. Each name, value pair must conform to US-ASCII when using REST and UTF-8 when using SOAP or browser-based uploads via POST.

+1

ídem: cuando agrego Metadatos con una clave 'Cache-Control' a un objeto que ya tiene una clave de metadata 'cache-control', aparece este error. – Joscha

0

tuve este error con putObject() cuando se especifica un Key comenzando con carácter de barra (/) - después de quitar la barra funcionó multa.