AWS Lambda-使用AWS SES发送Worbook'excel4node'对象

时间:2018-09-03 06:06:39

标签: excel aws-lambda amazon-ses excel4node

我在Lambda上开发了一个函数,该函数可生成json对象的列表,即JSON数组。同样,使用Node.JS库'excel4node'

遍历JSON数组并将其转换为Excel工作表

我还为当前的Lambda函数配置了SES。 但是我面临的问题是将excel4node库生成的工作簿发送到SES的经过验证的电子邮件地址

我找不到获取工作簿保存路径并使用SES将对象作为附件发送的方法

代码:

var AWS = require('aws-sdk');
var ses = new AWS.SES({
    region: 'us-west-2'
});

var excel = require('excel4node');
var workbook = new excel.Workbook();

// Add Worksheets to the workbook
var worksheet = workbook.addWorksheet('Sheet 1');

  workbook.write('Excel.xlsx'); //How to send this workbook

var eParams = {
            Destination: {
                ToAddresses: ["dest@example.com"]
            },
            Message: {
                Body: {
                    Text: {
                        Data: JSON.stringify(res) // For now over here I'm sending just the JSON array response variable in the body
                    }
                },
                Subject: {
                    Data: "Email Notification"
                }
            },
            Source: "source@example.com"
        };
        console.log('===SENDING EMAIL===');
          var email = ses.sendEmail(eParams, function(err, data) {
            if (err) console.log(err);
            else {
                console.log("===EMAIL SENT===");
                // console.log(data);
                console.log("EMAIL CODE END");
                console.log('EMAIL: ', email);
            }
        });

1 个答案:

答案 0 :(得分:1)

您首先需要将其上传到存储桶。您可以使用excel4node docs中的wb.writeToBuffer()方法来生成要发送到s3.upload()方法的缓冲区,因为s3.upload()方法接受“任意大小的缓冲区blob,或流,如果有效载荷足够大,则使用智能并发处理零件”,来自aws docs

wb.writeToBuffer().then(function(buffer) {
   var params = {
      Bucket: 'your-bucket-path', 
      Key: 'your-file-name.ext', 
      Body: buffer
   };
   s3.upload(params, function(err, data) {
      console.log(err, data);
   });
});