Я пытаюсь загрузить файл PDF в AWS S3 с использованием нескольких загрузок. Однако, когда я отправляю запрос PUT
для загрузки детали, я получаю ошибку SignatureDoesNotMatch.
SignatureDoesNotMatch
Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи.
Код моего сервера (узел) указан ниже:
CREATE MultiPart Upload
const AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
const s3 = new AWS.S3({ apiVersion: '2006-03-01' });
const s3Params = {
Bucket: 'bucket-name',
Key: 'upload-location/filename.pdf',
}
const createRequest = await s3.createMultipartUpload({
...s3Params
ContentType: 'application/pdf'
}).promise();
GET Signed URL
let getSignedUrlParams = {
Bucket: 'bucket-name',
Key: 'upload-location/filename.pdf',
PartNumber: 1,
UploadId: 'uploadId',
Expires: 10 * 60
}
const signedUrl = await s3.getSignedUrl('uploadPart',getSignedUrlParams);
А код клиента (в JS):
const response = await axios.put(signedUrl, chunkedFile, {headers: {'Content-Type':'application-pdf'}});
Несколько замечаний:
- Этот код работает, когда я разрешить всем publi c доступ к корзине. Однако, если все publi c доступ заблокирован, код не работает.
- Когда все publi c доступ заблокирован, я все еще могу загрузить в корзину с теми же учетными данными, используя aws cli.
- Я уже пытался сгенерировать AWS Идентификатор ключа доступа и Секретный ключ доступа, но это не помогло.
Не в состоянии понять, в чем проблема. Любая помощь будет оценена.
PS: Это первый вопрос, который я разместил здесь. Поэтому, пожалуйста, прости меня, если я не разместил это должным образом. Дайте мне знать, если потребуется более подробная информация.