У меня есть лямбда-функция, которая берет кучу информации и делает кое-что для отправки электронной почты, используя SES. В настоящее время у меня есть код, который отправляет электронную почту, работающую в контейнере, но я решил, что хочу использовать пошаговые функции AWS, поэтому конвертирую ее в функции Lambda. Теоретически не должно быть существенных различий, но я не могу получать электронные письма для отправки.
Требуется функция отправки электронного письма:
const sendEmail = require('./utils/sendEmail');
Первая строка лямбда-функции / объявление функции:
module.exports.sendFirstAlert = async (event, context, callback) => {
Вызов функции sendEmail
:
await sendEmail(""Josh's Email" ${fromEmail}", toEmail, 'Alert!', message);
Обратите внимание на то, что `был заменен на" только для форматирования SO, но он отлично работает в коде
utils/sendEmail
:
const nodemailer = require('nodemailer');
const ses = require('nodemailer-ses-transport');
const aws = require('aws-sdk');
const accessKeyId = process.env.accessKeyId;
const secretAccessKey = process.env.secretAccessKey;
const transport = nodemailer.createTransport(
ses({
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
})
);
module.exports = function sendEmail(from, to, subject, message) {
const mailOptions = {
from,
to,
subject,
html: message
};
transport.sendMail(mailOptions, (error, info) => {
console.log('1');
if (error) {
console.log(error);
}
if (info) {
console.log(info);
}
console.log('2');
});
console.log('3');
};
Итак, внутри функции отправки электронной почты у меня есть эти 3 оператора console.log. Только третий получает вызов. Первый / второй не вызывается. Этот точный код (за исключением console.log) отлично работает в контейнере.
Я использую безсерверный фреймворк для создания моих шагов / лямбда-функций. Я установил для этого права доступа AWS SES (для тестирования / решения этой проблемы, а не для продукта).
Переменные ENV, которые я пытаюсь вызвать, работают отлично. Функция получает все необходимые части (от темы, сообщения) правильно и в правильных форматах.
Я также использую те же ключи API, что и в контейнере, поэтому можно отправлять электронные письма, учитывая, что электронная почта, на которую я отправляю, такая же в лямбда-функции, как и в контейнере.
Есть идеи, что может быть не так?