S3置于签名URL 400错误

时间:2018-06-07 23:14:14

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

对节点服务器提供的已签名S3 URL的PUT请求返回400错误:"不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。"

我认为我的凭据正在正确发送,因为签名的URL正在返回给服务器。此外,存储桶的CORS策略配置为允许来自任何来源的请求。

服务器代码:

router.post('/avatar', (req, res) => {
  var s3 = new aws.S3();

  var params = {
    Bucket: 'knows',
    Key: req.body.fileName + '-' + Date.now(),
    Expires: 120,
    ContentType: req.body.fileType,
    ACL: 'public-read'
  };

  s3.getSignedUrl('putObject', params, function(err, data) {
    if (err) {
      res.json({err: err})
    } else {
      console.log(data)
      res.json({signedUrl: data})
    }
  })
})

客户代码(反应):

handleSubmit(event){
  event.preventDefault();
  var fileObject = {
    fileName: this.state.file.name,
    fileType: this.state.file.type
  }
  axios.post('/user/avatar', fileObject).then(response => {
    axios.put(response.data.signedUrl, this.state.file).then(result => {
      console.log(result)
    }).catch(err => {
      console.log(err)
      alert('Upload failed :(')
    })
  }).catch(err => {
    alert('Upload failed :(')
  })
}

是否与在服务器上设置自定义密钥有关?

0 个答案:

没有答案