AWS Lambda - отправить объект Worbook 'excel4node' с помощью AWS SES. - PullRequest
0 голосов
/ 03 сентября 2018

Я разработал функцию в Lambda, которая приводит к списку объектов json, то есть массиву JSON. Также массив JSON просматривается и преобразуется в лист Excel с использованием библиотеки Node.JS 'excel4node'

Я также настроил 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 голосов
/ 17 ноября 2018

Сначала нужно загрузить его в корзину. Вы можете использовать метод wb.writeToBuffer () из excel4node docs , чтобы сгенерировать буфер для отправки методу s3.upload (), так как метод s3.upload () принимает «буфер произвольного размера , blob или stream, используя интеллектуальную параллельную обработку деталей, если полезная нагрузка достаточно велика ", из 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);
   });
});
...