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;