繁体   English   中英

Nodejs AWS Lambda s3 getObject 方法不返回任何内容

[英]Nodejs AWS Lambda s3 getObject method returns nothing

尝试从存储在 s3 存储桶中的 csv 中获取内容时使用的脚本

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)  
}

控制台日志返回 undefined 而不是 csv 的内容

嘿,你可以试试这个:-

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;
  }
}

创建流: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html#createReadStream-property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM