【发布时间】:2017-02-23 15:48:24
【问题描述】:
我想为我的 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 必须采用http://*.s3.amazonaws.com/* 格式。我还从飞行前得到错误 net::ERR_INSECURE_RESPONSE。我该怎么做才能使函数构造正确的 URL。从 URL 中删除区域会导致 400 Bad Request。飞行前选项然后工作。
【问题讨论】:
-
存储桶位于哪个区域,您对正确 URL 的看法如何?对于某些地区,您显示的格式似乎是一个有效的替代方案。
-
返回的网址有效吗?
-
s3-eu-west-1 是我的地区。根据亚马逊,只有 http://*.s3.amazonaws.com/* 格式的 URL 是有效的,返回的 URL 给了我一个错误,甚至飞行前都不会回来
标签: node.js amazon-web-services amazon-s3