Cannot Get Error from getObject API to download/get an object(audio file) from S3

0

My call recordings of amazon connect are being stored on S3 in .wav file, i am looking to get and play those recordings in a third party application. For this i am using getObject API & trying to get/download the .wav files by name but i am getting the Cannot Get Error. At the same time i do want to provide the path in key e.g. Connect/Lab/2022/04/08/abc.wav, is it possible? How to resolve it? here is my code:

require("dotenv").config();
const expres = require("express");
const app = expres();
app.listen(3001);

const aws = require("aws-sdk");

aws.config.update({
    secretAccessKey: process.env.ACCESS_SECRET,
    accessKeyId: process.env.ACCESS_KEY,
    region: process.env.REGION
})

const BUCKET = process.env.BUCKET
const Key = '/connect/oblab2/CallRecordings/2022/04/08/'
const s3 = new aws.S3(secretAccessKey = process.env.ACCESS_SECRET, accessKeyId = process.env.ACCESS_KEY);

 app.get("/download/filename", async(req, res)=>{
    const filename = req.params.filename
    let x = await s3.getObject({Bucket:BUCKET, Key:Key + filename}).promise();
    res.send(x.Body);
})
1 Antwort
1
Akzeptierte Antwort

Achieved it through:

require("dotenv").config();
const aws = require('aws-sdk');

const expres = require("express");
const app = expres();

app.listen(3001);

app.get('/getfilefromS3', async (req, res, next) => {

  aws.config.update({
    secretAccessKey: process.env.ACCESS_SECRET,
    accessKeyId: process.env.ACCESS_KEY,
    region: process.env.REGION
  })

  const s3 = new aws.S3(secretAccessKey = process.env.ACCESS_SECRET, accessKeyId = process.env.ACCESS_KEY);

  var params = { Bucket: process.env.BUCKET, Key: "connect/oblab2/CallRecordings/2022/04/08/" + req.query.filename };

  s3.getObject(params, function (err, data) {
    if (err) {
      res.status(200);
      res.end('Error Fetching File');
    }
    else {
      res.attachment(params.Key); // Set Filename
      res.type(data.ContentType); // Set FileType
      res.send(data.Body);        // Send File Buffer
    }
  });
})```

And than hitting endpoint:
http://localhost:3001/getfilefromS3?filename=filename.wav
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen