Справочная информация: Я использую функции Lambda для отправки транзакционных электронных писем с использованием службы Mailgun. Я решил реализовать сервер с помощью node.js, потому что раньше использовал этот язык, но у меня нет большого опыта работы на стороне сервера, поэтому я немного пытался понять, что происходит.
Задача: Идея состоит в том, чтобы отправить персонализированное электронное письмо нескольким получателям, зарегистрированным для этого конкретного сообщения, выполнив всего один запрос к функции Lambda.
Проблема: Чтобы выполнить задачу, описанную выше, я разработал эту базовую реализацию, следуя документам Mailgun и справочнику по API. Я использовал forEach
, чтобы можно было отправлять индивидуальное электронное письмо каждому получателю, чего я и ожидал достичь.
![Node implementation](https://i.stack.imgur.com/IrjkD.png)
При локальном тестировании, все работает просто отлично. Запрос выполнен, и электронные письма отправлены как ожидалось.
Однако после развертывания кода в AWS начинает происходить странное поведение. Когда запрос выполняется, кажется, что выполнение кода останавливается до его завершения, что приводит к доставке всего лишь нескольких писем. Другая вещь, которая всегда происходит, состоит в том, что 1-й вызов лямбда-функции не вызывает sendBulkTemplatedEmail
, но после первой попытки все начинает действовать.
Вот так выглядят журналы в CloudWatch:
![enter image description here](https://i.stack.imgur.com/Dwy9s.png)
Каждая синяя строка - это запрос, который я выполнил с помощью почтальона. В целях тестирования я всегда использую 3 получателя для электронных писем. Красные линии обозначают console.log(body)
, который я добавил в свой код. Когда в журнале появляется сообщение типа {id: '<201910100230 .. </strong>, это означает, что электронное письмо было успешно отправлено.
1-й запрос: электронное письмо не отправлено.
2-й запрос: отправлено два письма.
3-езапрос: отправлено три письма + одно, которое должно было быть отправлено во втором запросе.
4-й запрос: отправлено три письма (ожидаемое поведение)
5-й запрос: было отправлено три электронных письма (ожидаемое поведение)
6-й запрос: было отправлено три электронных письма (ожидаемое поведение)
Не знаюЯ не понимаю, почему это происходит при удаленном запуске моего кода, а не при локальном. Я предполагаю, что эти проблемы каким-то образом связаны с тайм-аутом лямбда-функций, но я не смог это исправить.
Есть какие-нибудь мысли по этому поводу?