Мой транспортер настроен так:
const ses = new aws.SES();
var transporter = mailer.createTransport({
SES: ses,
sendingRate: 25
});
У меня есть функция sendEmail, которая настраивает электронную почту для отправки вложения:
function sendEmail(body, filename, customer_name) {
var mailOptions = {
from: "test@test.com",
subject: "A test subject - " + customer_name,
html: '<p>' + customer_name + '</p><br />Please see attached file.',
to: "testing@testing.com",
attachments: [
{
filename: filename + ".txt",
content: body.toString()
}
]
};
return transporter.sendMail(mailOptions);
};
В Lambda я добавляю sendEmail к массиву обещаний и обрабатываю так:
module.exports.publish = async (event, context, callback) => {
...
var promises = data.map(async (i) => {
...
await sendEmail(data, file_prefix, customer_name);
};
await Promise.all(promises).then(() => {
addMessageToLog('Emails sent successfully');
});
await sendSNS(logger).then(() => {
if (isError) { callback(errorObj); }
callback(null, 'Emails successfully sent.');
});
Моя проблема заключается в том, что когда я вызываю это локально, используя Serverless Framework в VS Code, все мои электронные письма работают отлично, со скоростью, равной 25 в секунду, как указано. Когда я развертываюсь в AWS Lambda, он просто отправляет 25 электронных писем, после чего запрос заканчивается. Локально, он отправляет мою тему SNS мои сообщения журнала, но не на Lambda. Это резко заканчивается в 25 каждый раз.
Правильно ли я использую sendRate в этом случае? Почему AWS Lambda заканчивает запрос, а не мой тест локально?