【问题标题】:Signing S3 urls fails (The request signature we calculated does not match the signature you provided. Check your key and signing method)签名 S3 url 失败(我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法)
【发布时间】:2015-12-31 11:04:31
【问题描述】:

我正在尝试生成签名 URL 以在我的 S3 存储桶中上传和下载对象,但它失败并显示“SignatureDoesNotMatch”,如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAJ66RWEJPYWX6PL2A</AWSAccessKeyId><StringToSign>GET

我了解这是此处描述的问题的症状

Amazon MWS - request signature calculated does not match the signature provided

也就是说,我的凭据在某种程度上是错误的。我仔细检查了我的.aws/credentials 文件并生成了新文件。此外,我可以使用这些凭据执行其他 AWS 操作,例如查询 dynamoDb 或列出我的存储桶。

我用来生成 URL 的代码,我从这里复制过来的:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html

final ZonedDateTime expiration = ZonedDateTime.now().plusSeconds(expirationSeconds);

final GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(
    bucketName, objectId.toString());
generatePresignedUrlRequest.setMethod(isUpload ? HttpMethod.PUT : HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(Date.from(expiration.toInstant()));

return amazonS3Client.generatePresignedUrl(generatePresignedUrlRequest).toURI();

而且,是的,我的存储桶存在。我怎样才能做到这一点?

【问题讨论】:

  • 错误信息被剪到了中间。你能把整件事都贴出来吗?
  • 做一些更简单的测试来测试它是否真的是一个凭据错误,例如做一个简单的存储桶列表。

标签: amazon-web-services amazon-s3


【解决方案1】:

我发现了问题,我正在使用那个 chrome 插件“高级 REST 客户端”来发送请求,我猜一些 CORS 规则会使该应用程序的 JavaScript 请求失败。从浏览器的地址字段进行请求是有效的。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2019-12-01
    • 2021-04-11
    • 1970-01-01
    • 2022-01-05
    • 2015-06-01
    • 2015-05-18
    • 2017-07-23
    相关资源
    最近更新 更多