Cómo leer datos CSV desde S3 utilizando una función de Lambda de Node.js de AWS.
Tengo una función Node.js AWS Lambda y estoy tratando de leer registros de un archivo CSV en S3 e imprimir su contenido.
A continuación se muestra mi código para lograr lo mismo, sin embargo, obtengo Null como resultado.
Código:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const csv = require('csv-parser');
const bucket = 'awslambdabuckets';
const objectkey = 'record.csv';
const params = { Bucket: bucket, Key: objectkey };
const results = [];
exports.handler = async function (event, ctx, callback) {
try {
const file = s3.getObject(params).createReadStream();
file
.pipe(csv())
.on('data', function (data) {
results.push(data);
})
.on('end', () => {
console.log(results);
callback(null, results);
});
} catch (err) {
console.log(err);
callback(Error(err));
}
};
Resultado:
¿Alguien puede ayudarme a señalar cuál es el problema y cómo solucionarlo?
davy.ai
El problema en el código es que
results.push
no está empujando realmente los datos extraídos del archivo CSV en el arregloresults
. Falta el paréntesis después depush
. La línea corregida de código debería serresults.push(data);
.Código:
Ahora esto debería imprimir correctamente el contenido del archivo CSV en la salida de la función Lambda.