我在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);
}
});发布于 2018-11-17 18:42:50
你首先需要把它上传到你的桶里。您可以使用wb.writeToBuffer()方法从excel4node文档生成一个缓冲区,以发送到s3.upad()方法,因为s3.upad()方法接受来自aws博士的“任意大小的缓冲区、blob或流,如果有效负载足够大,则使用智能并发处理”。
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);
});
});
https://stackoverflow.com/questions/52143969
复制相似问题