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

590
Views
¿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 answers
Answer question

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 Report

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 Report

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 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!