在Node.js中对来自AWS S3 getSignedUrl的URL执行get请求时出现SignatureDoesNotMatch错误

时间:2016-07-06 19:28:57

标签: javascript node.js amazon-web-services amazon-s3 aws-sdk

我尝试使用AWS.S3 API http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property中的Person方法访问我放置的数据。当我使用方法返回的url时,我收到错误。

将数据放入S3存储桶的代码

getSignedUrl

当从POSTMAN对返回的URL执行GET请求时,我收到以下页面,其中删除了一些安全信息

    var params = {
      Bucket: BUCKET_NAME,
      Key: 'testing132',
      Body: 'tasdfasfasdfs',
      Expires: EXPIRATION_TIME,
      ACL: 'public-read'
    };

    $log.info('test s3 dep', this);

    s3.getSignedUrl('putObject', params, function (err, url) {
      if (err) return cb(err);
      return cb(null, url);
    });

1 个答案:

答案 0 :(得分:0)

所以有些混乱,我没有仔细阅读文档。我假设getSignedUrl方法中的'putObject'参数意味着我将一个对象上传到指定的键,然后检索该对象的url。这个假设是错误的,基本上putObject参数意味着您指定用户正在对生成的URL进行PUTTING的对象的特征。使用getObject解决了问题。来自文档You can use this functionality [putObject] to generate pre-signed PUT operations that require a specific payload to be uploaded by the consumer of the URL.