【发布时间】:2017-02-15 03:31:16
【问题描述】:
我在为 public S3 存储桶生成签名 URL 时遇到问题。我在执行 PUT 请求时遇到问题:
<Error><Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
一些信息 - 我正在使用:
-
node5.8版 -
aws-sdk2.7.10 版
我像这样使用aws-sdk:
AWS.config.update({
accessKeyId: ACCESS_KEY,
secretAccessKey: SECRET_ACCESS_KEY,
region: 'eu-west-1'
})
const s3 = new AWS.S3()
我以这种方式生成 URL:
const params = {
Key: FILE_KEY,
Bucket: BUCKET_NAME,
ContentType: image/jpeg,
Expires: 60,
ACL: 'public-read',
Metadata: {
'Cache-Control': 'max-age=31556926'
}
}
const signedUrl = s3.getSignedUrl('putObject', params)
生成的 URL 如下所示:
https://companyxyz.s3-eu-west-1.amazonaws.com/
image/5843df4a15c6fccf4501cab9.jpg?
AWSAccessKeyId=xxxxxxxxxx&
Content-Type=image%2Fjpeg&
Expires=1480843142&
Signature=YvUEGntDLVUUuyVuDMxF5yXXBnI%3D
&x-amz-acl=public-read&
x-amz-meta-cache-control=max-age%3D31556926
【问题讨论】:
-
检查您的访问密钥,如下所示:stackoverflow.com/a/8002444/2383685。您的代码看起来不错。
-
感谢您的建议!我已经非常详细地研究了它,但它似乎并没有解决我的问题
标签: node.js amazon-web-services amazon-s3