I want to upload an image to my S3 Bucket. I create s3.js to handle it.
const S3 = require('aws-sdk/clients/s3')
const fs = require('fs')
const bucketName = process.env.AWS_S3_BUCKET_NAME
const region = process.env.AWS_REGION
const accessKeyId = process.env.AWS_ACCESS_KEY_ID
const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY
const s3 = new S3({
region,
accessKeyId,
secretAccessKey,
})
// Uplaods a file to s3
function uploadFile(file) {
const fileStream = fs.createReadStream(file.path)
const uploadParams = {
Bucket: bucketName,
Body: fileStream,
Key: file.filename,
}
return s3.upload(uploadParams).promise()
}
exports.uploadFile = uploadFile
after that i import s3.js in to my Controller
const catchAsyncErrors = require('../middlewares/catchAsyncErrors')
const { uploadFile } = new require('../utils/s3') // AWS S3
// Upload Image to AWS S3 => /api/v1/upload/image
exports.uploadImage = catchAsyncErrors(async (req, res, next) => {
const file = req.file
console.log(file)
const result = await uploadFile(file)
console.log(result)
res.status(200).json({
success: true,
imgPath: `/images/${result.key}`,
message: 'Upload image Success Url',
})
})
but when i called it via postman i got an error like this
"error": {
"message": "Missing required key 'Bucket' in params",
"code": "MissingRequiredParameter",
"time": "2021-08-19T01:40:20.683Z",
"statusCode": 500
}
is there any missing parameters ? or