Im撕裂我的头发,试图让S3 Direct客户端端PUT操作正常工作。无法让node.js返回一个有效的带符号PUT URL
我们有一个工作在Python上的后端代码版本,没有任何问题(所以我们知道前端工作正常),我们试图将后端移植到Node.JS.
我有一个返回签署PUT URL端点设置,这里是代码:
var objectKey = req.query.s3_object_name;
var objectType = req.query.s3_object_type;
var params = {
Bucket: s3Bucket,
Key: objectKey,
// ContentType: objectType, //(I have tried with and without this)
Expires: 60
};
s3.getSignedUrl('putObject', params, function(err, signedUrl){
if(err){
res.send(400);
}else{
res.end(JSON.stringify({
signed_request: signedUrl,
url: "http://"+s3Bucket+".s3.amazonaws.com/"+objectKey
}));
}
});
不幸的是亚马逊始终返回以下错误:
SignatureDoesNotMatch - 我们出的要求签名与您提供的签名不符。检查你的密钥和签名方法。
有没有人成功获得JavaScript aws-sdk来成功执行此任务?任何指针?我有两次和三次检查我的AWS密钥和秘密。
问候:
约翰Chipps - 哈丁
您是否在此代码中遇到错误,或者您尝试将PUT转换为由此代码生成的signedURL? –
@TheReddest代码没有错误,它确实返回了一个有效的URL。就在我尝试使用它的时候。附:我们有它的Python工作,所以我们知道前端是好的。另外...这是我们用来使用Python的指南... https://devcenter.heroku.com/articles/s3-upload-python – DigitalJohn
@TheReddest这里有一些更多的信息...显示排序的数据正在发送和收到的政策请求和亚马逊请求... http://pastebin.com/w3Psrep0 – DigitalJohn