Estoy tratando de hacer un POST multipart/form-data que contiene un archivo pdf a una función AWS lambda, hacer algunas comprobaciones en el archivo y luego POST el archivo a una API externa.
Estoy usando el marco sin servidor con node.js y el complemento aws-lambda-multipart-parser para recibir el archivo.
La carga del archivo del cliente a lambda funciona y puedo imprimir el contenido del búfer en la consola. La parte que no funciona es el reenvío del archivo a una API externa.
Esta es mi configuración actual de axios para realizar una solicitud POST a la API externa:
const formData = new FormData(); formData.append("file", file.content, file.filename); const res = await axios.post(`https://external-api.com`, formData, { headers: { ...formData.getHeaders(), "Access-Control-Allow-Origin": "*" }, params: { someParams: foo } }); file.content en realidad contiene un búfer con el contenido del archivo, pero cuando realizo la solicitud, la API externa devuelve un error y la solicitud falla...
Curiosamente, toda la configuración funciona cuando ejecuto la función sin servidor localmente con sls offline . Eso puede sugerir que hay un problema con la configuración de API Gateway.
Alguna información adicional:
Según las instrucciones del complemento multiparte, agregué el tipo de datos binarios en la configuración de API Gateway:
Esta es la configuración del punto de enlace en AWS Gateway:
También probé esta pregunta SO y la documentación de AWS , pero solo cubren cómo recibir un archivo binario, no cómo enviar uno.
¿Es posible recibir y luego enviar un archivo en lambda, o debería resolverse de otra manera?
Tuve el mismo problema con esa biblioteca. Así que probé con - https://www.npmjs.com/package/aws-multipart-parser - también hay una descripción de qué escribir en el archivo serverless.yml . ¡Está funcionando como un encanto ahora!