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