Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing multiple objects to s3 with one call [duplicate]

Currently, my APP writes one object to s3 at a time via PutObjectCommand.

like so:

const params = {
        Bucket: process.env.AWS_S3_PHOTO_BUCKET,
        Key: photo_name.toString(),
        Body: resized_img,
        ContentType: req.file.mimetype,
      };
      const command = new PutObjectCommand(params);

Now, what if I have an array of objects that I want to write to s3. How can I do this in one command?

like image 334
Big Cat Public Safety Act Avatar asked Oct 25 '25 16:10

Big Cat Public Safety Act


1 Answers

so S3 doesn't let you put many objects in one go. You have do them one by one.

async function upload(photo) {
    const params = {
        Bucket: process.env.AWS_S3_PHOTO_BUCKET,
        Key: photo.photo_name.toString(),
        Body: photo.resized_img,
        ContentType: photo.mimetype,
    };
    await s3Client.send(new PutObjectCommand(params));
};

function uploadAll(photos) {
    Promise.all(photos.map(p => upload(p)))
    .then(() => console.log("Uploaded!"))
    .catch(err => console.log("Error:", err));
};

let photosArray = [];
uploadAll(photosArray);
like image 87
KayD Avatar answered Oct 27 '25 05:10

KayD