La secuencia de comandos utilizada al intentar obtener contenido del csv almacenado en el depósito s3
const mysql = require("mysql"); const fs = require("fs"); const { google } = require("googleapis"); const AWS = require("aws-sdk"); const client = new AWS.SecretsManager({ region: "eu-west-1" }); const analyticsreporting = google.analyticsreporting("v4"); const csv = require('ya-csv') const fastCsv = require('fast-csv') const s3 = new AWS.S3(); const getParams = { Bucket: 'data', Key: 'athena_test/nameplate.csv' }; exports.handler = async (context, event) => { const data = await s3.getObject(getParams, function (err, data){ if(err){console.log("ERROR: ",err)} else {return data} }) console.log(data.Body) }el registro de la consola devuelve undefined en lugar del contenido del csv
Oye, puedes probar este: -
const csv = require('@fast-csv/parse'); const s3Stream = await s3.getObject(params).createReadStream(); const data = await returnDataFromCSV(); console.log(data.Body); const returnDataFromCSV =()=> { let promiseData = new Promise((resolve, reject) => { const parser = csv .parseStream(csvFile, { headers: true }) .on("data", (data) => { console.log('Parsed Data:-', data); }) .on("end", ()=> { resolve("CSV finished here"); }) .on("error",()=> { reject("if failed"); }); }); try { return await promiseData; } catch (error) { console.log("Get Error: ", error); return error; } }CreateStream: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html#createReadStream-property