Amazon web services 使用putObject、Meteor和aws sdk时出现SignatureDesNotMatch错误
我不太清楚这里发生了什么。使用完全相同的凭证和允许任何操作的策略,我可以有效地获得我想要的任何对象。创建用于上载文件的签名url,但是,我遇到以下错误。我尝试过创建一组新的凭据,更改帐户的权限,使用POST而不是PUT,现在我很困惑为什么我得到了错误的签名Amazon web services 使用putObject、Meteor和aws sdk时出现SignatureDesNotMatch错误,amazon-web-services,meteor,Amazon Web Services,Meteor,我不太清楚这里发生了什么。使用完全相同的凭证和允许任何操作的策略,我可以有效地获得我想要的任何对象。创建用于上载文件的签名url,但是,我遇到以下错误。我尝试过创建一组新的凭据,更改帐户的权限,使用POST而不是PUT,现在我很困惑为什么我得到了错误的签名 <Error> <Code>SignatureDoesNotMatch</Code> <Message> The request signature we calculated does not
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<StringToSignBytes>
47 45 54 0a 0a 0a 31 34 30 35 30 34 37 35 30 36 0a 2f 64 6f 63 73 65 72 76 2f 74 65 73 74 2e 6a 70 67
</StringToSignBytes>
<RequestId>B0D5564858E39BC8</RequestId>
<HostId>
a7pcxkko4MFGbWD6WbE/pxymtOXm9UjMvYeuY0HKhMUCRkyx2H+XFH673OAsnu7RNjkzbQ/n01o=
</HostId>
<SignatureProvided>GdXhr+Md2bEyWCZIxdHRjyKbznY=</SignatureProvided>
<StringToSign>GET 1405047506 /docserv/test.jpg</StringToSign>
<AWSAccessKeyId>AKIAJTXUFSQQNFSKB4NQ</AWSAccessKeyId>
</Error>
下面是我调用的服务器端函数,用于生成已签名的URL。同样,我已经测试过,并且知道凭据允许我正确地获取和执行其他操作
function insertDocS3(fileName){
if(Meteor.settings.AWS){
AWS.config.update({'accessKeyId': Meteor.settings.AWS.accessKeyId,
'secretAccessKey': Meteor.settings.AWS.secretAccessKey});
} else{
console.log("AWS Settings Missing");
}
s3 = new AWS.S3();
var key = fileName;
var params = {Bucket: "docserv", Key: key};
var url = s3. getSignedUrl('putObject', params);
console.log("The URL is: ", url);
return url;
}
以下是调用服务器函数并使用AJAX放置文件的客户端代码:
uploadToS3 = function(){
var allFiles = $('input[type=file]').get(0).files;
for(var i = 0; i< allFiles.length; i++){
fd = new FormData();
fd.append(allFiles.item(i).name, "string");
var filename = allFiles.item(i).name.split('\\').pop();
Meteor.call('insertDocS3', filename, function(error, result){
$.ajax({
type:"POST",
url: result,
data: fd,
processData: false,
success:function(response){
alert("succeeded");
}
});
});
}
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}