签署S3网址失败(我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法)

时间:2015-10-03 08:51:51

标签: amazon-web-services amazon-s3

我正在尝试生成已签名的网址,以便在我的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();

而且,是的,我的存在桶存在。我怎么能用这个来深究呢?

1 个答案:

答案 0 :(得分:0)

我发现了问题,我使用的是Chrome插件&#34;高级REST客户端&#34;发送请求,我想一些CORS规则将使请求失败,从那些应用程序&#39; JavaScript的。从浏览器的地址字段中执行请求。