我正在为salesforce开发代码。我们正在使用Appexchange的“Force.com for Amazon Web Services”应用程序。该应用程序由亚马逊提供。
我正在计算机上从Amazon S3下载文件。
有时我会收到下面提到的错误。有趣的是,有时候我会得到这个错误,其余时间都有效,即使对于同一个文件也是如此。
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
我尝试使用亚马逊提供的两种网址格式。链接生成后的过期时间设置为1小时,因此可能不是问题。
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
签名是由亚马逊提供的课程生成的,我想它一直都能很好地运作。
有人可以详细说明为什么S3有时会出现此错误吗?
答案 0 :(得分:10)
最后我能够解决这个问题,这是怎么回事?
Amazon S3上的文件示例网址为 -
http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
此处签名由亚马逊提供的类生成。
由于未知原因,'Force.com for Amazon Web Services'应用程序正在生成包含SPACES的签名。
E.g。在给定的URL中,空格被替换为“+”。
要解决问题,只需对签名进行URL编码即可。编码将替换具有特殊字符的空格,问题将得到解决。
答案 1 :(得分:0)
您使用的是Java SDK吗?哪个版本?
我认为1.4.4版本中引入了一个错误,并且已在最新版本中修复。一旦我升级到有缺陷的版本,我在使用SQS时会出现间歇性的签名问题,而且我在AWS论坛上看到一些帖子报告了与DynamoDB完全相同的问题。现在我升级到版本1.4.7并且错误消失了。
也许你看到了同样的错误!