我在为公共 S3存储桶生成签名URL时遇到问题。做PUT请求,当我得到这个问题:为S3创建签名URL时的签名问题
<Error><Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
的信息的比特 - 我使用:
node
5.8版aws-sdk
版本2.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
检查您的访问密钥,如下所示:http://stackoverflow.com/a/8002444/2383685。你的代码看起来很好。 – xShirase
谢谢你的建议!我仔细研究了它,但似乎并没有解决我的问题 – nodesto