Я пытаюсь получить подписанный URL-адрес файлов, которые я загрузил в корзину S3.Я успешно получаю подписанные URL-адреса, но всякий раз, когда я посещаю их, я получаю сообщение об ошибке Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи.Проверьте свой ключ и метод подписи.
Несмотря на то, что предоставленные мной accessKey и secretAccessKey вполне подходят, потому что я использую те же ключи при помещении объектав контейнере s3.
импорт и конфигурация AWS
const AWS = require('aws-sdk');
const region = 'us-west-1';
AWS.config.update({
region: region,
});
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY,
});
const mainBucketName = 'test-bucket';
метод putObject для загрузки, который получает корзину, ключ и файл в виде параметров
module.exports.putObject = (bucketName, key, file)=>{
return new Promise((resolve, reject)=>{
const fileName = `${key}-${file.originalname}`;
s3.putObject({
Bucket: `${mainBucketName}/${bucketName}`,
Key: fileName,
Body: file.buffer,
ContentType: file.mimetype,
}, function(err, data){
if(err)
reject(err)
resolve(fileName);
});
})
}
метод подписания URl
module.exports.getSignedUrls = (bucketName, key)=>{
return s3.getSignedUrl('getObject',{
Bucket: `${mainBucketName}/${bucketName}`,
Key: key,
Expires:3600,
});
}
Это ответ, который я получаю при вызове
getSignedurls('5c63340d8bdeb62f843d8df0','9cf2adefb8061edacfdc71b044e54b17ec6cc887-qqqq.png')
method.
'https://test-bucket.s3.us-west-1.amazonaws.com/5c63340d8bdeb62f843d8df0/9cf2adefb8061edacfdc71b044e54b17ec6cc887-qqqq.png?AWSAccessKeyId=AKIAIFKF7Z2V6SHUBMFA&Expires=1550168664&Signature=33mtb6zMunXNi8W5D95BRfE%2FNqg%3D'
и это ответ, который я получаю, когда посещаю 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>
<AWSAccessKeyId>AKIAIFKF7Z2V6SHUBMFA</AWSAccessKeyId>
<StringToSign>
GET 1550168664 /test-bucket/5c63340d8bdeb62f843d8df0/9cf2adefb8061edacfdc71b044e54b17ec6cc887-qqqq.png
</StringToSign>
<SignatureProvided>33mtb6zMunXNi8W5D95BRfE/Nqg='</SignatureProvided>
<StringToSignBytes>
47 45 54 0a 0a 0a 31 35 35 30 31 36 38 36 36 34 0a 2f 61 73 73 65 74 74 72 61 63 6b 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2d 73 74 61 67 69 6e 67 2f 35 63 36 33 33 34 30 64 38 62 64 65 62 36 32 66 38 34 33 64 38 64 66 30 2f 39 63 66 32 61 64 65 66 62 38 30 36 31 65 64 61 63 66 64 63 37 31 62 30 34 34 65 35 34 62 31 37 65 63 36 63 63 38 38 37 2d 71 71 71 71 2e 70 6e 67
</StringToSignBytes>
<RequestId>AC2452AF7131E916</RequestId>
<HostId>
cGcMHQacSYJ3C7e7viZ+CsnfQ0jkxs+uaBCtzmIe3f740euA0uOW5hQcEiTrr5zWXQeCGXZggiw=
</HostId>
</Error>