Back
I am developing code for salesforce. We are using 'Force.com for Amazon Web Services' App from Appexchange. The app is provided by Amazon.
I am downloading files from Amazon S3 on a machine.
Sometimes I am getting the below-mentioned error. Interesting thing is, only sometimes I get this error, rest of the times it works, even for the same file.
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
I tried using both URL patterns provided by Amazon. Expires is set for 1hr after link generation, hence may not be an issue.
URL1:- http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=URL2:- http://s3.amazonaws.com/adminportal/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372658253&Signature=%2FmI0m0PTlHJpJ%2FP5d%2FX3OApqzcI%3D
URL1:- http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
URL2:- http://s3.amazonaws.com/adminportal/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372658253&Signature=%2FmI0m0PTlHJpJ%2FP5d%2FX3OApqzcI%3D
The signature is generated by class provided by Amazon, I guess it must work well all of the times.
Can someone elaborate why would S3 give this error only sometimes?
Sample URL for a file on Amazon S3 is-
http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
The Signature is formed by classes rendered by Amazon.
For untold reasons, 'Force.com for Amazon Web Services' app might be generating signature which basically contains SPACES.
Example: In the given URL, space is substituted by '+'.
You just need to URL encode the signature in order to get rid of this problem. Encoding will substitute spaces with special characters and problems will be resolved.
Learn about Salesforce by signing up for this professional Salesforce course online!
31k questions
32.8k answers
501 comments
693 users