0

我在 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);
            }
        });
4

1 回答 1

1

您首先需要将其上传到您的存储桶。您可以使用excel4node 文档中的 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);
   });
});

于 2018-11-17T18:42:50.433 回答