I am trying to generate presigned url for my s3 bucket. After that when i copy paste the generated url in browser i get this error
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>xx</Key>
<RequestId>xx</RequestId>
<HostId>xx</HostId>
</Error>
My code:
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
const dotenv = require('dotenv');
dotenv.config();
let region = 'us-east-1';
aws.config.update({
secretAccessKey: process.env.SECRET_ACCESS_KEY,
accessKeyId: process.env.ACCESS_KEY_ID,
region: region,
signatureVersion: 'v4'
});
var s3 = new aws.S3({
region:region
});
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, true);
} else {
cb(new Error('Invalid file type, only JPEG and PNG is allowed!'), false);
}
};
let bucketName = 'somebucketname123';
const signedUrlExpireSeconds = 60 * 5;
const url = s3.getSignedUrl('getObject', {
Bucket: bucketName,
Key: process.env.SECRET_ACCESS_KEY,
Expires: signedUrlExpireSeconds
})
console.log('url', url);
const upload = multer({
fileFilter: fileFilter,
storage: multerS3({
acl: 'public-read',
s3,
bucket: bucketName,
key: function(req, file, cb) {
req.file = file.originalname;
cb(null, file.originalname);
}
})
});
module.exports = upload;
i am new to aws and i don't know what i am making wrong here...
What should happen when i paste the new generated presigned url in the browser ? Is this preigned url generated for some specific file ? If it is where in my code should i tell, for which file name in my s3 bucket