无法在Node中使用AWS S3.getSignedURL

时间:2018-03-13 19:21:14

标签: node.js amazon-s3 aws-sdk

我想为用户提供一个临时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"
    }

1 个答案:

答案 0 :(得分:1)

您的s3通话中签名错误,

getSignedUrl(operation, params, callback)
  

这是网址而不是网址。

希望它有所帮助。