亚马逊S3:奇怪的错误 - '有时'SignatureDoesNotMatch,有时它会

时间:2013-07-01 05:28:10

标签: authentication amazon-web-services amazon-s3 salesforce force.com

我正在为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有时会出现此错误吗?

2 个答案:

答案 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并且错误消失了。

也许你看到了同样的错误!