AWS s3 V3 Javascript SDK stream file from bucket (GetObjectCommand)

Viewed 4552

Iv looked all over AWS docks and stack overflow (even went to page 4 of google!!!) but i cannot for the life of me work out how to stream a file from S3. The docs for V3 are pretty useless and all the examples i find are from V2.

The send commond that V3 uses only returns a promise so how do i get a stream and pipe it instead of waiting for the whole file (it needs to be piped into encryption algo then to a response stream)

this.s3.send(
  new GetObjectCommand({
    Bucket: '...',
    Key: key,
  }),
);

I was able to upload fine by passing the stream as the body, is there something i have to do similar here?

  uploadToAws(key) {
    const pass = new PassThrough();

    return {
      writeStream: pass,
      promise: this.s3.send(
        new PutObjectCommand({
          Bucket: '...',
          Key: key,
          Body: pass,
          ServerSideEncryption: '...',
          ContentLength: 37,
        }),
      ),
    };
  }
1 Answers
Related