Я генерирую presignedurl из размещенной лямбды. Я получаю предварительно назначенный URL, но когда я делаю пут, используя следующее:
axios.put(response.data, acceptedFiles[0], { headers: {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json', 'X-Amz-ACL': 'public-read'}} ).then((response) => {
console.log('put', response);
});
, я получаю проблему, которая является SignatureDoesNotMatch
Лямбда, которая генерирует предварительно назначенный URL,
var AWS = require('aws-sdk');
var s3 = new AWS.S3({
signatureVersion: 'v4',
});
exports.handler = (event, context, callback) => {
const url = s3.getSignedUrl('putObject', {
Bucket: 'bucketname',
Key: 'test.json',
Expires: 600,
ACL: 'public-read',
ContentType: 'application/json'
});
const res ={
"statusCode": 200,
"headers": {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"ACL": 'public-read',
}
};
res.body = url;
callback(null, res);
Я немного застрял в этом сейчас, так как пытался работать над этим в течение последних нескольких дней.