Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

418
Views
Cómo detectar un error al usar S3.getsignedurlpromise() en node.js

Tengo un servidor node.js que descarga imágenes de mi depósito s3 y entrega las imágenes a mi cliente React. Quiero administrar el caso cuando se envía la clave de archivo incorrecta al cliente S3. Para hacerlo, estoy enviando intencionalmente una clave incorrecta desde React. Espero recibir un error que pueda detectar y representar mi vista en consecuencia. Desafortunadamente, la API s3 no devuelve un error, por lo que todos los puntos de mi código en los que tengo la intención de detectar el error se están pasando y no puedo mostrar una vista cuando obtengo la imagen y otra vista cuando recibo un error.

Mi código se ve así:

 //s3Connect.js download: async (fileKey)=>{ const downloadParams={ Key:fileKey, //this is a wrong key like 123 or anything Bucket:bucketName } const data = s3.getSignedUrlPromise('getObject', downloadParams); return data }
 //adminPanel.js //I call the above function below getBackgroundCheck:async (req,res)=>{ const readStream = await s3.download(req.params.key).then(url=> { console.log(url) res.send({url}) }) .catch(error=>{ console.log(error) res.send('the error is',error) //since I sent a wrong key I expect to catch an error here } ) }

Ahora en el lado del cliente. Uso React y el método fetch para recuperar la imagen.

 const getBackgroundFile = async (e) => { try { e.preventDefault() const response = await fetch(`http://localhost:3003/adminPanel/getbackgroundcheck/${id}`) console.log('this is the response ',response) const parseResponse = await response.json() console.log('this is the parseResponse', parseResponse) setImage(parseResponse) setShowBackImage(true) } catch (error) { console.log('this is the error',error) //again I expect to see this in console } }

Finalmente: ¿Qué obtengo con console.logs de la función anterior?

 this is the response Response {type: 'cors', url: 'http://localhost:3003/adminPanel/getbackgroundcheck/nll%C3%B1', redirected: false, status: 200, ok: true, …}

Entonces, como puede ver, tengo un estado de 200. Entonces, ¿cómo puedo manejar un error si obtengo un estado 200 ok cuando sé que la respuesta falló porque mi servidor no pudo encontrar la imagen en el depósito s3 y entregársela a mi cliente?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La creación de una URL prefirmada es una operación que no puede fallar en el funcionamiento normal. No hay una llamada de API real detrás de la creación de una URL prefirmada: es un simple ejercicio de firma local en el SDK. Felizmente generará URL prefirmadas para objetos que no existen, por ejemplo.

Si no desea detectar URL de venta para objetos S3 inexistentes, tendrá que hacerlo de otra manera. Por ejemplo, enviando las descargas por proxy o empujando la responsabilidad al cliente.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!