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

600
Vistas
¿Cómo usar la URL de la imagen aws s3 en el nodo js lambda?

Estoy tratando de usar la imagen aws s3 en el nodo lambda js pero arroja un error "no existe tal archivo o directorio". Pero he puesto esa imagen como pública y todos los permisos están concedidos.

 fs = require('fs'); exports.handler = function( event, context ) { var img = fs.readFileSync('https://s3-us-west-2.amazonaws.com/php-7/pic_6.png'); res.writeHead(200, {'Content-Type': 'image/png' }); res.end(img, 'binary'); };
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

fs es el módulo central del sistema de archivos del nodo js. Es para escribir y leer archivos en la máquina local. Por eso te da ese error.

over 4 years ago · Santiago Trujillo Denunciar

0

Hay varias cosas mal con su código.

fs es un módulo central que se usa para operaciones con archivos y no se puede usar para acceder a S3.

Parece que está usando el código express.js en su ejemplo. En lambda, no hay una res integrada definida (a menos que la defina usted mismo) que pueda usar para enviar una respuesta.

Debe usar los métodos en context o el nuevo mecanismo de callback de llamada. Los métodos de contexto se utilizan en la versión anterior del nodo lambda (0.10.42). Debería usar la versión de nodo más nueva (4.3.2 o 6.10) que devuelve la respuesta usando el parámetro de devolución de llamada.

Parece que también está utilizando la puerta de enlace API, por lo que, suponiendo eso, le daré algunas sugerencias. Si el cliente necesita acceso al objeto S3, estas son algunas de sus opciones:

  • Lea la imagen de S3 con el SDK de AWS y devuelva la imagen con el tipo de medio binario adecuado. AWS agregó soporte para datos binarios para API Gateway recientemente. Ver este enlace O
  • Envíe la URL pública de S3 al cliente en su respuesta json. Considere si los objetos de S3 deben ser públicos. O
  • Utilice el SDK de S3 para generar direcciones URL prefirmadas que sean válidas durante un tiempo configurado para volver al cliente.

Me gusta el enfoque de URL prefirmada. Creo que deberías revisar eso. También puede consultar la documentación de AWS lambda

over 4 years ago · Santiago Trujillo Denunciar

0

Para obtener un archivo de S3, debe usar la ruta que le proporciona S3. La ruta base es https://s3.amazonaws.com/ {your-bucket-name}/{your-file-name} .

En su código, debe reemplazar la siguiente línea:

var img = fs.readFileSync(' https://s3.amazonaws.com/ {nombre-de-su-depósito}/pic_6.png');

Si no tiene un depósito, debe crear uno para otorgar permisos.

over 4 years ago · Santiago Trujillo 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