Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

421
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda