AWS S3 getSignedUrl构造错误的URL

时间:2016-10-14 09:11:45

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

我想为我的S3存储桶获取这样的PUT请求的预签名URL(在node.js中)

   AWS.config.update({
      accessKeyId: s3Config.accessKeyId,
      secretAccessKey: s3Config.secretAccessKey,
      region: s3Config.region,
      signatureVersion: 'v4'
   });
   var s3bucket = new AWS.S3({params: {Bucket: s3Config.bucket,Key:'/content'}});
   s3Config.preSignedURL = s3bucket.getSignedUrl('putObject',{ACL:s3Config.acl})

因此我得到了

https://[BUCKET].s3.[REGION].amazonaws.com/[KEY]?[presignedURLStuff]

这个网址是根据亚马逊的错误。网址必须采用http://*.s3.amazonaws.com/*格式。我也从飞行前得到了误差网:: ERR_INSECURE_RESPONSE。该函数构造正确的URL我该怎么办?从URL中删除区域会导致400 Bad Request。然后,飞行前选项有效。

1 个答案:

答案 0 :(得分:0)

我认为PUT请求需要转到特定的存储区域。

如果由于某种原因,您获取的URL具有错误的存储区域(例如您的EC2实例位于不同的区域),则可以在S3 init中设置存储区域。

return new aws.S3({region:"s3-eu-west-1"})