[英]AWS S3 getSignedUrl constructs wrong URL
我想為我的S3存儲桶獲取一個預先簽名的URL,用於這樣的PUT請求(在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]
這個URL是根據亞馬遜的錯誤。 URL必須采用http://*.s3.amazonaws.com/*格式。 我也從飛行前得到了誤差網:: ERR_INSECURE_RESPONSE。 該函數構造正確的URL我該怎么辦? 從URL中刪除區域會導致400 Bad Request。 然后,飛行前OPTIONS工作。
我相信PUT請求需要轉到特定的桶區域。
如果由於某種原因,您獲取的URL具有錯誤的存儲區域(例如,您的EC2實例位於不同的區域),則可以在S3 init中設置存儲區域。
return new aws.S3({region:"s3-eu-west-1"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.