我想为我的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。然后,飞行前选项有效。
答案 0 :(得分:0)
我认为PUT请求需要转到特定的存储区域。
如果由于某种原因,您获取的URL具有错误的存储区域(例如您的EC2实例位于不同的区域),则可以在S3 init中设置存储区域。
return new aws.S3({region:"s3-eu-west-1"})