AWS S3-MissingRequiredParameter : Missing required key 'Bucket' in params

Viewed 595

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

0 Answers
Related