Мой транспортер настроен так:
const ses = new aws.SES();
var transporter = mailer.createTransport({
SES: ses,
sendingRate: 25
});
У меня есть функция sendEmail, которая настраивает электронное письмо для отправки вложения:
function sendEmail(body, filename, customer_name) {
var mailOptions = {
from: "[email protected]",
subject: "A test subject - " + customer_name,
html: '<p>' + customer_name + '</p><br />Please see attached file.',
to: "[email protected]",
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.');
});
Моя проблема в том, что когда я вызываю это локально, используя бессерверную структуру в VS Code, все мои электронные письма отлично работают со скоростью 25/сек, как указано. Когда я развертываю AWS Lambda, он просто отправляет 25 электронных писем, после чего запрос завершается. Локально он отправляет сообщения моего журнала в мою тему SNS, но не на Lambda. Каждый раз он резко обрывается на 25.
Правильно ли я использую sendRate в этом случае? Почему AWS Lambda завершит запрос, но не мой тест локально?
Я положу это здесь для потомков, если кто-то еще столкнется с этим...
Я установил для maxConnections значение 1, и это решило мою проблему на AWS.