javascript - 使用 Node.js 读取上传到亚马逊 s3 存储桶的文件内容

标签 javascript node.js amazon-web-services amazon-s3 aws-lambda

我正在尝试编写一个程序,当将 .csv 或 .txt 文件上传到 s3 存储桶时,该程序将读取该文件的内容,并将输出存储为变量,以便代码根据内容进行交互。文件包含。我尝试过使用 fs,但找不到任何其他可以完成该任务的东西。请让我知道该怎么做或者在哪里可以找到答案或者我的代码有什么问题。谢谢!

var sdk = require('aws-sdk');
var nodemailer = require('nodemailer');
var async = require('async');
var fs = require('fs');

exports.handler = function(event, context) {

    var transport = nodemailer.createTransport({
        service: 'Yahoo',
        auth: {
            user: 'pni.robot@yahoo.com',
            pass: 'automatic545Emails'
        }
    });

        var srcKey    =
    decodeURIComponent(event.Records[0].s3.object.key.replace(/\*/g, " "));
    var arr = srcKey.split('.');
    var obj = decodeURIComponent(event.Records[0].s3.object);

    console.log(arr);
    //console.log(event.Records[0]);

    var fileType = arr.pop();
    var fileName = arr.join('.');

    console.log("File detected with name: " + fileName);
    console.log("File detected with extension: " + fileType);

    //The following code does not work
    //It cannot read srcKey because srcKey is just a text value
    //I am just keeping it here until I find a better alternative
    if (fileType === 'csv') {
        console.log('.csv file detected.');
        fs.readFile(srcKey, function(err, data) {
            if (err) {
                return console.error(err);
            }
            var contents = data.toString;
            console.log("Email Robot read: " + data.tostring());
            console.log(contents);
        });
    }; 

    var mailOptions = {
        from: 'pni.robot@yahoo.com',
        to: 'teranai@reed.edu',
        subject: 'Email Program',
        text: 'A .' + fileType + ' file titled "' + fileName + '.' + fileType + '" has been uploaded to the S3 bucket "pnilambdabucket".'
    }

    transport.sendMail(mailOptions, function(error, info){
        if(error){
            return console.log(error);
        }
        console.log('Message Sent: ' + info.response);
        context.done();
    });


};

最佳答案

如果我有足够的代表,这只是一个“评论”......

您是否将这些 NPM 软件包视为 fs 的替代品?

https://www.npmjs.com/package/awssum-amazon-s3

https://www.npmjs.com/package/s3

关于javascript - 使用 Node.js 读取上传到亚马逊 s3 存储桶的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929392/

相关文章:

Javascript RegExp 生成包含 4 个小写字母、4 个大写字母和 4 个数字的字符串

javascript - Coderbyte 上的数组加法 I JavaScript 函数

javascript - NodeJS Express 中每个请求的全局范围

node.js - 使用 RxJS5 设置速率

linux - 将 amazon-linux 实例从 PV 转换为 HVM 的最简单方法

javascript - 如何使 html <p> 标签不添加换行符而是在 css 中添加尾随空格?

javascript - 页面加载时滑动 slider slickGoTo

node.js - 将Node App分成不同的文件

amazon-web-services - 如何使用 Eclipse JEE 从我的 Web 应用程序登录 AWS?

amazon-web-services - 如何使用CloudFormation将RDS错误日志发布到CloudWatch?