У меня возникают проблемы при создании подписанного URL-адреса для public S3 bucket. Я получаю этот вопрос при выполнении запроса PUT:Проблемы с подписями при создании подписанного URL-адреса для S3
<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.8aws-sdk
версия 2.7.10
I используйте aws-sdk
следующим образом:
AWS.config.update({
accessKeyId: ACCESS_KEY,
secretAccessKey: SECRET_ACCESS_KEY,
region: 'eu-west-1'
})
const s3 = new AWS.S3()
Я сформировать корректную ссылку таким образом:
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