59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
|
|
const { Upload } = require("@aws-sdk/lib-storage");
|
|
const axios = require("axios");
|
|
const fs = require("fs");
|
|
|
|
// AWS S3 configuration
|
|
const REGION = process.env["aws-region"];
|
|
const BUCKET_NAME = process.env["aws-s3-bucket-name"];
|
|
const ACCESS_KEY = process.env["s3-access-key"];
|
|
const SECRET_KEY = process.env["s3-secret-key"];
|
|
|
|
// Create an S3 client
|
|
const s3Client = new S3Client({
|
|
region: REGION,
|
|
credentials: {
|
|
accessKeyId: ACCESS_KEY,
|
|
secretAccessKey: SECRET_KEY,
|
|
},
|
|
});
|
|
|
|
// Function to upload a file stream to S3
|
|
const saveToS3 = async (fileStream, key) => {
|
|
try {
|
|
const uploadParams = {
|
|
Bucket: BUCKET_NAME,
|
|
Key: key,
|
|
Body: fileStream,
|
|
ContentType: "application/pdf",
|
|
};
|
|
|
|
const upload = new Upload({
|
|
client: s3Client,
|
|
params: uploadParams,
|
|
});
|
|
|
|
const result = await upload.done();
|
|
return result;
|
|
} catch (error) {
|
|
console.error("Error uploading to S3:", error.message);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
/*
|
|
* download and save to s3
|
|
*/
|
|
const downloadAndUploadToS3 = async (filePath, s3Key) => {
|
|
try {
|
|
const fileContent = fs.readFileSync(filePath);
|
|
const result = await saveToS3(fileContent, s3Key);
|
|
console.log(`${s3Key} File successfully uploaded to S3`);
|
|
return result;
|
|
} catch (error) {
|
|
console.error("Error in download and upload process:", error.message);
|
|
}
|
|
};
|
|
|
|
exports.downloadAndUploadToS3 = downloadAndUploadToS3;
|