var aws = require("aws-sdk"); require("dotenv").config(); // Configure aws with your accessKeyId and your secretAccessKey aws.config.update({ region: "ca-central-1", // Put your aws region here accessKeyId: process.env.AWSAccessKeyId, secretAccessKey: process.env.AWSSecretKey }); const S3_BUCKET = process.env.Bucket; // Now lets export this function so we can call it from somewhere else exports.sign_s3 = (req, res) => { console.log("Get S3 Signed Put for bucket: " + S3_BUCKET); const s3 = new aws.S3(); // Create a new instance of S3 const fileName = req.body.fileName; const fileType = req.body.fileType; // Set up the payload of what we are sending to the S3 api const s3Params = { Bucket: S3_BUCKET, Key: fileName, Expires: 500, ContentType: fileType, ACL: "public-read" }; // Make a request to the S3 API to get a signed URL which we can use to upload our file s3.getSignedUrl("putObject", s3Params, (err, data) => { if (err) { console.log(err); res.json({ success: false, error: err }); } // Data payload of what we are sending back, the url of the signedRequest and a URL where we can access the content after its saved. const returnData = { signedRequest: data, url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}` }; // Send it all back res.json({ success: true, data: { returnData } }); }); }; exports.get_s3 = (req, res) => { const s3 = new aws.S3(); // Create a new instance of S3 const fileName = req.body.fileName; //const fileType = req.body.fileType; // Set up the payload of what we are sending to the S3 api const s3Params = { Bucket: S3_BUCKET, Key: fileName, Expires: 500 }; // Make a request to the S3 API to get a signed URL which we can use to upload our file s3.getSignedUrl("getObject", s3Params, (err, data) => { if (err) { console.log(err); res.json({ success: false, error: err }); } // Data payload of what we are sending back, the url of the signedRequest and a URL where we can access the content after its saved. const returnData = { signedRequest: data, url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}` }; // Send it all back res.json({ success: true, data: { returnData } }); }); }; exports.delete_s3 = (req, res) => { const s3 = new aws.S3(); // Create a new instance of S3 const fileName = req.body.fileName; //const fileType = req.body.fileType; // Set up the payload of what we are sending to the S3 api console.log("fileName", req.body); const s3Params = { Bucket: S3_BUCKET, Key: fileName }; s3.deleteObject(s3Params, function(err, data) { if (err) { res.json({ success: false, message: err.message }); } // error else { res.json({ success: true, data }); } // deleted }); };