7

我正在为销售人员开发代码。我们正在使用 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>

我尝试使用亚马逊提供的两种 URL 模式。链接生成后过期设置为 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 有时只会给出这个错误吗?

4

2 回答 2

10

最后我能够解决这个问题,这是怎么回事?

Amazon S3 上文件的示例 URL 是 -

http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=

这里的签名是由亚马逊提供的类生成的。

由于未知原因,“Force.com for Amazon Web Services”应用程序正在生成包含空格的签名。

例如,在给定的 URL 中,空格被替换为“+”。

要解决这个问题,只需对签名进行 URL 编码。编码将用特殊字符替换空格,问题将得到解决。

于 2013-07-02T04:41:51.067 回答
0

您使用的是 Java SDK 吗?哪个版本?

我认为在 1.4.4 版本中引入了一个错误,并已在最新版本中修复。升级到有问题的版本后,我在使用 SQS 时遇到了间歇性签名问题,并且我在 AWS 论坛上看到了一篇帖子,其中有人报告了与 DynamoDB 完全相同的问题。现在我升级到 1.4.7 版本,bug 消失了。

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

于 2013-07-01T17:17:36.687 回答