Selon les AWS Import API docs la demande ressemble à ceci:Comment générer une signature pour la demande d'API AWS Import?
POST/HTTP/1.1
content-type:application/x-www-form-urlencoded;charset=utf-8
host: https://importexport.amazonaws.com
content-length:356
Operation=CreateJob&Manifest=manifestVersion%3A%202.0%0Abucket%3A%20myBucket
%0AaccessKeyId%3A%2013Q2729HYRYMYRB3FK02%0AreturnAddress%3A%0A%20%20%20%20name%3A%20
Amazon.com%20ATTN%20Joe%20Random%20%0A%20%20%20%20street1%3A%201200%20AAAA%20Ave%20
S.%0A%20%20%20%20city%3A%20Seattle%0A%20%20%20%20stateOrProvince%3A%20WA%0A%20%20%20%20
postalCode%3A%2098114%0A%20%20%20%20phoneNumber%3A%20206-266-0000%0A%20%20%20%20
country%3A%20USA&JobType=Import&AWSAccessKeyId=1111729HYRYMYRB3FK02&
SignatureVersion=2&SignatureMethod=%2FVfkltRBOoSUi1sWxRzN8rw%3D
Comme vous pouvez le voir le dernier paramètre dans les données du corps est SignatureMethod. Mais ça ressemble à Signature. J'ai trouvé deux valeurs disponibles pour la méthode Signature. Ils sont HmacSHA1 et HmacSHA256.
J'ai utilisé la gemme aws/s3 afin de générer la chaîne de requête Signature et enfin j'ai la requête ressemble à la précédente mais avec un petit changement à la fin.
POST/HTTP/1.1
content-type:application/x-www-form-urlencoded;charset=utf-8
host: https://importexport.amazonaws.com
content-length:356
Operation=CreateJob&Manifest=manifestVersion%3A%202.0%0Abucket%3A%20myBucket
%0AaccessKeyId%3A%2013Q2729HYRYMYRB3FK02%0AreturnAddress%3A%0A%20%20%20%20name%3A%20
Amazon.com%20ATTN%20Joe%20Random%20%0A%20%20%20%20street1%3A%201200%20AAAA%20Ave%20
S.%0A%20%20%20%20city%3A%20Seattle%0A%20%20%20%20stateOrProvince%3A%20WA%0A%20%20%20%20
postalCode%3A%2098114%0A%20%20%20%20phoneNumber%3A%20206-266-0000%0A%20%20%20%20
country%3A%20USA&JobType=Import&AWSAccessKeyId=1111729HYRYMYRB3FK02&
SignatureVersion=2&SignatureMethod=HmacSHA1&Expires=2010-09-16T00:50:54-07:00&Signature=%2FVfkltRBOoSUi1sWxRzN8rw%3D
Mais la réponse est toujours 403 Interdit.
HTTP/1.1 403 Forbidden
x-amzn-RequestId: c0cb004b-c15e-11df-ad6c-5731ef5a3d54
Content-MD5: HvqVlJqxxJ5B5A73W4nUCg==
Content-Type: text/xml
Content-Length: 439
Date: Thu, 16 Sep 2010 06:50:55 GMT
<ErrorResponse xmlns="http://importexport.amazonaws.com/doc/2010-06-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
</Error>
<RequestId>c0cb004b-c15e-11df-ad6c-5731ef5a3d54</RequestId>
</ErrorResponse>
Vous pouvez trouver le code que j'utilisé pour tester ici ce http://gist.github.com/581726
S'il vous plaît me conseiller quel est le problème et comment générer correctement la signature.