Странное поведение при попытке отправить транзакционную электронную почту с помощью AWS Lambda и Mailgun - PullRequest
0 голосов
/ 10 октября 2019

Справочная информация: Я использую функции Lambda для отправки транзакционных электронных писем с использованием службы Mailgun. Я решил реализовать сервер с помощью node.js, потому что раньше использовал этот язык, но у меня нет большого опыта работы на стороне сервера, поэтому я немного пытался понять, что происходит.

Задача: Идея состоит в том, чтобы отправить персонализированное электронное письмо нескольким получателям, зарегистрированным для этого конкретного сообщения, выполнив всего один запрос к функции Lambda.

Проблема: Чтобы выполнить задачу, описанную выше, я разработал эту базовую реализацию, следуя документам Mailgun и справочнику по API. Я использовал forEach, чтобы можно было отправлять индивидуальное электронное письмо каждому получателю, чего я и ожидал достичь.

Node implementation

При локальном тестировании, все работает просто отлично. Запрос выполнен, и электронные письма отправлены как ожидалось.

Однако после развертывания кода в AWS начинает происходить странное поведение. Когда запрос выполняется, кажется, что выполнение кода останавливается до его завершения, что приводит к доставке всего лишь нескольких писем. Другая вещь, которая всегда происходит, состоит в том, что 1-й вызов лямбда-функции не вызывает sendBulkTemplatedEmail, но после первой попытки все начинает действовать.

Вот так выглядят журналы в CloudWatch:

enter image description here

Каждая синяя строка - это запрос, который я выполнил с помощью почтальона. В целях тестирования я всегда использую 3 получателя для электронных писем. Красные линии обозначают console.log(body), который я добавил в свой код. Когда в журнале появляется сообщение типа {id: '<201910100230 .. </strong>, это означает, что электронное письмо было успешно отправлено.

1-й запрос: электронное письмо не отправлено.

2-й запрос: отправлено два письма.

3-езапрос: отправлено три письма + одно, которое должно было быть отправлено во втором запросе.

4-й запрос: отправлено три письма (ожидаемое поведение)

5-й запрос: было отправлено три электронных письма (ожидаемое поведение)

6-й запрос: было отправлено три электронных письма (ожидаемое поведение)

Не знаюЯ не понимаю, почему это происходит при удаленном запуске моего кода, а не при локальном. Я предполагаю, что эти проблемы каким-то образом связаны с тайм-аутом лямбда-функций, но я не смог это исправить.

Есть какие-нибудь мысли по этому поводу?

...