我想为用户提供一个临时URL来下载AWS S3服务中的文件。为此,用户要求我的服务器验证用户身份,检查权限,并最终要求S3提供临时(预签名)URL以发送给客户端用户。
但即使是官方documentation, 我收到此错误
TypeError: s3.getSignedURL is not a function
这是我的代码
var AWS_S3_BUCKETNAME = process.env.AWS_S3_BUCKETNAME;
var AWS_S3_REGION = process.env.AWS_S3_REGION;
var AWS_S3_SECRET = process.env.AWS_S3_SECRET;
var AWS_S3_KEY = process.env.AWS_S3_KEY;
const AWS = require('aws-sdk');
AWS.config.update({accessKeyId : AWS_S3_KEY,
secretAccessKey : AWS_S3_SECRET,
region : AWS_S3_REGION
});
const s3 = new AWS.S3();
var params = {
Bucket : AWS_S3_BUCKETNAME,
Key : file_name,
Expires: 60*5 //5 minutes
};
s3.getSignedURL('getObject', params, function(err, url)
{
if (err) { throw {msg:err, code:"AWS_ERROR"}; }
else { return url; }
});
这是我的package.json
"dependencies": {
"aws-sdk": "^2.208.0"
}
答案 0 :(得分:1)
您的s3通话中签名错误,
getSignedUrl(operation, params, callback)
这是网址而不是网址。
希望它有所帮助。